v0d.7 Codification Plan — Bridge-Card Sign-Off
Date: 2026-05-12
Authorizes: plan v4 §15 ("v0d.7 codification will additionally add (anticipated, not specified here)") + the seven "Known pilot weaknesses" from run-1 adjudication.md
Branch: claude/adjudication-plan-v4-vYDk0
Status: draft, awaiting maintainer adjudication before execution
This document specifies the set of schema edits, agent / script promotions, lint additions, and hook changes that codify the bridge-card sign-off procedure tested in run-1. It is the gate between the pilot SUCCESS verdict and the schema mutation.
Reading order. §1–§3 are the proposal. §4 enumerates the decisions the maintainer must adjudicate before §5 executes. §6 records out-of-scope items deferred to v0d.8 or later. §7 sequences the edits in commit-by-commit order to preserve revertibility.
1. Inputs
| Source | Items proposed for codification |
|---|---|
| Plan v4 §15 (anticipated, not specified) | (a) bridge-cards-applied.md provenance register, (b) lint check for subsections anchored to bridge cards not in the register, (c) 11th bridge-card field confidence, (d) 12th bridge-card subfield counter-test: broken out, (e) cohort-fingerprint discipline, (f) schema-changelog acknowledgement of math-olympiad-analogy transfer limits, (g) 3–6-month retrospective audit clause |
| Pilot known weaknesses (§Adjudication §Known pilot weaknesses) | (1) hook activation: env-var → marker-file, (2) hook should match Bash writes, (3) typed-connection vocabulary lint at weave Pass 3, (4) Test 4 refinement: blocker adequacy not just presence, (5) citation-numbering convention standardization for bridge-card anchors, (6) hypothesis-pre template-conformance lint, (7) interpretation-map seeded-card protocol clarification |
| Plan v4 §11 / §11.5 / §12 | Bridge-card sign-off procedure itself — to be promoted from pilot-artifact (bridge-card-signoff-plan-v4-2026-05-12.md) to durable schema (skill + agents + hook + CLAUDE.md reference) |
Total: 7 anticipated §15 items + 7 pilot weaknesses + procedure promotion = 15 distinct codification proposals.
2. Per-proposal specification
2.1 Promote the sign-off procedure from pilot artifact to durable schema
Action. Create .claude/skills/bridge-card-signoff/SKILL.md containing the procedure described in plan v4 §1–§20, restructured for skill-loading discipline (frontmatter description + when_to_use; skill-internal section ordering tuned for cold-read). The plan v4 document remains in wiki/.audit/ as the historical record of the pilot's adopted plan; the SKILL.md is the operational durable schema.
Why a new skill rather than folding into weave/SKILL.md. Sign-off is invoked when a maintainer says "sign off on the bridge cards in weave-pass3-{date}.md," not when running weave itself. The two operations have different triggers, different output artifacts, and different blast radius. Keeping them separate matches the existing skill split (ingest / lint / audit / weave / query / write-paper).
Subagents promoted. Five .claude/agents/bridge-card-*.md files (interpretation-checker, gate-applier, adversarial-attacker, evidence-tracer, adjudicator) are already written and were exercised in run-1; promote to durable status with minor edits adjusting "pilot" → "live procedure" language where present.
CLAUDE.md update. Workflows section gains a Bridge-Card Sign-Off paragraph (after Weave, before Query) describing the WHEN and WHY; the HOW lives in the SKILL.
Files touched. .claude/skills/bridge-card-signoff/SKILL.md (new), CLAUDE.md (workflow section, directory tree), .claude/agents/bridge-card-*.md × 5 (minor edits).
2.2 Bridge-card 11th field — confidence
Action. Add 11th field confidence: medium | low | speculative to the bridge-card template in .claude/skills/weave/SKILL.md Pass 3 section. Plan v4 §20 inference rule is preserved in bridge-card-signoff/SKILL.md as a fallback for cards drafted before the field becomes routine. New cards drafted at Pass 3 carry the field explicitly; the inference rule applies only to legacy cards.
Files touched. .claude/skills/weave/SKILL.md (Pass 3 template table extended to 11 rows), .claude/skills/bridge-card-signoff/SKILL.md (inference rule for legacy cards).
2.3 Bridge-card 12th subfield — counter-test: broken out
Action. Add 12th subfield counter-test: to the bridge-card template, broken out from inline-in-Counterpressure. Plan v4 §3 test #2 ("Counterpressure has a counter-test") and §3 test #6 ("Counterpressure field present and specific") both become structurally checkable: the gate-applier verifies counter-test: is non-empty rather than parsing prose.
Files touched. .claude/skills/weave/SKILL.md (template extended), .claude/agents/bridge-card-gate-applier.md (Test 2 + Test 6 prose updated to check the subfield).
2.4 wiki/.audit/bridge-cards-applied.md provenance register
Action. Create the register as a new operational file under wiki/.audit/ (already an operational-files-exempt directory per CLAUDE.md). Entries are append-only: one row per applied bridge card, recording the run, the card slug, the apply-mode commit SHA, and the destination pages. Apply-mode writes for bridge-card-derived content must also write a row into this register; absence of a row is a lint failure (see §2.5).
Template per entry:
## <card-slug>
- Sign-off run: `bridge-card-signoff/run-N/adjudication.md#card-X`
- Applied: YYYY-MM-DD (commit <sha>)
- Signed apply scope: items <N>, <M>
- Destination pages: [[page-a]] (subsection under `## Open Questions`), [[page-b]] (typed connection)
- Original Pass 3 report: `weave-pass3-{date}.md`
Files touched. New file wiki/.audit/bridge-cards-applied.md. Apply-mode procedure in bridge-card-signoff/SKILL.md updated to require register-write per applied card.
2.5 Lint: concept-page subsections anchored to bridge cards not in the register
Action. Add a new check to scripts/lint-mechanical.py that scans concept-page bodies for the marker comment pattern proposed in §2.4 (e.g. <!-- bridge-card: <slug> --> written by apply-mode) and verifies each referenced slug appears in wiki/.audit/bridge-cards-applied.md. Concept-page content with no marker is unaffected (most subsections are not bridge-card-derived).
Files touched. scripts/lint-mechanical.py (new check_bridge_card_provenance function added; bridge-cards-applied.md slug-set load added to wiki_parse.py). Documented as new check in the existing "NOT covered" inventory.
Open question (decision in §4): the marker-comment pattern works for HTML-comment-aware Markdown renderers but is invisible in plaintext. Alternative: a frontmatter list bridge_cards: [<slugs>] on each concept page whose Open-Questions section is bridge-card-derived. Frontmatter is cleaner but adds frontmatter complexity; marker-comments are lighter-weight. Awaiting maintainer choice.
2.6 Typed-connection vocabulary lint at weave Pass 3
Action. Per Phase 4 diagnosis (a) from run-1 (pattern #6 fired on Cards 1-3 because Pass-3 drafters used ad-hoc relation labels). Add a check to scripts/lint-mechanical.py that scans wiki/.audit/weave-pass3-*.md files for Relation: bullets and verifies each typed-connection label is in the CLAUDE.md Page Format → Connections closed list. The check runs at weave Pass 3 output time, before bridge-card sign-off; it catches schema-vocabulary defects upstream of the sign-off pipeline.
Closed list (from CLAUDE.md Page Format): *extends*, *critiques*, *applies*, *contrasts with*, *is a case of*, *is a reformulation of*, *is a middle term between*, *is the condition of intelligibility of*, *enacts*, *states*. Plus the bridge-card-specific *shares mechanism with* if adopted (see §4 decision).
Files touched. scripts/lint-mechanical.py (new check_typed_connection_vocabulary function), wiki_parse.py (closed-list constant + Pass 3 report parser).
Open question (decision in §4): the Cards-1-3 defects used relations (*shares mechanism with*, *is the takable-up dimension of*, *requires*) that arguably name real typed connections the closed list does not currently contain. Closed list could be extended; sign-off could be made authoritative for vocabulary; or relations could be retired in favor of in-list substitutes. Awaiting maintainer choice.
2.7 Test 4 refinement: blocker adequacy, not just presence
Action. Per Phase 4 secondary diagnosis from run-1. Refine schema gate Test 4 in bridge-card-signoff/SKILL.md from "single-source promotion blocker present where applicable" to a two-part check: (a) blocker present, and (b) blocker scope covers each apply-as item whose architectural reach exceeds single-source attestation. Test 4 wording in §3 of the SKILL is rewritten; the gate-applier agent's prompt is updated correspondingly.
Files touched. .claude/skills/bridge-card-signoff/SKILL.md (Test 4 prose), .claude/agents/bridge-card-gate-applier.md (Test 4 procedure).
2.8 Citation-form standardization for bridge-card anchors
Action. Per Phase 4 smaller observation from run-1 ("citation-numbering convention not externally documented"). Document the disambiguating syntax [extraction-note line N | raw-source line M] (or similar) in weave/SKILL.md Pass 3 bridge-card template and in bridge-card-signoff/SKILL.md Role C protocol. Drafters write the disambiguated form at Pass 3; reviewers expect it.
Files touched. .claude/skills/weave/SKILL.md (Pass 3 Evidence-anchors row), .claude/skills/bridge-card-signoff/SKILL.md (Role C step 1).
Open question (decision in §4): the exact disambiguating syntax is not yet chosen; three candidates documented for maintainer adjudication.
2.9 Hypothesis-pre template-conformance lint
Action. Per weakness 6 from run-1. Add a check to scripts/lint-mechanical.py that scans wiki/.audit/bridge-card-signoff/run-*/role-*/agent-*/*.hypothesis-pre.md files and verifies that each labeled H2 (## Initial confidence, ## Final confidence) has non-blank content directly underneath. Catches the agent-1 batch's empty-under-H2 pattern that surfaced in run-1.
Files touched. scripts/lint-mechanical.py (new check_hypothesis_pre_conformance function). Skipped if no bridge-card-signoff/ runs are present.
2.10 Hook activation: env-var → marker-file
Action. Per weakness 1 from run-1 (env-var injection was not supported by the harness mid-session). Change scripts/bridge-card-signoff-write-guard.py activation from BRIDGE_CARD_SIGNOFF_ACTIVE env var to a marker file at wiki/.audit/bridge-card-signoff/run-N/.active. The hook reads the marker file at invocation time; a running Claude Code session can activate the hook by writing the marker, no restart needed.
Files touched. scripts/bridge-card-signoff-write-guard.py (activation mechanism rewritten), .claude/settings.local.json.bridge-card-signoff-fragment.json (comment updated; no JSON shape change), bridge-card-signoff/SKILL.md (operator procedure updated).
2.11 Hook: match Bash file-write verbs
Action. Per weakness 2 from run-1. Extend the hook's matcher to include Bash and filter for shell write verbs (>, >>, tee, cp, mv into target paths). Defense-in-depth: if a subagent's tool allowlist drifts to include Bash, the hook still bounds writes to the run subdirectory.
Files touched. .claude/settings.local.json.bridge-card-signoff-fragment.json (matcher extended), scripts/bridge-card-signoff-write-guard.py (Bash branch added).
Open question (decision in §4): Bash write detection requires parsing the shell command string, which is heuristic. A simpler alternative: keep the allowlists strict (no Bash for any sign-off subagent) and trust the allowlist enforcement. Awaiting maintainer choice.
2.12 Cohort-fingerprint discipline
Action. Per plan v4 §15 anticipated item. Add a cohort-fingerprint.md section to each run's adjudication output documenting: card count, source distribution, HUB-page touches, taxonomy patterns fired, schema-gate tests fired, scope-mismatch flag count, confidence trajectories. The fingerprint is the input to drift-tracking between pilot and live use: if a future run's fingerprint diverges sharply, it surfaces a possible procedural drift.
Files touched. .claude/skills/bridge-card-signoff/SKILL.md (procedure step gains fingerprint-emission), .claude/agents/bridge-card-adjudicator.md (output template extended). Run-1's cohort fingerprint is back-filled into its adjudication.md as the baseline.
2.13 Math-olympiad-transfer-limits acknowledgement
Action. Per plan v4 §15. Schema-changelog entry shipping v0d.7 includes a paragraph naming the transfer limits explicitly: bridge-card sign-off uses math-olympiad-style isolation + adversarial-taxonomy probing, but philosophy has no ground-truth oracle for "correct" verdicts. The procedure produces a calibrated probability of philosophical defensibility, not a proof of correctness. Future maintainers reading the schema cold should not over-claim what sign-off does.
Files touched. wiki/schema-changelog.md (new v0d.7 entry).
2.14 3–6-month retrospective audit clause
Action. Per plan v4 §15. The v0d.7 changelog entry sets a 3–6-month review clause (target: 2026-08-12 to 2026-11-12) at which the maintainer audits a sample of applied bridge-card writes for "did they hold up under subsequent ingest and audit?" The clause mirrors the 6-month review clauses for weave (v0d.4) and bridge cards (v0d.5).
Files touched. wiki/schema-changelog.md (review clause embedded in v0d.7 entry).
2.15 Interpretation-map seeded-card protocol clarification
Action. Per weakness 7 from run-1. The interpretation-checker fired INTERPRETATION-AT-RISK on Card 6 via a quick anchor check that found zero matches, mildly priming Role B for the #1a firing. Document that this is intended behavior — the calibration measures pipeline catches, not individual reviewer catches. Add a paragraph to bridge-card-signoff/SKILL.md §13.1-equivalent section clarifying the calibration scope.
Files touched. .claude/skills/bridge-card-signoff/SKILL.md (calibration section).
3. Out-of-scope (deferred to v0d.8 or later)
- Apply-mode for bridge cards — separate authorization gate per plan v4 §15. v0d.7 does not authorize apply-mode; that decision waits until at least one apply-mode dry-run has been adjudicated.
- Bridge-card-specific calibration — referenced in
weave/SKILL.mdPass 3 as "apply-mode discipline acknowledged, deferred." v0d.7 codifies sign-off but does not define apply-mode calibration. Maintainer-signed cards from sign-off remain a gate on apply-mode; no calibration substitute yet. - Run-2 retrospective using cohort-fingerprint drift detection — requires at least one additional run beyond run-1.
- Cards 1, 2, 3, 4 retire-or-revise — separate user decision item from the adjudication.md, deferred until v0d.7 ships.
- Apply-mode for Card 5 items 1, 4 — separate user decision item, deferred.
4. Decisions required from maintainer before §5 execution
| # | Decision | Options | Default if maintainer skips |
|---|---|---|---|
| D1 | §2.5 marker-comment vs frontmatter for bridge-card provenance | (a) HTML marker comment <!-- bridge-card: <slug> -->; (b) frontmatter bridge_cards: [<slugs>]; (c) both |
(a) marker comment — lighter weight, no frontmatter complexity |
| D2 | §2.6 typed-connection vocabulary closed list — extend, retire, or stay | (a) extend list to include *shares mechanism with* and *requires* (rationale: run-1 drafters identified real relations the list missed); (b) keep list strict, retire non-list relations (rationale: closed list is load-bearing for graph queries); (c) sign-off becomes authoritative for vocabulary additions |
(b) stay strict — preserves graph-query reliability |
| D3 | §2.8 citation-form syntax | (a) [extraction-note line N | raw line M]; (b) [en:N raw:M]; (c) verbose [extraction-note: line N; raw: line M] |
(a) pipe-separated, more readable than (b), less verbose than (c) |
| D4 | §2.11 Bash-write hook coverage | (a) extend hook to match Bash + heuristic write-verb detection; (b) keep allowlists strict (no Bash for sign-off agents) and skip Bash hook coverage | (b) keep allowlists strict — simpler, no false positives |
| D5 | §2.12 cohort-fingerprint level of detail | (a) minimal — counts + patterns; (b) full — counts + patterns + confidence trajectories + raw-read counts | (a) minimal — full version risks fingerprint becoming a per-run obligation rather than a drift detector |
| D6 | §2.1 skill split vs fold-into-weave | (a) new bridge-card-signoff/ skill; (b) fold sign-off procedure into weave/SKILL.md as a Pass 3.5 section |
(a) new skill — different trigger, different outputs |
| D7 | §2.2 confidence field semantics | (a) field on bridge cards only; (b) field also propagates to derived claims.md entries when promoted |
(a) bridge cards only — claims register already has its own Confidence: field; double-propagation risks redundancy |
5. Execution plan (commit-by-commit, after §4 decisions)
Sequenced to keep each commit revertible:
| Commit | Scope | Files |
|---|---|---|
| C1 | Procedure promotion: new SKILL, agent edits, CLAUDE.md workflow paragraph, directory-tree update | .claude/skills/bridge-card-signoff/SKILL.md, .claude/agents/bridge-card-*.md, CLAUDE.md |
| C2 | Template extension: 11th + 12th fields | .claude/skills/weave/SKILL.md, .claude/agents/bridge-card-gate-applier.md |
| C3 | Provenance register: file + lint check | wiki/.audit/bridge-cards-applied.md, scripts/lint-mechanical.py, scripts/wiki_parse.py |
| C4 | Vocabulary lint at weave Pass 3 | scripts/lint-mechanical.py, scripts/wiki_parse.py |
| C5 | Test 4 refinement + citation-form + interpretation-map clarification | .claude/skills/bridge-card-signoff/SKILL.md, .claude/agents/bridge-card-gate-applier.md, .claude/skills/weave/SKILL.md |
| C6 | Hypothesis-pre conformance lint | scripts/lint-mechanical.py |
| C7 | Hook updates: marker-file activation (+ optional Bash matcher per D4) | scripts/bridge-card-signoff-write-guard.py, .claude/settings.local.json.bridge-card-signoff-fragment.json |
| C8 | Cohort-fingerprint discipline + run-1 back-fill | .claude/skills/bridge-card-signoff/SKILL.md, .claude/agents/bridge-card-adjudicator.md, wiki/.audit/bridge-card-signoff/run-1/cohort-fingerprint.md |
| C9 | Schema-changelog entry + version bump | wiki/schema-changelog.md, CLAUDE.md (Schema version line) |
Each commit has its own test or smoke-check where applicable (lint runs cleanly; hook smoke-test passes; SKILL renders correctly).
After C9, the branch is rebased onto master and a draft PR is opened.
6. Risks and counterpressure
- Risk: codifying after one pilot run is premature. Run-1 is a single data point. The procedure may have hidden failure modes that surface only at run-2 or run-3. Counterpressure: the v0d.7 codification ships with a 3–6-month review clause (§2.14) and a cohort-fingerprint discipline (§2.12) explicitly designed to catch drift. The alternative — running 2-3 more pilots before codifying — preserves the procedure in pilot-artifact limbo where it cannot be invoked by future sessions reading the schema cold.
- Risk: §2.5 lint check produces false positives on bridge-card-derived content not yet entered in the register. A maintainer who applies a bridge card by hand without updating the register triggers the lint. Counterpressure: this is the lint's intended behavior; the maintainer should be told. The register is the source of truth for "this content is bridge-card-derived"; bypassing it is a procedural defect.
- Risk: §2.6 closed-list lint blocks legitimate Pass 3 vocabulary innovation. Counterpressure: the lint is a warning, not an error, in v0d.7. If Pass 3 reveals the closed list needs extension, the extension is a schema decision (v0d.8 or later), not a sign-off-time fix.
- Risk: skill split (§2.1) doubles the maintainer's mental model. Counterpressure: the skills are loaded on-demand by their
when_to_usetriggers; the maintainer pays the cost only when invoking sign-off. The alternative — folding into weave — conflates two operations with different invocations and different blast radius.
7. What this plan does NOT do
- Does not authorize apply-mode for any bridge card (§3 first bullet).
- Does not retire or revise Cards 1-4 from run3 (§3 fourth bullet — separate user decision).
- Does not modify
wiki/.audit/weave-pass3-run3-2026-05-08.mdcontent (Card 5's sign-off line was written in run-1; cards 1-4 remain at_(awaiting per-card sign-off)_). - Does not modify any concept page, claims entry, or motifs entry.
- Does not extend the closed typed-connection vocabulary (decision D2 deferred to maintainer; default is "stay strict").
- Does not promote sign-off subagent definitions to other skills' invocation contexts (they remain bridge-card-specific).
Adoption record
- Adjudicated: 2026-05-12
- D1–D7 decisions:
- D1 (provenance marker style): both — HTML marker comment AND frontmatter list
- D2 (typed-connection closed list): extend — add
*shares mechanism with*and*requires*to CLAUDE.md Page Format. Note:*is the takable-up dimension of*(the third out-of-list relation from run-1 Card 1) was left out as too card-specific; it remains the canonical example of a rewrite-or-extend candidate. - D3 (citation-form syntax): default (a) — pipe-separated
[extraction-note line N | raw line M] - D4 (Bash hook coverage): extend — hook matcher includes
Bashwith heuristic write-verb detection (>,>>,tee,cp,mv,dd of=,install) - D5 (cohort-fingerprint detail): default (a) — minimal (counts + patterns); full version risks per-run obligation rather than drift-detector
- D6 (sign-off procedure home): new skill —
.claude/skills/bridge-card-signoff/SKILL.md(not folded into weave/SKILL.md) - D7 (confidence field semantics): default (a) — bridge cards only;
claims.mdkeeps its ownConfidence:field
- Additional patches: none beyond §2 specification; codification stays within plan scope
- Authorized for §5 execution: yes (2026-05-12)
- Executed: commits C1–C9 on branch
claude/adjudication-plan-v4-vYDk0in a single squash-merge-ready commit per §7. Smoke-tested: lint runs cleanly with three new sections; hook activation + Bash matcher pass all seven smoke tests; new skill loads correctly (visible in available-skills listing during this session).