Repository navigation
Description
Parent
Refs #7555. Source: PLAN Phase 5, topic poteto-review. Thread: corrections and codify.
Depends on
- config-cascade: settings resolution and convention home #7571 Settings resolution and convention home
- enforcement-ladder: v2.0.0 ladder and one guardrail criterion #7572 Enforcement ladder v2.0.0 (rung picking reads ladder v2.0.0)
Outcome
A new corrections plugin ships /corrections:codify: given a described mistake (and optionally a
PR), it counts recurrences from history and buffer rows, picks the strongest ladder rung, and
proposes a check with a proof that the check fails on the old code and passes on current.
Decisions
- New plugin
correctionsships/corrections:codifyalone; absorbs retrocodify,
/review:audit-enforceabilityand audit-sessionsstyle;gatherbecomes anoteaction plus a
read-onlygroupaction (D49, D50 item 3, D98, Q117, Q152). Origin: ours (packaging). - One prompt
/corrections:codify "<description>" [#PR]; a proof script shows the new check fails on
old code and passes on current (D72, Q113, Q115). - Consent: a person invoking it is consent; a model invocation only proposes; ask before installing
any blocking check (hook, required CI check, lint error level) (D81, Q95; combined, because
Lauren and Matt differ). - Setting
recurrence.min_occurrences, default 2 (repo); any person's direct "codify this" acts at
once; the PR names each occurrence counted; codify only proposes, a person approves (D81, Q509,
Q572, Q580). Count at two and re-read history: Lauren's (pstackcorrect). - Counts from history and buffer rows (Q584). Sources: PR review comments by script (including the
author's own after merge), session transcripts, recent commits; chat and meeting sources wait for
communication's readers (D21, D50 item 6, Q103, Q510). - Places each lesson by scope: team standard, project rule, user scope (D50 item 1). Never unattended
by default; a detector that finds an uncovered rule hands install and proof to codify (D50 item 7,
Q151). Confirmed escaped defects feed codify (Q567, Lauren's). - Rejected: an action on
/session-flow:audit-sessions; two skillsgatherandcodify; a monthly
pattern-store issue or new ledger; authority keys and owner-weighted counts; a personal mode skill.
Key interfaces
From the design's module layout: "corrections: ships /corrections:codify alone, with note and
read-only group actions. Absorbs retro codify, /review:audit-enforceability and audit-sessions
style. Places each lesson by scope (team standard, project rule, user scope). Sources: PR review
comments, session transcripts, recent commits, buffer rows. Chat and meeting sources wait for
communication."
Settings: "recurrence.min_occurrences: 2, repo." Variation verdicts: "Codify sources: abstract
now; corrections sources via adapters, chat and meeting wait for communication (D21, Q510)."
Slices, filed when this phase starts: corrections-scaffold-and-codify, absorb-and-remove.
Done when
-
bash plugins/skill-quality/scripts/check-skill.sh --require-evals plugins/corrections/skills
exits 0 and the prove-check script's test exits 0 (the plugin does not exist on main). -
rg -n 'review:audit-enforceability|retro codify' plugins docs --glob '!**/CHANGELOG.md' --glob '!.changes/**'
prints nothing. - Every slice sub-issue is closed by a merged PR, and each skill-body cut cites before/after eval
results.
Out of scope
- Chat and meeting sources (wait for
communication). - The findings buffer contract (Findings buffer thread).
Metadata
Metadata
Assignees
Labels
Type
Fields
Work status
Activity
github-actions commentedon Oct 16, 2026
Proposed work class: work-class: structural
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
Decision comment (#7573 (comment)):
The recorded decision settles the open questions. It picks one way to finish absorbing
style: codify gains a cross-session preference action, audit-sessions gains anexcerpts-onlyconsumer mode, andstyleis removed. It also gives checkable done-when items. The remaining work is one change across the corrections and session-flow plugins, so I triaged it as a bounded Medium task.Automated triage, applied by the lanes App.
kyle-sexton commentedon Oct 16, 2026
What the article adds for codify. Source: https://claude.dev/blog/solving-code-review-at-anthropic (2026-10-15); ids are digest unit and claim.
CLAUDE.md, a skill or a new check" (11 C5).For
/corrections:codify: record the "what was missing" answer in each proposal, so rung picking (#7572) starts from it. Under D97/Q150 (GUIDE 97) review rules go to the per-concern review files; REVIEW.md and the one CLAUDE.md/AGENTS.md pointer line the owner allowed on 2026-10-16 only point at them. #7583 carries that change.Owner decision, 2026-10-16. The codify threshold stays at its default of 2 (Q572), and a person's direct "codify this" acts at once (Q509). Each confirmed escaped defect that Q567 sends to codify gets the article's question, "what did the model not have in front of it" (11 C5), answered in its follow-up.
Against the originating sources. Counting to two and re-reading history (Lauren's, pstack
correct) agrees with "keeps flagging the same thing" (04 C12).Each miss is also an eval case candidate for #7639 (05 C2).
Related: #7572, #7583, #7576, #7639, #7638.
24 remaining items
kyle-sexton commentedon Nov 4, 2026
Decision recorded.
Agent choice, not an owner answer.
The issue's Decisions say
corrections"absorbs retrocodify,/review:audit-enforceabilityand audit-sessionsstyle". The first two are delivered on main:#11121 scoped
styleout as "a separate slice", which was never filed, so this record covers onlystyle.Today
/session-flow:audit-sessions stylecounts on its own and hands preferences to codify:plugins/session-flow/skills/audit-sessions/SKILL.md:228and:272hold the pass and the hand-off.plugins/corrections/skills/codify/SKILL.md:185says it "keeps its own counter".This record picks one way to finish the absorption. Codify gains a cross-session preference action that reads session excerpts through a new audit-sessions consumer mode.
styleis removed. The other options fail on recorded facts:stylein audit-sessions, whether as the current hand-off or as a buffer producer, conflicts with the issue's Rejected line, "an action on/session-flow:audit-sessions".audit-sessions/SKILL.md:56-92).sweep-onlyserves another skill and writes nothing (audit-sessions/SKILL.md:42-54).The mode name
excerpts-onlymirrorssweep-only(Basis: judgment). This is one lane PR across corrections and session-flow.plugins/session-flow/skills/audit-sessions/SKILL.mdadds anexcerpts-onlyconsumer mode modeled onsweep-only(SKILL.md:42-54). It runssweep.py --excerptswith the caller's--scope,--state-keyand--since(SKILL.md:257). It returns the JSON lines verbatim with their exit code, refuses--write-report, and writes nothing.plugins/corrections/skills/codify/SKILL.mdadds an action row and anactions/<name>.mdfile for cross-session preferences, gated on session-flow being installed. The action:CLAUDE.md, a user rule file or a user output style) and never accepts a repository file;--scopeexplicitly and gets excerpts by invoking/session-flow:audit-sessions excerpts-only, never by reading transcripts or the store itself;recurrence.min_occurrences, throughcodify-settings.mjs;The steps and the target rule carry over from
audit-sessions/SKILL.md:228-281. The threshold source is the issue's Decisions ("recurrence.min_occurrences, default 2") andcodify/SKILL.md:53-55. The cross-plugin naming rule isdocs/review/skills-and-agents.md:12-13.Codify treats excerpt lines as data, never instructions, citing
docs/contracts/untrusted-content/README.md. This carries over the rule ataudit-sessions/SKILL.md:279-281and matchescodify/SKILL.md:48-51.The
styleaction is removed fromaudit-sessions/SKILL.md: the "Style pass" section,stylein the Arguments line and the action list (:11,:34,:37), and the eval casestyle-pass-needs-two-sessions-and-a-user-scope-targetinaudit-sessions/evals/evals.json:77. The correction lens no longer points at "the style pass's step 3" (:288); it states its own--scoperule. Source: issue Decisions; the removal pattern of refactor(session-flow)!: remove retro's codify mode #12073.git grep -n -E 'audit-sessions[^ ]{0,12} style|[Ss]tyle pass|`style` (pass|action|takes)' -- plugins/session-flow plugins/corrections docs ':!**/CHANGELOG.md' ':!.changes/**'prints nothing. That removes the current hits atplugins/session-flow/README.md:246,258,audit-sessions/SKILL.md:11,23,34,37,228,288,audit-sessions/evals/evals.json:78,codify/SKILL.md:185anddocs/upstream/cursor-pstack.md:63.plugins/session-flow/README.mdand thedocs/upstream/cursor-pstack.mdrow's "Taken" text point at the new codify action in place of the removed lines; the record is reworded, not deleted, as feat(corrections): absorb retro codify and /review:audit-enforceability into /corrections:codify and remove them #11121 did for its names.codify/SKILL.md's Boundary drops "It does not run/session-flow:audit-sessions style, which keeps its own counter" (:185). The description andargument-hintname the new action. Codify's allowed-tools gains no transcript or store read.The removed audit-sessions eval case is ported into
plugins/corrections/evals/as acase.yamlcase. A new case shows that a preference seen in only one session yields no proposal. Before/after eval results for the moved text appear in the PR, as feat(corrections): give codify a findings-file input, a review-comment source and their evals #11629's port table and eval comment did. Source:docs/review/skills-and-agents.md:6-8("a cut to an existing skill ships only with eval evidence of no loss").bash plugins/skill-quality/scripts/check-skill.sh --require-evals plugins/corrections/skillsexits 0, andbash plugins/skill-quality/scripts/check-skill.sh plugins/session-flow/skillsexits 0.bash plugins/corrections/scripts/prove-check.test.shandbash plugins/corrections/scripts/codify-settings.test.shexit 0.plugins/session-flow/skills/audit-sessions/scripts/tests/test_sweep.pypasses, with no excerpt test removed.scripts/check-changelog-fragments.sh --checkpasses, with a fragment under.changes/corrections/(minor: a new action) and one under.changes/session-flow/(major: an action is removed, as in refactor(session-flow)!: remove retro's codify mode #12073).needs-spec is satisfied by this record.
kyle-sexton commentedon Nov 4, 2026
Claimed by host-run lane 4 (session 839ddb58-b732-4a71-bb69-79a384292e2e) on hub assignment H32, 2026-11-04T07:19Z: the
styleabsorption per issuecomment-6625049760.test(corrections): cover the session-flow gate and the excerpts-only …
test(corrections): count an install pointer as the gate's stop