## Class of failure

**F6:** Skills make output-form claims ("produces a table", "emits JSON") without citing a locking test. When the destination CLI verb changes rendering, the contract silently drifts — the GHI #141/#149/#150/#151 class. System Card §2.3 names this: *"speculative predictions stated with the same confidence as established protocol steps."*

**F8:** Binding tables and commands buried under rationale and narrative prose. System Card §2.3: *"response verbosity that buried actionable content within pages of text."* — exact phrase match. 4.7 weights early tokens more heavily and is more selective about which tokens drive behavior.

Scope: skills' Output Contract claims (F6) and within-rules monolith hoisting (F8). AGENTS.md pruning (also F8) is deferred to `ADR-pool.vendor-alignment-claude-code` tidy chore.

## Evidence

### F6 — unverifiable vibe claims in skills

| File | Observed claim | Has locking test? |
|---|---|---|
| `gz-adr-status/SKILL.md:25-27,63` | "consistent table format", "do not paraphrase" | No — should cite `tests/commands/test_status.py::TestLifecycleStatusSemantics::test_adr_status_renders_shared_table_via_deterministic_renderer` (locked under GHI #149/#150) |
| `gz-plan-audit/SKILL.md:200-235` | "Was plan mode entered before substantial reading?" (self-introspection) | No — self-reported check per Lindsey 2025 (cited in `attestation-enrichment.md`) is structurally unreliable |
| `gz-obpi-pipeline/SKILL.md:302-317` | "Scope discipline (GHI-incoming, 2026-04-17)" | Dangling GHI reference; unresolved |

### F8 — within-rules monolith burying

| File | Lines | Binding content buried at | Rationale/history burying it |
|---|---|---|---|
| `.gzkit/rules/tests.md` | 226 | Unit-tier contract L105-127, coverage floor L213-216 | L160-189 GHI #181/#182 canonical history |
| `.gzkit/rules/attestation-enrichment.md` | 120 | Canonical command table L54-60 | L37-88 Lindsey 2025 citation + rationale |
| `.gzkit/rules/skill-surface-sync.md` | 97 | Rules at L27-37 | L14-25 agent-psychology narrative ("Claude Code will instinctively edit…") |

## Fix plan

Two coordinated commits under this GHI:

1. `fix(skills): anchor output-form claims to locking tests (GHI #<N>)` — F6:
   - Every skill with an Output Contract adds an explicit test anchor. Template:
     ```
     ## Output Contract
     Declared form: <table / JSON / plain text>.
     Locked by: `tests/<path>::<test_name>`.
     ```
   - `gz-adr-status`: cite the `test_adr_status_renders_shared_table_via_deterministic_renderer` test.
   - `gz-plan-audit:200-235`: replace self-introspection with mechanical check (count tool calls before `ExitPlanMode` from session transcript if available; else fail open — don't pretend to verify).
   - `gz-obpi-pipeline:302-317`: resolve dangling "GHI-incoming, 2026-04-17" reference — grep the ledger for the scope-discipline event or file a fresh GHI and cite.

2. `refactor(rules): hoist binding content above rationale (GHI #<N>)` — F8:
   - `attestation-enrichment.md`: canonical command table to L1-20; Lindsey citation + GHI #199 story moved to bottom "Rationale" section.
   - `tests.md`: split into `tests.md` (≤100 lines, binding) + appendix for GHI #181/#182 history, OR move canonical history to `docs/governance/` and cite.
   - `skill-surface-sync.md`: rules to top; agent-psychology narrative to bottom or delete.

## Routing

Multi-file (6+ files); ~40-50 lines of movement. Two commits. Direct-fix per `defect-fix-routing.md` (hoisting is position-only; no semantic change).

## Tracked under

Umbrella GHI #224 (4.7 regression — governance surface hardening).
