feat(governance): re-promote ierd-phase0-yana-response → ANCHORED with INV-IERD-PHASE0#560
Conversation
…h INV-IERD-PHASE0 Yesterday's PR #559 honestly downgraded ierd-phase0-yana-response and ricci-microstructure-ten-axis-falsification from ANCHORED to EXTRAPOLATED because neither carried a v3 falsifier-block under the ADR 0021 shape. This PR closes the first one — the claim has a clean documentation-coverage falsifier surface that compresses to a single pytest node. After this PR: ANCHORED: 19 → 20 EXTRAPOLATED: 8 → 7 Falsifier coverage: 19/19 → 20/20 ANCHORED Registry: 95 → 96 (INV-IERD-PHASE0 added) ricci-microstructure-ten-axis-falsification stays EXTRAPOLATED; re-promoting it requires actually re-running the 10-axis battery from a single pytest node — research-debt, not governance-debt. What ---- * tests/governance/test_ierd_phase0_yana_response_coverage.py — 4 tests asserting the contract surface from a single pytest module: Q1..Q7 headings present in docs/yana-response.md each Q-section opens with `**Tier: <T>**` marker docs/adr/0020-ierd-adoption.md has substantive `## Decision` scripts/ci/lint_forbidden_terms.py runnable, exits 0 (warn mode) * .claude/physics/INVARIANTS.yaml — INV-IERD-PHASE0 (universal, ANCHORED, runtime_evaluable). References: Popper (1959) — claim → falsifying-test pairing as the demarcation criterion behind ADR 0021 Lakatos (1970) — progressive vs degenerative shift, the tier ladder ANCHORED/EXTRAPOLATED/.../UNKNOWN derives from this IERD-PAI-FPS-UX-001 (this repository) — the directive itself * docs/CLAIMS.yaml — ierd-phase0-yana-response promoted EXTRAPOLATED → ANCHORED with the v3 falsifier-block. * README.md, BASELINE.md, CLAUDE.md — count synced 95 → 96 across every load-bearing surface. * .claude/commit_acceptors/falsifier-ierd-phase0-promote.yaml — diff-bound acceptor; inverse-probe falsifier exits 0 (regression) iff the claim id reappears on the missing-falsifier WARN list. What this does NOT do --------------------- * Does NOT re-promote ricci-microstructure-ten-axis-falsification. That requires a real 10-axis programmatic battery, not a documentation-coverage test. Tracked as research-debt follow-up. * Does NOT touch any source under core/, application/, src/, geosync_hpc/, research/, or the ledger/lint scripts. Acceptor forbidden_paths excludes all of them — the PR is governance only. Local verification ------------------ pytest tests/governance/test_ierd_phase0_yana_response_coverage.py: 4/4 python scripts/count_invariants.py: 96 python scripts/check_invariant_count_sync.py: OK 96 python .claude/physics/validate_tests.py --self-check: PASSED python scripts/ci/check_claims.py: tier distribution: ANCHORED=20, EXTRAPOLATED=7 falsifier coverage: 20/20 ANCHORED python scripts/export_governance_schemas.py --check: PASS commit_acceptor validator: exit 0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7f959302cc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - scripts/ci/lint_forbidden_terms.py | ||
| - tests/governance/test_ierd_phase0_yana_response_coverage.py | ||
| falsifier: | ||
| test_id: tests/governance/test_ierd_phase0_yana_response_coverage.py::test_yana_response_covers_q1_through_q7 |
There was a problem hiding this comment.
Align falsifier test_id with the full failure signature
This claim declares that one pytest node falsifies all four contract surfaces, but falsifier.test_id points to ...::test_yana_response_covers_q1_through_q7, which only checks Q1–Q7 headings. Tier-marker, ADR Decision/length, and lint-exit regressions are checked in other test functions, so any process that runs the declared falsifier node will miss those failures and can keep the claim ANCHORED incorrectly.
Useful? React with 👍 / 👎.
Closes the first of two EXTRAPOLATED claims downgraded in PR #559. Adds a documentation-coverage falsifier (4 assertions in one pytest module) and a new INV-IERD-PHASE0 invariant.
After this PR:
ricci-microstructure-ten-axis-falsification stays EXTRAPOLATED (requires real 10-axis programmatic battery — research-debt, separate PR).
See commit message for full details. All gates green locally.