Two commits, each green on dev:
- **9909cd2, CI 7995: #4798 "The rules corpus's `surfaced_never_pulled` warning sends the reader to `menus_to_review`, which can only review `auto_inject`".**
- The warning's advice is now per corpus. Rules get their own reading and next step.
- The guard is tied to `retrieval_review.REVIEWABLE`.
- **d2ac7bf, CI 7996: #4797 "A lesson's `what` takes a whole narrative, and the narrative becomes its name".**
- `require_claim` refuses a `what` over 240 characters or with a line break, at the MCP and REST create/update doors.
- `claim_line` shows an over-long stored name in the menu as its first sentence.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
#4798 "The rules corpus's surfaced_never_pulled warning sends the reader to
menus_to_review, which can only review auto_inject". #4772 gave the warning
one remedy for both corpora: "judge a sample with menus_to_review". That is
right for notes, where a line carries its passage. For rules it is a dead
end: retrieval_review.REVIEWABLE holds only auto_inject, so the tool
refuses every rule arm.
- The reading is now per corpus (_NEVER_PULLED_READING). For rules, the
text says:
- the count includes rules that only arrived in a listing;
- a rule can rightly be set aside on its trigger alone;
- no judged sample exists for the rule arms;
- a rule set aside again and again is a trigger to fix (update_rule
when_to_apply, then what_might_apply), not a floor.
- The tool docstring says the same.
- The guard is tied to REVIEWABLE, so it can fail in both directions: if
the rules text names menus_to_review while no rule arm is reviewable, or
if a rule arm becomes reviewable and the text still says there is no
sample.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#4797 "A lesson's what takes a whole narrative, and the narrative becomes
its name". `what` is the title every listing and menu prints. Nothing
enforced its documented "one line", so lessons written with the incident
in `what` printed up to ~1,500 characters as a menu line, buried the
claim, and diluted the trigger in the embedded title. That was 14 of the
39 lessons on this install.
- lessons.require_claim refuses a `what` over WHAT_MAX_CHARS (240) or
running over several lines. The refusal says the story goes in
`insight`.
- Both doors call it before writing:
- MCP create_lesson / update_lesson;
- REST create / update.
An update checks only a NEW name, so a lesson stored with a long one can
still take the edit that repairs it.
- lessons.claim_line is the display half. _menu_name shows an over-long
stored name as its first sentence marked " …", because a door guard
does not undo rows already stored and an unrepaired install would keep
printing them.
- The tool docstrings state the bound.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Two commits, each green on dev:
9909cd2, CI 7995: #4798 "The rules corpus'ssurfaced_never_pulledwarning sends the reader tomenus_to_review, which can only reviewauto_inject".retrieval_review.REVIEWABLE.d2ac7bf, CI 7996: #4797 "A lesson'swhattakes a whole narrative, and the narrative becomes its name".require_claimrefuses awhatover 240 characters or with a line break, at the MCP and REST create/update doors.claim_lineshows an over-long stored name in the menu as its first sentence.🤖 Generated with Claude Code