Repo-rule reinforcement — k320..k331
META.RULE.canonical-source-precedence=CONTRIBUTING.md > docs/adr/* > CONTEXT.md > agent memoryMETA.RULE.read-contributing-first=read CONTRIBUTING.md sections "Pull Request Guidelines" + "CHANGELOG Entries" before EVERY agent dispatchMETA.RULE.brief-must-cite-doc=agent prompts MUST quote the canonical doc line being applied; paraphrasing from predicate memory drifts and produces violationsMETA.RULE.brief-no-paraphrase=writing "k040 — never leave changelog box unchecked" caused 5 of 8 agents to edit CHANGELOG.md in violation of CONTRIBUTING.md L110
PRED.k320.signal=changelog-direct-edit-forbiddenPRED.k320.canonical-source=CONTRIBUTING.md L110-123PRED.k320.rule=do not edit CHANGELOG.md in feature/fix/enhancement PRsPRED.k320.cure=drop .changeset/<adj>-<noun>-<noun>.md fragment ONLYPRED.k320.tool=npm run changeset -- --type <T> --pr <NNN> --body "..."PRED.k320.types=Added|Changed|Deprecated|Removed|Fixed|SecurityPRED.k320.opt-out-label=no-changelogPRED.k320.ci-enforcement=scripts/changeset/lint.cjsPRED.k320.ci-paths-monitored=bin/ get-shit-done/ agents/ commands/ hooks/ sdk/src/PRED.k320.recovery=open Removed-typed cleanup PR deleting only the redundant rowPRED.k320.evidence=PR #3302 merge-conflict against #3308 CHANGELOG.md row 2026-05-09
PRED.k321.signal=cr-outside-diff-range-findingPRED.k321.shape=CR posts "[!CAUTION] outside the diff" findings in review BODY, not in reviewThreadsPRED.k321.poll-shape=parse pulls/<n>/reviews body AND graphql reviewThreadsPRED.k321.resolution=address in code; no GraphQL resolveReviewThread needed for body-only findingsPRED.k321.evidence=PRs #3304/#3305 (2026-05-09): real Minor/Major findings in body, 0 threads
PRED.k322.signal=cr-sustained-throttlePRED.k322.distinct-from=k080PRED.k322.shape=ack posted, real review never lands within [5s, 410s] cooldown after burst of N PRs <15minPRED.k322.cure-1=2nd retrigger ~10min after first ackPRED.k322.cure-2=if silent at 50min, treat as silent-pass with maintainer flag in merge-commit bodyPRED.k322.merge-gate-impact=k070 real_coderabbit_review_present unsatisfied; requires maintainer judgmentPRED.k322.evidence=PR #3306 (2026-05-09): 0 reviews after 50min + 2 retriggers
PRED.k323.signal=sibling-audit-cross-pr-overlapPRED.k323.shape=2+ open issues touch same canonical bug site; each fix's sibling-audit produces overlapping diffPRED.k323.cure-pre-dispatch=brief one agent canonical-owner; brief others to EXCLUDE shared sitePRED.k323.cure-alt=consolidate into single PR when 2+ issues share root causePRED.k323.recovery=close smaller PR as "subsumed by #N" or rebase second to drop overlap hunkPRED.k323.evidence=#3300 (#3297) overlapped #3306 (#3298) on add-backlog.md hunks 2026-05-09
PRED.k324.signal=agent-terminates-mid-monitorPRED.k324.k095-restatement=k095 confirmed shape: agent reports "waiting for monitor" / "tests still running" then terminatesPRED.k324.cure=verify via gh api on every agent-completion notification; never trust narrativePRED.k324.poll-shape=gh pr view <n> --json mergeStateStatus,statusCheckRollup + pulls/<n>/reviews + graphql reviewThreads + issues/<n>/comments tailPRED.k324.evidence=2026-05-09 session: 5+ mid-monitor terminations across PRs #3232/#3271/#3251/#3255/#3262
PRED.k325.signal=worktree-branch-lock-on-force-push