# 4.7 Governance Hardening — GHI Series Drafts (TIGHTENED SCOPE)

**Working artifact for GHI filing review.** Produced 2026-04-18 from three parallel audits (core contract / rules / skills), validated against Claude Opus 4.7 System Card §6.2.2.2, the AGENTS.md standard (24+ adopters), and the operator's control-surface parity doc at `docs/drafts/claude-code-vs-codex-control-surface-parity.md`.

## Scope discipline (read before any GHI walkthrough)

**In scope** — model-behavior hardening affecting the agents that read `.gzkit/rules/*` (Claude Code via `.claude/rules/` mirror, GitHub Copilot via `.github/instructions/` mirror) and `.gzkit/skills/*` (Claude Code primary). Fixes that ship behind standard `fix(...)` direct-fix commits per `defect-fix-routing.md`.

**OUT of scope — punted to existing pool ADRs:**

| Concern | Owning ADR | Status |
|---|---|---|
| Adopt `@AGENTS.md` handoff in CLAUDE.md | `ADR-pool.vendor-alignment-claude-code` | Pool; explicitly notes "Tidy items can proceed as chores without waiting for promotion" |
| Prune AGENTS.md ≤200 lines | `ADR-pool.vendor-alignment-claude-code` | Same |
| Add `disable-model-invocation: true` to ceremony skills | `ADR-pool.vendor-alignment-claude-code` | Same |
| Codex `.codex/config.toml` activation | `ADR-pool.vendor-alignment-codex` | Pool |
| Conditional/config-driven vendor enablement | `ADR-0.16.0-cms-architecture-formalization` | Pre-release, Proposed |
| Two-mode execution architecture (Universal + Full Enforcement) | `ADR-pool.harness-aware-execution-modes` | Pool |
| AGENTS.md body F1 vague-inference fixes | `ADR-pool.vendor-alignment-claude-code` tidy chore | — |

The 4.7 GHI series does NOT try to restructure `AGENTS.md` or `CLAUDE.md`. Those are architectural decisions with authored pool ADRs waiting for promotion or chore execution. This series sticks to model-behavior hygiene within `.gzkit/rules/*` and `.gzkit/skills/*`.

---

## GHI-MASTER (Umbrella)

**Title:** `4.7 regression — governance surface hardening (meta tracker)`

**Labels:** `defect`

**Body:**

```markdown
## Meta-tracker for the 4.7 governance-surface hardening series

Claude Opus 4.7 shipped 2026-04-16. In the 48 hours since, the repo filed GHIs #186 through #199 plus #217-#223 — a defect velocity ~5× baseline. The pattern is consistent: agents reading the governance surface under 4.7 commit to whatever literal path falls out, even when a 4.6-trained operator expected inference to bend the rule to the situation.

## Scope

This series addresses **model-behavior hygiene** in gzkit's rules and skills canon — the surfaces that sync to Claude Code (`.claude/rules/*`, `.claude/skills/*`) and GitHub Copilot (`.github/instructions/*`). Fixes ship as standard `fix(...)` commits per `.gzkit/rules/defect-fix-routing.md`.

**Explicitly out of scope** (deferred to existing pool ADRs):
- `CLAUDE.md` → `@AGENTS.md` handoff adoption → `ADR-pool.vendor-alignment-claude-code` (chore-promotable tidy item)
- `AGENTS.md` body hardening → same (AGENTS.md-body F1 findings await that chore)
- `.codex/config.toml` activation → `ADR-pool.vendor-alignment-codex`
- Conditional vendor-enablement architecture → `ADR-0.16.0-cms-architecture-formalization`
- Two-mode Universal/Full-Enforcement execution → `ADR-pool.harness-aware-execution-modes`

## Anthropic-published behavioral changes in 4.7

Grounded in the Claude Opus 4.7 System Card (April 2026) §6.2.2.2 and the "Working with Claude Opus 4.7" tutorial:

1. **Cautious system prompts degrade 4.7** — System Card §6.2.2.2: *"Notably, [Opus 4.7] is the first model in this series for which a cautious system prompt lowered instruction-following and adaptability scores — its baseline is already careful enough that added caution tips into over-asking."*
2. **Action-downgrade** — 4.7 "sometimes downgrades action requests into advice or questions — explaining how to squash commits rather than doing it"; cautious prompts amplify this.
3. **Declaring sufficiency without acting** — "I have enough context, let me write the code," then resuming exploration until tool-call cap with nothing written.
4. **Verbosity burying actionable content** — System Card §2.3: *"response verbosity that buried actionable content within pages of text."*
5. **Adaptability is a 4.7 strength** — "reliably diagnoses root causes rather than patching surface symptoms." This is NOT a regression; it is what we want. The failure shape is our text coupling root-cause thinking to OBPI ceremony-mandate.
6. **Tool use is more selective** — operations described in prose without named tool literals get skipped.
7. **Repetition for emphasis backfires** — tutorial guidance: *"write your directions once and clearly."*

## Failure-mode taxonomy — F1 through F10 (governance-surface hygiene, model-agnostic)

Full definitions, Anthropic citations, and fix shapes in `docs/governance/model-regression-taxonomy.md`. Inlined here for chain-completeness:

| Code | Short name | What it is | Strongest citation |
|---|---|---|---|
| **F1** | Vague-inference instructions | Rules phrased as soft inference ("use judgment", "when appropriate") without named observable triggers | T1 — System Card §6.2.2.2 (cautious prompt backfire) |
| **F2** | Cross-surface restatement | Same rule stated in 2+ files, often with drift | T2 — Tutorial ("write once and clearly") |
| **F3** | Tool-use literalism / hesitation | Operations described in prose without naming the tool (Read/Grep/Glob/Edit) | T1 — System Card §6.2.2.2 Efficiency |
| **F4** | Over-ceremony coupled to root-cause thinking | Ceremonies without scope-scaling; 4.7's Adaptability strength gets channeled into ceremony-mandate by our text | T1 (4.7 strength) + T3 (coupling is gzkit-specific) |
| **F5** | Cross-surface contradictions | Two surfaces state incompatible rules; 4.7 literal-reads one path and violates the other | T3 — observed |
| **F6** | Unverifiable vibe claims | Assertions ("table", "comprehensive", "thorough") without a named verification pathway | T1 — System Card §2.3 "confidence calibration" |
| **F7** | Missing negative constraints | Positive specs without a matching "do NOT" that closes the inferred gap | T3 — observed |
| **F8** | Monolithic burying of binding rules | Binding tables/thresholds buried under rationale and narrative prose | T1 — System Card §2.3 **exact phrase** "verbosity that buried actionable content" |
| **F9** | Repetition for emphasis | Same rule stated multiple times within one file for emphasis | T2 — Tutorial |
| **F10** | Implicit cross-file context dependencies | Rules that depend on another rule being loaded without naming specific section or command | T3 — observed |

Tier legend: **T1** = System Card directly names the failure mode; **T2** = Anthropic operator tutorial/news names it; **T3** = observed in gzkit GHI pattern without direct Anthropic citation.

## Limit of text-level remediation

System Card §2.3.6 examples (Mythos Preview): researcher updated CLAUDE.md mid-session to prevent a behavior; the pattern recurred anyway. *"I know the rule — I have six memory files about it — but knowing it doesn't stop me from generating the plausible-sounding version first."* F1-F10 fixes address the governance text surface; they reduce friction but do NOT close model-level tendencies (fabrication, skipped verification). Full mechanical closure requires hooks, `gz validate` checks, receipt-ID attestation, and test anchors — which is why F6's fix shape is "cite a locking test" rather than "rewrite the prose."

## Complement: mechanical enforcement layer (pool-ADR territory, not this series)

The F1-F10 text fixes in this series reduce friction and close contradictions. They do NOT replace mechanical enforcement — per the taxonomy doc, model-level tendencies require hooks, tests, and validators. The complementary mechanical layer is captured in existing pool and pre-release ADRs:

- `ADR-pool.harness-aware-execution-modes` — Mode 2 hook-based enforcement (Claude Code primary)
- `ADR-pool.vendor-alignment-claude-code` — Claude Code specific features (InstructionsLoaded hook, disable-model-invocation, PreToolUse gating, Notification hooks)
- `ADR-pool.prime-context-hooks` — context-management hook family
- `ADR-pool.skill-behavioral-hardening` — skill-level anti-drift
- `ADR-0.16.0-cms-architecture-formalization` (pre-release, Proposed) — vendor manifest schema with selective enablement

These ADRs are not blocked by this series; this series is not blocked by those ADRs. They compose: text layer + mechanical layer. Mechanical affordances reach Claude Code (full Mode 2) and partially Codex (sandbox + approval modes per `ADR-pool.vendor-alignment-codex`); text fixes reach the full AGENTS.md-ecosystem (24+ tools).

## Sub-GHIs

- GHI-00: `arb.md:62` demonstrates the GHI #199 anti-pattern — rule file reproduces the failure it exists to prevent (critical; direct-fix, 5 lines)
- GHI-01: F1 vague-inference in `.gzkit/rules/*` — three instances (`chores.md:19`, `defect-fix-routing.md:22`, `cli.md:20`); AGENTS.md-body F1 instances deferred to `vendor-alignment-claude-code` chore
- GHI-02: F2/F9 within-surface restatement — TDD rule 6f drift, Iron Law within-skill collapse, MUST/MUST NOT halving; triple-embed + `@AGENTS.md` adoption deferred to `vendor-alignment-claude-code` chore
- GHI-03: F3 tool-literal coverage in skills — 6 instances where prose describes operations without naming Read/Grep/Glob/Edit
- GHI-04: F4 over-ceremony decoupling + F5 cross-surface contradictions in rules — bundle 4 contradictions and the pipeline/router scope-gate addition
- GHI-05: F6 output-contract test anchors in skills + F8 within-rules monolith hoisting; AGENTS.md monolith pruning deferred to `vendor-alignment-claude-code` chore

## Evidence artifacts

- `docs/governance/model-regression-taxonomy.md` — full F1-F10 catalogue with Anthropic citations
- `docs/drafts/claude-code-vs-codex-control-surface-parity.md` — authoritative parity analysis (operator-authored)
- `artifacts/audits/agent-parity-table.md` — gzkit-specific operational mapping (supersedes mine to that doc)
- `artifacts/audits/4.7-governance-hardening-ghi-drafts.md` — this working drafts file
- `artifacts/audits/4.7-system-card/full.txt` — System Card text extract used for citations
```

---

## GHI-00 (Critical — active reproduction of a closed defect)

**Title:** `arb.md:62 demonstrates the gz arb ty check . anti-pattern that GHI #199 closed`

**Labels:** `defect`

**Body:**

```markdown
## Class of failure

`.gzkit/rules/arb.md:58-64` lists example ARB invocations. Line 62:
`uv run gz arb ty check . --exclude 'features/**'`

This is the exact command `.gzkit/rules/attestation-enrichment.md:67-72` forbids as the GHI #199 anti-pattern. The rule file meant to teach operators and agents how to use ARB actively recommends the broken command.

An agent reading `arb.md` and copying the example will produce a receipt whose `step.command` diverges from the canonical `gz typecheck` gate (`ty check src`) — exactly the failure #199 closed.

## Evidence

`.gzkit/rules/arb.md:58-64`:
```
uv run gz arb ruff
uv run gz arb ruff --fix
uv run gz arb step --name unittest -- uv run -m unittest -q
uv run gz arb ty check . --exclude 'features/**'
uv run gz arb coverage run -m unittest discover -s tests -t .
```

`.gzkit/rules/attestation-enrichment.md:67-72`:
> `gz arb typecheck` (added under GHI #199) wraps `uv run ty check src` — the same command `gz typecheck` and `gz closeout` invoke. Do not author heavy-lane type-check receipts via `gz arb ty check <custom-scope>`; the receipt will drift from the gate and the attestation claim will be post-hoc false.

## Fix plan

Replace `arb.md:62` with:
```
uv run gz arb typecheck    # wraps `ty check src` per attestation-enrichment.md
```

Also add a one-line cross-reference at the top of the `## Available Commands` section pointing at the canonical command table in `attestation-enrichment.md` so future drift between the two files is self-evident.

## Routing

Direct-fix per `.gzkit/rules/defect-fix-routing.md`. ≤5 lines, single file, in-flight defect, unit-testable. Commit: `fix(rules): align arb.md example with attestation-enrichment canon (GHI #N)`.

## Tracked under

GHI-MASTER
```

---

## GHI-01 (F1 vague-inference in rules only)

**Title:** `F1 vague-inference instructions in .gzkit/rules/* lack mechanical triggers`

**Labels:** `defect`

**Body:**

```markdown
## Class of failure

Under 4.7, vague-inference phrases ("use judgment", "similar-shape", "match existing flags", "≤60s") produce action-downgrade and over-asking per System Card §6.2.2.2 — *"the cautious system prompt amplified rather than corrected [the action-downgrade tendency]."* Fixing these with mechanical triggers reduces session friction.

Scope: three instances in `.gzkit/rules/*` that sync to Claude Code (`.claude/rules/`) and GitHub Copilot (`.github/instructions/`). AGENTS.md-body instances (5 others) are deferred to the `ADR-pool.vendor-alignment-claude-code` tidy chore.

## Evidence

| File:line | Observed text | Issue |
|---|---|---|
| `.gzkit/rules/chores.md:19` | "Lite by default \| Fast lane (<=60s)" | Agent has no clock; threshold is unmeasurable at the agent layer |
| `.gzkit/rules/defect-fix-routing.md:22` | "Precedent \| …shows ≥1 similar-shape direct-fix commit" | "Similar-shape" is subjective; over-match or under-match risk |
| `.gzkit/rules/cli.md:20` | "Consistency \| Follow UNIX/POSIX patterns; match existing flags" | No mechanical check against `config/cli_doctrine.json` |

## Fix plan

- `chores.md:19` → *"Lite lane: `uv run -m unittest -q`; wall-time budget ≤60s **enforced via `gz arb validate` against the receipt's `step.duration_seconds`**. Agent does NOT introspect time."* (Tool-enforceable threshold, not agent-introspected.)
- `defect-fix-routing.md:22` → *"Precedent \| `git log --since='60 days ago' --oneline --grep='^fix('` returns ≥3 commits."* (Mechanical check; no subjective shape-matching.)
- `cli.md:20` → *"Before adding a flag, run `uv run gz cli audit` and confirm the flag appears in `config/cli_doctrine.json` or add it in the same patch."* (Mechanical check.)

## Routing

Single coordinated commit under GHI-01: `fix(rules): replace F1 vague-inference phrases with mechanical triggers (GHI #N)`. ≤10 lines across 3 files. Direct-fix per `defect-fix-routing.md`.

## Tracked under

GHI-MASTER
```

---

## GHI-02 (F2/F9 within-surface restatement)

**Title:** `F2/F9 within-surface restatement degrades adherence under 4.7`

**Labels:** `defect`

**Body:**

```markdown
## Class of failure

Anthropic tutorial guidance: *"write your directions once and clearly."* 4.7 treats each occurrence of a rule as an independent constraint; within-surface restatement triggers rule-competition. Scope: within-surface (within-rule-file or within-skill) repetition; cross-surface restatement between rule files + architectural questions about `agents.local.md` embed are deferred to `ADR-pool.vendor-alignment-claude-code`.

## Evidence

| Surface | Pattern | Severity |
|---|---|---|
| `.gzkit/rules/tests.md` + `.gzkit/rules/behavioral-invariants.md:64` (rule 6f "Tests assert semantics, not strings") | **TDD drift** — rule 6f exists in behavioral-invariants only, missing from canonical tests.md | **P1** |
| `.gzkit/skills/gz-obpi-pipeline/SKILL.md:29-75` | **Iron Law restated 5× within one skill** (Iron Law L29-33 + Rationalization table L43-56 + Hard Boundaries L68-74) | **P0** on skill invocation |
| `.gzkit/skills/gz-adr-closeout-ceremony/SKILL.md:356-383` | **MUST/MUST NOT 20 rows** where 10 one-sided directives would do | **P1** on skill invocation |

## Fix plan

Three coordinated commits under GHI-02:

1. `fix(rules): add TDD rule 6f to tests.md as canonical home; drop from behavioral-invariants (GHI #N)` — pick canonical home; behavioral-invariants.md replaces its TDD block with a one-line pointer.
2. `refactor(skills): collapse Iron Law repetition in gz-obpi-pipeline to one statement + 3-row rationalization table (GHI #N)`.
3. `refactor(skills): halve MUST/MUST NOT table in gz-adr-closeout-ceremony to one-sided directives (GHI #N)`.

**Preserved intent** for the skill refactors: the thoroughness expectations of the Iron Law and MUST/MUST NOT stay. Only the 4-5× repetition is collapsed.

## Verification

Use Claude Code's **`InstructionsLoaded` hook** (Claude Code docs: memory#agents-md, claude-code-inventory row 69) to log which instruction files load in a post-fix session. The hook is the authoritative mechanism for verifying that rule 6f drift is actually closed (and for catching future sync regressions). Operator can enable via `.claude/settings.json` hooks section; log output shows the exact rules loaded per-session.

## Routing

Multi-file (3 files); ≤40 lines total. Direct-fix per `defect-fix-routing.md`. Three focused commits under one GHI.

## Tracked under

GHI-MASTER
```

---

## GHI-03 (F3 tool-literal in skills)

**Title:** `F3 prose-operation descriptions without tool literals cause 4.7 tool-use hesitation`

**Labels:** `defect`

**Body:**

```markdown
## Class of failure

System Card §6.2.2.2 Efficiency: 4.7 is *"prone to declaring sufficiency without acting — in the worst case stating 'I have enough context, let me write the code,' then resuming exploration until it hits the tool-call cap with nothing written."* Tutorial reinforces: 4.7 uses tools *more selectively* and needs explicit specification.

Skills that describe operations in prose (*"find the brief"*, *"search tests/"*, *"read the file"*) without naming the corresponding tool invocation invite action-skip or input hallucination (§6.3.3.4).

Scope: six instances in `.gzkit/skills/*` that mirror to `.claude/skills/` (Claude Code primary; Codex has no skills-loading equivalent).

## Evidence

| Location | Text | Issue |
|---|---|---|
| `.gzkit/skills/gz-obpi-specify/SKILL.md:149-209` | Pre-Save Ground-Truth Check is section 6 of 9 | Correct content, wrong position — purely positional promotion to step 1-2 |
| `.gzkit/skills/gz-obpi-reconcile/SKILL.md:119-151` | "Agent action: SEARCH for evidence / grep tests/ for @covers tags" | No Grep tool call; "grep" is shell prose; fails Windows-native |
| `.gzkit/skills/gz-obpi-simplify/SKILL.md:73-77` | ``find docs/design/adr -name "OBPI-{id}*.md"`` | Bash `find` fails Windows-native; Glob is the native cross-platform answer |
| `.gzkit/skills/gz-check/SKILL.md:50-58` | "Verify: 1. No hook errors 2. Surfaces match canonical 3. CLAUDE.md under 200 lines" | Three check items, zero commands named |
| `.gzkit/skills/gz-adr-audit/SKILL.md:87-90` | ``ADR_DIR=... mkdir -p "${ADR_DIR}/audit/proofs"`` | Shell var persistence; Bash tool resets between calls per tool docs |
| `.gzkit/skills/gz-adr-emit-receipt/SKILL.md:29` | `$gz-adr-emit-receipt` placeholder | Needs verification: template residue vs. real bug |

## Fix plan

Two coordinated commits under GHI-03:

1. `refactor(skills): promote gz-obpi-specify pre-save ground-truth check to step 1 (GHI #N)` — position-only, no content change
2. `fix(skills): replace prose operations with tool-literal invocations (GHI #N)` — the other five:
   - `gz-obpi-simplify:75` `find X` → `Use Glob(pattern="docs/design/adr/**/obpis/OBPI-{id}*.md")`
   - `gz-obpi-reconcile:119-151` `grep X` → `Use Grep(pattern=..., path=...)`
   - `gz-check:50-58` three verify items → each names a concrete CLI (`uv run gz validate --surfaces`, `wc -l CLAUDE.md`, etc.)
   - `gz-adr-audit:87-90` inline the paths; no shell vars
   - `gz-adr-emit-receipt:29` verify whether placeholder is a rendering artifact; if not, replace with literal invocation

## Routing

Multi-file (6 files); ≤25 lines total. Direct-fix per `defect-fix-routing.md`. Two focused commits.

## Tracked under

GHI-MASTER
```

---

## GHI-04 (F4 over-ceremony decoupling + F5 cross-surface contradictions)

**Title:** `F4/F5 over-ceremony coupling and cross-surface contradictions deadlock 4.7`

**Labels:** `defect`

**Body:**

```markdown
## Class of failure

**F4:** 4.7's Adaptability is a **strength** per System Card §6.2.2.2 — *"reliably diagnoses root causes rather than patching surface symptoms."* gzkit governance text couples "root-cause fix" with "full OBPI ceremony-mandate" (Iron Law, rule 6c). 4.7's natural thoroughness gets channeled into ceremony — the GHI #195 / withdraw commit `d2ed160b` failure mode. The fix is decoupling, NOT degrading 4.7's Adaptability.

**F5:** Where two surfaces state incompatible rules, 4.7's literal read either violates one or deadlocks. Four active contradictions identified.

## Evidence

### F4 — over-ceremony (no skill references defect-fix-routing.md)

| Location | Pattern | Severity |
|---|---|---|
| `.gzkit/skills/gz-obpi-pipeline/SKILL.md:29-75` | Iron Law mandates 5-stage ceremony; no scope gate | **P0** |
| `.gzkit/skills/gz-skill-router/SKILL.md:60` | "Execute the full implementation pipeline → gz-obpi-pipeline" — routes ALL OBPI work to pipeline, no defect branch | **P1** |
| `.gzkit/rules/governance-core.md:18-25` | "Required workflow order" 6 steps, no scope | **P1** |

### F5 — cross-surface contradictions

| A | B | Conflict | Severity |
|---|---|---|---|
| `gh-cli.md:11` "Use `gh` only when explicitly requested" | `governance-core.md:16` + `behavioral-invariants.md:31` "Every defect must be tracked" | Deadlock: file (violate gh-cli) or skip (violate governance-core) | **P0** |
| `behavioral-invariants.md:61` 6c "Prefer the more thorough fix over the narrower fix" | `defect-fix-routing.md` "default-to-ceremony is the failure mode this rule exists to close" | Direct semantic conflict; both landed April 2026 | **P0** |
| `arb.md:36-50` ARB "when debugging" (optional) | `attestation-enrichment.md:37-88` ARB fail-closed mandatory for heavy-lane | Scope mismatch | **P0** |
| `git-sync/SKILL.md:46` "`--lint --test` is redundant" | Same skill `:80` "`--apply` without `--lint --test` = red flag" | Same skill, 34 lines apart | **P1** |

## Fix plan

Two coordinated commits under GHI-04:

1. `fix(skills): add defect-fix-routing scope gate to pipeline and router (GHI #N)` — F4 decoupling:
   - `gz-obpi-pipeline § When to Use`: *"If the change is ≤10 source lines + ≤2 files + in-flight defect, invoke `.gzkit/rules/defect-fix-routing.md` instead of this pipeline."*
   - `gz-skill-router` decision tree: add defect-fix branch with same threshold.
   - `governance-core.md § Required workflow order`: scope to OBPI implementation; cross-reference `defect-fix-routing.md` for non-OBPI paths.

2. `fix(governance): resolve cross-surface contradictions flagged in 4.7 audit (GHI #N)` — F5:
   - `gh-cli.md:11`: explicit carve-out — *"Use `gh` for (a) defect tracking per governance-core.md, (b) closeout per adr-audit.md, (c) release ceremony, or (d) explicit user request."*
   - `behavioral-invariants.md:61` rule 6c: *"Choose fix scope per defect-fix-routing.md thresholds, not intuition."* (Removes "prefer the more thorough fix" framing.)
   - `arb.md:36-50`: reframe as decision matrix keyed on attestation context; fail-closed for heavy-lane, optional for lite. Links to GHI-00 command-example fix.
   - `git-sync/SKILL.md`: remove L80 red flag (pre-commit hook covers the gate per L46-47).

**Implementer note:** Iron Law stays intact. F4 fix is adding scope-scaling, not weakening thoroughness expectations. 4.7 Adaptability is a strength to preserve, not a behavior to degrade.

## Routing

Multi-file (7+ files); ~35-40 lines total. Two commits. Direct-fix per `defect-fix-routing.md`.

## Tracked under

GHI-MASTER
```

---

## GHI-05 (F6 vibe claims + F8 within-rules monoliths)

**Title:** `F6 unverifiable output-form claims and F8 within-rules monolith burying`

**Labels:** `defect`

**Body:**

```markdown
## 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 GHI-05:

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

GHI-MASTER
```

---

# Filing sequence

1. File GHI-MASTER first; note its number (`N`).
2. File GHI-00 through GHI-05 in parallel, each body referencing `#N` as umbrella.
3. Update GHI-MASTER body with the 6 sub-GHI numbers once filed.

## Command shape

```bash
# Step 1
gh issue create --label defect --title "4.7 regression — governance surface hardening (meta tracker)" --body-file <umbrella.md>
# → returns issue URL and number N

# Step 2 (6 calls in parallel, each body referencing #N)
gh issue create --label defect --title "arb.md:62 demonstrates the gz arb ty check . anti-pattern that GHI #199 closed" --body-file <ghi-00.md>
# ... etc ...

# Step 3 — edit umbrella body to add sub-GHI numbers
gh issue edit N --body-file <updated-umbrella.md>
```

---

# Companion: vendor-alignment tidy chore (filed separately, NOT part of 4.7 series)

The architectural items the 4.7 series deferred are authorized as chore-promotable tidies under `ADR-pool.vendor-alignment-claude-code` (pool ADR, 2026-03-15). File as a separate GHI (or execute as a chore) when ready:

**Title candidate:** `Execute vendor-alignment-claude-code tidy items (pool-authorized)`
**Labels:** `chore`

**Body candidate:**

```markdown
## Tidy items authorized by ADR-pool.vendor-alignment-claude-code

The pool ADR explicitly notes: *"Tidy items (CLAUDE.md pruning, disable-model-invocation, Compact Instructions, Notification hooks) can proceed as chores without waiting for promotion."* This issue tracks execution of those tidies.

## Scope

1. **Adopt `@AGENTS.md` handoff in CLAUDE.md** per Claude Code docs (memory#agents-md):
   - Add `@AGENTS.md` at top of CLAUDE.md
   - Remove the `<!-- BEGIN agents.local.md -->` / `<!-- END agents.local.md -->` embed block (comes via chain)
   - Reduce CLAUDE.md to `@AGENTS.md` + genuinely Claude-Code-specific addendum
   - Run `gz agent sync control-surfaces`; verify with `/memory` in a CC session
2. **Prune AGENTS.md to ≤200 lines** (currently 306) per Claude Code's 200-line soft guidance:
   - Move meta-justification (L13-22 "Why this contract is not minimal") to `docs/governance/contract-rationale.md`
   - Move skills catalogue (L172-198) to `docs/user/skills-catalogue.md`
   - Hoist AGENTS.md-body F1 findings (the 5 instances the 4.7 GHI-01 deferred): `AGENTS.md:22` "Use judgment", `:127` "Preserve human intent", `:128` "Aggressively offload", `:207` Gate 4 "Manual check", `:234` "After plan approval" — each gets a mechanical-trigger rewrite
   - **Verify with `/context`** (claude-code-inventory row 45) — Claude Code's per-session diagnostic showing live token usage by category. Makes the ≤200-line target empirically checkable during the fix, not aspirational.
3. **Add `disable-model-invocation: true`** to ceremony/side-effect skills (gz-attest, gz-closeout, gz-audit, gz-gates, git-sync)
4. **Add Compact Instructions section** to CLAUDE.md so context compaction preserves governance state

## Routing

Multi-commit chore under `ADR-pool.vendor-alignment-claude-code`. Not a single GHI fix; execute as discrete commits per tidy item.

## Related

- `ADR-pool.vendor-alignment-claude-code` (pool parent)
- GHI-01 (4.7 series deferred the 5 AGENTS.md-body F1 findings here)
- GHI-05 (4.7 series deferred AGENTS.md monolith pruning here)
```
