Fix-Plan Execution Session — Handoff for Next Session

Audience: future-Claude or future-user resuming this work in a later session.

Status at handoff: Cross-axis fix plan committed on master; H_synth Option A architecture-level retirement adjudicated; PR 1 (Integrity Gates) + PR 2 (Subtraction Infrastructure) opened on GitHub. Master HEAD: 002bcf2 (handoff) → 7cd479c (correction) → 4d74060 (plan). Both PR feature branches pushed. Master has 3 local-only commits not yet on origin.

First action for next session

git push origin master

Surfaces the 3 master-only commits (plan + correction + handoff, this file) on GitHub. Low-risk, no rebase needed, no force-push. Once master is on origin, the fix-plan artifact + retraction + handoff become visible from the PR descriptions of #22 and #23 (which currently reference master commits by SHA without those commits being public).

Then proceed to the next-session follow-ups in §Open follow-ups below — recommended order: review/merge PR #22, then PR #23, then start PR 3 (Bridge-Card Triage) or PR 4 (Paper A reader IA).

TL;DR

  1. Cross-axis fix plan drafted via Claude + GPT-5.5 (Codex desktop) collaboration. 13 findings across 3 axes → 5 substrate clusters + 1 maintainer decision point → sequenced as 5 bundled PRs. Durable artifact at wiki/.audit/fix-plan-2026-05-17.md.
  2. H_synth Option A retirement adjudicated (retire/replace with δ architecture). Distinct from the 2026-05-05 claim-status contestation: today's adjudication authorizes operational propagation of the γ split into wiki's downstream code (scripts/wikisite/paper_a.py:47 four-slug hardcoding) and public-site presentation, per Cluster 5 (PR 4). The claim entry science-secrete-stiftung-chiasm remains at contested per the prior 2026-05-05 reasoning; a 2026-05-17 status-history line documents today's architecture-level adjudication.
  3. One AI-collaboration failure mode caught + retracted: "CLAUDE.md drift on build_site/wikisite/" was a Claude+Codex mutual hallucination — Claude's prompt seeded the path; Codex's "doesn't exist; should fix" reply was misread as a finding; grep-verified post-commit that the string appears nowhere in the repo. Retracted in commit 7cd479c with full reasoning. Methodology lesson now committed evidence: CLAUDE.md General Rule 16 (citation traceability) applies to AI-source-cited findings, not only human-source-cited findings.
  4. PR 1 (Integrity Gates) opened: https://github.com/JeffvonD/wikiwip/pull/22. CI green at handoff time. 2 commits (prep doc + mechanical script). Adds scripts/check_public_site.py (public-reader gate: Pagefind assets + search-UI-without-index + broken-href ratchet) and a CLAUDE.md Rule 19 addendum distinguishing baseline gate from public-reader gate. 14 new tests.
  5. PR 2 (Subtraction Infrastructure) opened: https://github.com/JeffvonD/wikiwip/pull/23. CI pending at handoff time. 2 commits (prep doc + mechanical script). Adds scripts/claim_retirement_queue.py (Phase 8.6 retirement/downgrade queue generator: non-mutating; reads wiki/claims.md, writes queue at wiki/.audit/claim-retirement-queue-{date}.md) and CLAUDE.md §Subtraction Infrastructure + audit SKILL Phase 8.6 sections. 14 new tests.

Wiki state (master @ 7cd479c): 485 pages | 57 sources | 277 concepts | 129 entities | 22 questions | 158 claim entries (17 supported / 83 live / 57 candidate / 1 contested / 0 retired). Same as start of session — no new pages or claim entries; the only claims.md edit was a status-history line + Updated bump on science-secrete-stiftung-chiasm.

Wiki schema: v0d.9 (unchanged in this session). PR 2 prep commit's ### Subtraction Infrastructure addition under §Claim Status Gates is editorial — clarifies an existing rule's relationship to a new mechanism without introducing new claim statuses, motif tiers, or typed connections.

What landed in this run

Commits on master (2)

  • 4d74060 plan 2026-05-17: cross-axis fix plan + H_synth architecture-level retirement — creates wiki/.audit/fix-plan-2026-05-17.md (~360 lines initial; corrected in next commit), appends status-history bullet to science-secrete-stiftung-chiasm, bumps the entry's Updated 2026-05-05 → 2026-05-17, matches the Updated date in the Summary table + wiki/index.md claim row, adds the fix-plan addition to the "Last update" header comment, appends a new [2026-05-17] plan log entry. Refreshes baselines: home_audit_count 76 → 77.
  • 7cd479c correction 2026-05-17: retract Claude+Codex mutual hallucination — 4 in-place corrections to wiki/.audit/fix-plan-2026-05-17.md (TL;DR + Cluster 2 "fold in" bullet + Decision Points table row + Open Questions item 1; each marked strikethrough/DROPPED with post-hoc grep verification + retraction reasoning inline), 1 rewrite of the drift sentence in wiki/index.md's "Last update" comment, new [2026-05-17] correction log entry. The original [2026-05-17] plan log entry stands per Rule 2 (append-only chronology); the new entry is the corrective evidence.

Both master commits are local-only as of handoff (not pushed to origin). Pushing master will surface the plan + retraction on GitHub.

PR 1 — Integrity Gates (https://github.com/JeffvonD/wikiwip/pull/22)

Branch: claude/pr1-integrity-gates-2026-05-17 (pushed). 2 commits:

  • 26770c3 pr1-prep: pure CLAUDE.md addendum to General Rule 19 — distinguishes baseline gate (corpus-structure drift, existing) from public-reader gate (release-artifact invariants, new). Names scripts/check_public_site.py (introduced in the next commit).
  • 530792a pr1-mechanical: adds scripts/check_public_site.py (~200 lines) + scripts/tests/test_check_public_site.py (14 tests, all passing). Script checks: Pagefind assets present; no search UI rendered when index missing; no broken local hrefs above --max-broken-hrefs threshold (baseline-ratchet pattern). Exit codes: 0 / 1 / 2 / 3 / 4.

Dogfood against current local build: Pagefind missing (expected — build was --skip-pagefind) + 822 broken hrefs (mix of ~293 real dead wikilinks per Codex + audit-page rendering noise: numeric refs '2', '15' from numbered citations rendered as anchors, literal placeholder strings like '/claims/claim-slug/' from CLAUDE.md / audit-report prose).

Deliberately not in PR 1: CI wiring (needs broken-href baseline pinning after triage); build_site.py refactor to detect Pagefind availability before render (separate concern; the gate catches the symptom, the refactor fixes the bug); dead-link triage queue (Cluster 2 follow-up).

PR 2 — Subtraction Infrastructure (https://github.com/JeffvonD/wikiwip/pull/23)

Branch: claude/pr2-subtraction-queue-2026-05-17 (pushed). 2 commits:

  • 5f56c1b pr2-prep: CLAUDE.md ### Subtraction Infrastructure addition under §Claim Status Gates + parallel ### Phase 8.6 — Retirement / downgrade queue section in .claude/skills/audit/SKILL.md. Both codify: queue-producing not auto-mutating; never edits wiki/claims.md; preserves the durable supported-promotion HALT; heuristics (keep/review for staleness, downgrade for Test 2 or Test 3 defects, merge for slug similarity + wiki-home overlap, retire is deliberately conservative).
  • ec32803 pr2-mechanical: adds scripts/claim_retirement_queue.py (~290 lines) + scripts/tests/test_claim_retirement_queue.py (14 tests, all passing). Module API matches Codex's draft surface: queue.main(argv), queue.generate_report(wiki, run_date, duplicate_threshold). Output: 6-column markdown table at wiki/.audit/claim-retirement-queue-{date}.md with Slug / Status / Age / Suggested action / Gate / Rationale.

Dogfood against real claims.md (158 entries): default --staleness-days=90 returns 0 candidates (no stale, no empty Counterpressure/Evidence sections under the inclusive content-line heuristic, no slug-pair duplicates). With --staleness-days=14: 18 candidates surfaced as keep/review (entries last touched 18–19d ago), confirming the staleness path works.

Deliberately not in PR 2: CI wiring (script is on-demand for now); heuristic refinements beyond the three above; actual claim retirements in wiki/claims.md (the queue is for adjudication, not adjudicated).

Methodology artifacts

  • The fix-plan artifact (wiki/.audit/fix-plan-2026-05-17.md) is the durable plan. Codex chat is preserved at "Review repo top issues" under the wikiwip pinned project but not committed; the artifact's file:line citations are sufficient for resuming work without the chat.
  • The retraction log entry is the methodology lesson committed as evidence: cite-traceability applies to AI-source-cited findings as well. Reference this when bringing future outside AIs into the wiki workflow.

Codex Cluster 3 / PR 2 draft provenance

Codex (GPT-5.5 Extra High, Auto-review mode) drafted the PR 2 substance in the "Review repo top issues" chat following Claude's request for: full scripts/claim_retirement_queue.py implementation + CLAUDE.md §Claim Status Gates wording extension + skeleton scripts/tests/test_claim_retirement_queue.py + .claude/skills/audit/SKILL.md Phase 8.6 extension. Codex's actual line-by-line script content was not transcribed; Claude implemented from Codex's API design (module function signatures, queue format, flag set, exit-code semantics) and design stance ("noisy enough to surface stale live claims as keep/review, but conservative enough that only concrete gate defects suggest downgrade or retire").

If a future session wants to verify the implementation against Codex's exact draft, re-open the Codex chat (still pinned at "Review repo top issues") and scroll to the response immediately after Claude's "Update on the wikiwip work: H_synth Option A retirement adjudicated..." message.

Cross-axis fix plan status

Per wiki/.audit/fix-plan-2026-05-17.md substrate-cluster sequence:

# Cluster Status
1 Maintainer Decision Point: H_synth / δ RESOLVED 2026-05-17 (Option A)
2 Integrity Gates & CI PR #22 open (prep + mechanical committed; CI wiring pending)
3 Retirement & Subtraction Infrastructure PR #23 open (prep + mechanical committed; first maintainer-adjudicated queue run pending)
4 Bridge-Card Triage & Weave Pre-Step Not started
5 Reader-Facing IA & Argument Paths Not started (gated on Cluster 1, now unblocked)
6 Provenance Surface Not started (worth doing after Cluster 5)

Drop / defer (per Codex + maintainer-adjudicated): do NOT reader-fy the Paper A matrix (keep as maintenance instrumentation); do NOT clean historical bridge-card pilot artifacts pinned at check_lint_baseline.py:26; do NOT mass-fix all 293 dead links in one PR (generate triage, then batch by substrate).

Open follow-ups (next-session work)

Sequenced by impact-per-effort

  1. PR #22 review / merge — CI is green; the prep+mechanical split is clean. Merge unblocks two follow-up commits on a new branch: (a) CI wiring of check_public_site.py into .github/workflows/site.yml with a pinned baseline for --max-broken-hrefs (need to triage 822 to a defensible number first); (b) build_site.py refactor moving Pagefind binary discovery before render. These are independent of each other; can land in either order.
  2. PR #23 review / merge — CI pending at handoff; expected to pass given dogfood + 14/14 unit tests. Merge unblocks: (a) first maintainer-adjudicated retirement queue run (review 0 candidates at default threshold, OR run with tightened --staleness-days for active review); (b) heuristic refinements over time (link-rot detection, retracted-source detection, etc.).
  3. Push master — the 2 master-only commits (4d74060 plan, 7cd479c correction) are local. Pushing surfaces the plan + retraction on GitHub for fork-state parity. Low-risk admin step.
  4. PR 3 — Bridge-Card Triage (Cluster 4) — can start without further Codex round-trip. Triage-ledger schema already specified in fix-plan Cluster 4. Touch points: .claude/skills/weave/SKILL.md:97, .claude/skills/bridge-card-signoff/SKILL.md:34, new scripts/validate_weave_pass3.py, new scripts/tests/test_weave_pass3_validation.py. Bridge-card-signoff run-3 (2026-05-17) is the most recent reference for what the existing sign-off machinery does.
  5. PR 4 — Paper A reader IA + δ architecture propagation (Cluster 5) — now unblocked by H_synth Option A. Substantial scope: new argument-path schema; split Paper A surfaces into maintainer (existing /paper-a/matrix/) vs reader (new /paper-a/read/ or /paper-a/argument-path/); scripts/wikisite/paper_a.py:47 four-slug hardcoding swapped; new templates + CSS; new tests; maintainer-supplied first δ-path sequence. Will need a focused multi-commit session.
  6. PR 5 — Provenance Surface (Cluster 6) — last per Codex's sequencing ("Provenance without reader path is just another sidebar"). Per-page provenance panel (cited sources, extraction-note anchors, related claims, last audit touch, confidence/status). UX/content policy decision required (minimal public mode vs maintainer mode).

Within-PR follow-ups (after merge)

For PR 1:

  • Triage the 822 broken hrefs into substrate buckets (real dead wikilinks vs audit-page rendering noise vs example placeholder strings). The audit-page rendering noise is itself a fix-the-renderer concern, not a fix-the-content concern.
  • Wire check_public_site.py into .github/workflows/site.yml once --max-broken-hrefs baseline is pinned.
  • Refactor build_site.py:1457/:1521 to detect Pagefind availability before pagefind_enabled is set; templates render fallback when binary missing.

For PR 2:

  • Run the first real maintainer-adjudicated queue (tighter --staleness-days, e.g. 14 or 30; review the 18 candidates surfaced).
  • Refine heuristics based on what the first review surfaces (e.g., evidence-link-rot detection if a real entry has stale anchor references; retracted-source detection if a real entry's Sources list contains a withdrawn artifact).
  • Consider promoting the queue from on-demand to a Phase 8.6 standing step in AUDIT_PLAN.md once the heuristics stabilize.

Maintainer-decision points still pending

Per fix-plan §Maintainer Decision Points (corrected version after retraction):

When Decision Status
Cluster 2 prep commit Final CLAUDE.md wording for baseline-vs-public-reader gate distinction DONE in PR 1 prep
Cluster 3 prep commit Final wording for Phase 8.6 retirement queue in audit SKILL DONE in PR 2 prep
Cluster 3 human step First per-claim adjudication of queue output (158-claim review) Pending — needs first real queue run
Cluster 4 schema change Approve triage ledger bucket vocabulary Pending
Cluster 5 mechanical commit Confirm δ architecture as Paper A canonical root in code Pending — PR 4 substance
Cluster 5 human step Supply first δ-path sequence Pending
Cluster 6 human step Provenance verbosity policy for public site Pending

What does NOT need attention

  • science-secrete-stiftung-chiasm claim entry — status correctly held at contested (the 2026-05-17 architecture-level adjudication is documented in the entry's Status History; no further status-change action needed beyond what's already committed in 4d74060).
  • The bridge-card-signoff workflow — most recently exercised in run-3 (2026-05-17 commit 9e8157a); not affected by today's session.
  • The v0d.9 schema — not changed in this session.
  • The motifs.md aggregation — not touched.

Notes for the next session opener

  • If resuming with Codex collaboration: the "Review repo top issues" chat is pinned under wikiwip in Codex desktop. Sending another message resumes the same context; Codex sees the PR branches and the file changes. Single-writer discipline (Claude writes files; Codex stays advisory) saved this session — keep it.
  • If resuming Claude-only: the fix-plan artifact (wiki/.audit/fix-plan-2026-05-17.md) is the source of truth for what's next. The retraction's methodology lesson applies: cite-verify every "the prior session said X exists" claim before acting on it.
  • The 2 master-only commits make the wiki state on disk consistent with the fix plan; pushing master surfaces them on GitHub. Whether to push is a maintainer call (no urgency in this session).
  • Baseline refresh is required before any commit that touches wiki/ content (General Rule 19). Both master-only commits and both PR commits already passed baseline refresh in this session.
  • The 158-claim total + 17 supported / 83 live / 57 candidate / 1 contested / 0 retired breakdown is unchanged. The retirement queue from PR 2 is designed to be the mechanism that, over time, takes that 0 retired off the floor — but only via maintainer adjudication, never automation.

Session metrics

  • Commits: 6 (2 on master + 2 per PR × 2 PRs)
  • PRs opened: 2 (#22, #23)
  • New files: 5 (fix-plan artifact + 2 scripts + 2 test files; also this handoff)
  • Lines added: ~1670 across all commits (per cumulative diff stats)
  • Tests added: 28 (14 per PR), all passing
  • Subagents engaged on Claude side: 0 (work was direct edits + Codex collaboration via MCP)
  • Codex chat turns: 3 (initial findings request, fix-plan request, Cluster 3 draft request)
  • Mutual hallucinations caught + retracted: 1 (the build_site/wikisite/ drift claim)