docs: resolve §2/§1/§10 backlink contradictions flagged on #685#686
docs: resolve §2/§1/§10 backlink contradictions flagged on #685#6860xbulma wants to merge 1 commit into
Conversation
Follow-up to #685 (merged). Foulques posted four internal contradictions that survived the audit; this fixes all four. 1. §2 backlink no longer credits silent-failure-hunter for "2 — typed errors" (the persona body explicitly defers to code-quality). Adds the missing owners for the orphaned rules: module-api-architecture (#5 — deep cross-package imports) and test-coverage (#6 — mocked viem clients on RPC paths). silent-failure-hunter stays in the callout but reframed as the complement to rule 2 (handling discipline once the error is thrown), which is what the body actually says — and what keeps the documentation persona's bidirectional-consistency check (.agents/personas/documentation.md:71) from flagging a one-way pointer. 2. code-quality.md's "Code smells" section no longer claims early returns are "not codified in AGENTS.md" — that rule is in §1 ("Stateless, immutable, composable"). Header parenthetical tightened; the bullet now cites §1. 3. CI/release dedupe: - <HAS_CI_RELEASE> trigger path-list now lives in exactly one place (.agents/lib/pr-review-base.md Step 4). AGENTS.md §10 table cell and ci-release-security.md Trigger section are pointers, not copies. - The two persona-only rules that diverged from §10 are now promoted to §10: "unknown publishers" (appended to Action pinning) and "Workspace install behavior" (auto-install-peers / strict-peer-dependencies flips, medium severity). - `secrets: inherit` wording synced to §10 verbatim ("…is forbidden — list secrets explicitly"). - ci-release-security.md gains an intro line declaring §10 as source-of-truth, mirroring the pattern code-quality.md uses for §2/§3. 4. silent-failure-hunter.applies no longer cites §1 (testability) — that subsection is about DI / I/O at the boundary, which the persona doesn't enforce. The applies line is rewritten to describe what the persona actually does (the rule-2 complement). §1 backlink drops silent-failure-hunter to match. Bidirectional consistency walked end-to-end before commit; every persona named in an "Applied by personas:" callout has the matching § in its applies frontmatter, and vice versa, with the single pre-existing exception of §7 ↔ ci-release-security (outside Foulques's scope and untouched here). No code changes. No persona behavior changes. Docs only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| name: module-api-architecture | ||
| kind: baseline | ||
| applies: AGENTS.md §1 Architecture (layering, modularity), §3 Type discipline (at the boundary), §4 Public API & packaging | ||
| applies: AGENTS.md §1 Architecture (layering, modularity), §2 Forbidden patterns (rule 5 — deep cross-package imports), §3 Type discipline (at the boundary), §4 Public API & packaging |
There was a problem hiding this comment.
🟡 module-api-architecture body intro omits §2 after frontmatter was updated to include it
The PR updates applies: frontmatter to add §2 Forbidden patterns (rule 5 — deep cross-package imports), and AGENTS.md §2's backlink now lists module-api-architecture. However, the body intro on this same line was not updated — it still says "The authoritative rules live in §1 (Architecture), §3 (Type discipline), and §4 (Public API & packaging)" with no mention of §2. Per the documentation persona (.agents/personas/documentation.md:50), this is stale prose: a statement that no longer matches reality after the diff. An agent reading the body for context could miss that §2 rule 5 is now an authoritative anchor for this persona. The deep-import bullet at line 20 does enforce the rule, but the intro misleadingly omits §2 from the list of authoritative sources.
Prompt for agents
The applies: frontmatter on line 4 now includes §2 Forbidden patterns (rule 5), but the body intro on line 14 still says 'The authoritative rules live in AGENTS.md §1 (Architecture), §3 (Type discipline), and §4 (Public API & packaging)'. Update line 14 to also mention §2 (Forbidden patterns — rule 5), e.g.: 'The authoritative rules live in AGENTS.md §1 (Architecture), §2 (Forbidden patterns — rule 5: deep cross-package imports), §3 (Type discipline), and §4 (Public API & packaging)'. Similarly, line 18 groups the deep-import bullet under 'Per AGENTS.md §1 and §4' — consider splitting out a 'Per AGENTS.md §2 — forbidden pattern 5' sub-heading for the deep-import rule, or updating line 18 to say 'Per AGENTS.md §1, §2 (rule 5), and §4'.
Was this helpful? React with 👍 or 👎 to provide feedback.
Follow-up to #685 (merged). Foulques flagged four internal contradictions that survived the audit; this PR fixes all four. Doc-only — no code paths affected.
Summary
§2 backlink no longer credits
silent-failure-hunterfor "2 — typed errors". The persona's own body (.agents/personas/silent-failure-hunter.md:7) +.agents/personas/code-quality.md:24explicitly defer the typed-class-existence rule tocode-quality. The §2 backlink now lists the actual owners for the two orphaned rules:module-api-architecturefor build(deps-dev): bump eslint-plugin-prettier from 4.2.1 to 5.1.3 #5 (deep cross-package imports — its body atmodule-api-architecture.md:20enforces exactly this) andtest-coveragefor feat(viem): add viem support #6 (mocked viem clients on RPC paths —test-coverage.md:37).silent-failure-hunterstays in the callout but reframed as the complement to rule 2 (handling discipline once the error is thrown) — which is what the body actually says, and what keeps thedocumentationpersona's bidirectional-consistency check (.agents/personas/documentation.md:71) from flagging a one-way pointer.code-quality.md's "Code smells" section no longer claims early returns are "not codified in AGENTS.md". The rule is the last bullet of §1 "Stateless, immutable, composable" (AGENTS.md:52). Header parenthetical tightened; the bullet now cites §1 directly.CI/release dedupe (the two
<HAS_CI_RELEASE>andsecrets: inheritdrifts).<HAS_CI_RELEASE>trigger path-list now lives in exactly one place (.agents/lib/pr-review-base.md:85, Step 4). The §10 inventory table cell andci-release-security.md's Trigger section are thin pointers to it.Newly added actions from publishers the org has not used before(appended to "Action pinning") andWorkspace install behavior(auto-install-peers / strict-peer-dependencies flips, medium severity).secrets: inheritwording synced — bothAGENTS.md:233andci-release-security.md:42now read…is forbidden — list secrets explicitly.ci-release-security.mdgains an intro line declaring §10 as source-of-truth, mirroring the patterncode-quality.md:17uses for §2/§3.silent-failure-hunter.appliesno longer cites §1 (testability). §1 "Testability" (AGENTS.md:40-45) is about DI / I/O at the boundary, which the persona doesn't enforce. The applies line is rewritten to describe what the persona actually does (the rule-2 complement). §1 backlink dropssilent-failure-hunterto match.Files changed
AGENTS.md.agents/personas/silent-failure-hunter.mdapplies:reframed (drop §1, narrow §2 to rule-2 complement).agents/personas/ci-release-security.mdpr-review-base.mdStep 4; intro line referencing §10;secrets: inheritwording sync.agents/personas/code-quality.md.agents/personas/module-api-architecture.mdapplies:adds §2 rule 5.agents/personas/test-coverage.mdapplies:adds §2 rule 6Test plan
> Applied by personas:callout inAGENTS.mdvs every persona'sapplies:frontmatter). One pre-existing asymmetry remains at §7 ↔ ci-release-security (publish-flow); out of scope for this PR.<HAS_CI_RELEASE>path-list grep — exactly one full definition in the repo (.agents/lib/pr-review-base.md:85), two pointers (AGENTS.md§10 table cell,ci-release-security.mdTrigger section).secrets: inheritgrep — both occurrences match verbatim.documentationpersona's bidirectional-consistency check returns clean against this branch.🤖 Generated with Claude Code
View Slack thread