67%

Verify the landed verification floor, then measure distance to green

The fail-closed verifier gate is ALREADY LANDED (harness v112, “verification gates (false-green closed)”): scripts/test_all_runtime/verification_env.py:load_verification_env raises FileNotFoundError on an absent SSOT, and execution_process.action_env injects ORI_VERIFY_ARC=1 / ORI_VERIFY_EACH=1. Executed falsifier: pytest scripts/test_all_runtime/tests/test_verification_env.py => 5 passed.

Section scope, in three parts:

  • VERIFY that landed behavior against current bytes. It does NOT re-implement the gate.
  • Clean the stale semantic surface still describing the default path as false-green.
  • Record the failure inventory the later sections drive to zero.

Section ordering is the user’s binding constraint. The Lean work does NOT depend on this section; no dependency is claimed.

The sweep’s highest-value target is a truth repair, not a tidy-up

ORI_DISABLE_PREDICATE_STACK_RC is no longer a behavior switch anywhere in the compiler, while the registry doc still claims it is:

  • Exactly ONE std::env::var("ORI_DISABLE_PREDICATE_STACK_RC") read exists in all of compiler/ori_arc/src/aims/realize/rc_remark.rs:58, reached only via on_burden_sole_path, whose sole caller is RcRemarkStreamEnvelope::new (rc_remark.rs:99). Its whole effect: one tracing::info! plus the burden_path boolean on the RC-remark JSONL header.
  • ORI_RC_REMARKS is set nowhere under scripts/** or compiler_repo/scripts/**, so on the wrapper’s own AOT leg that header is never written. Setting the flag with ORI_RC_REMARKS unset changes nothing observable.
  • compiler/oric/src/debug_flags/aims_ablation_phase5_core.rs:42-45 states the flag is “Consumed in ori_arc::aims::realize::emit_unified … predicate-stack emission is suppressed”. emit_unified.rs + emit_unified/ contain ZERO reads (one doc comment in emit_unified/tests.rs:5).
  • diagnostics/check-debug-flags.sh validates only (1) every registered flag is used SOMEWHERE and (2) every raw env::var is registered. Both pass. Neither validates the Consumed in <module> claim, so the false claim is mechanically undetected.

Decide every sweep disposition against THAT measurement, never against the flag’s name. BUG-04-135 / BUG-04-132 (both resolved) confirm the flag once WAS behavioral, so the drift is real history — “rewrite as inert compatibility metadata” is the historically honest disposition, and “retain with a stated reason” requires WRITING the reason.

Negative filters — executable, consumed per sweep hit

Executable artifact: compiler_repo/diagnostics/sweep-negative-filter.sh (registered in diagnostics/README.md). Two protected surfaces, both measured live at authoring:

Protected surfaceLive filesRole
burden_lowering1 (compiler/ori_arc/src/aims/realize/emit_unified.rs)live unified lowering surface
ssa_alias_classes7live intraprocedural alias substrate
  • FLOOR, not equality: a surface growing is fine; shrinking below its floor FAILS. The failure mode being guarded is the sweep eating live code on a terminology match.
  • --is-protected PATH is the predicate the sweep consumes per hit: exit 0 means manual disposition is required and automatic deletion is BANNED.
  • Fails closed: missing rg, missing tree, or a usage error exits 2, never PASS. Preconditions are checked by the caller, never inside a command substitution — an exit 2 from a $(...) subshell degrades to an unclassified 1 in the parent.
  • Falsifier matrix (--self-test, 12/12): intact tree PASSES; a deleted burden_lowering FAILS; a gutted alias substrate FAILS; a grown surface PASSES; --is-protected accepts a protected file and rejects an unrelated one; both missing option values are ERROR 2 with a diagnostic; a missing tree is ERROR, never PASS; and a PRESENT rg that exits >1 is ERROR 2 on --check, --is-protected, and --list.
  • The query helpers are the shared count_symbol_files / list_symbol_files in diagnostics/_common.sh, used by both this filter and the absence proof — one implementation, not two.

Three fail-closed rules the query surface enforces, each of which was violated by an earlier form of these scripts:

  • A result travels in a GLOBAL, never on stdout through $(...). A subshell discards a non-zero exit and an empty capture silently becomes a zero count, and a zero is EVIDENCE in both consumers.
  • || true is BANNED on a scanner invocation. It converts a scanner failure into an empty match set, which made --is-protected answer not-protected for a protected file — the deletion ban inverting under error.
  • A helper restores the caller’s errexit instead of forcing it on. Forcing it aborted the caller on a legitimate non-zero return.

Do-not-touch surface — verify before every sweep pass

constrained_symbols: ssa_alias_classes, on_burden_sole_path, _aot_predicate_env, lower_burden_ops_to_rc, burden_lowering. A terminology hit inside any of these requires a manual disposition; automatic deletion is BANNED.

Deliverables

  • VERIFY the landed gate against current bytes instead of re-implementing it: assert load_verification_env raises on an absent SSOT, that action_env injects both verifier variables, and that the CI/SSOT parity pin holds. The caller set is CLOSED and the graph enumerates it exhaustively at high confidence — execution_process.action_env is the SOLE production caller plus three test callers — so three assertions ARE the complete set; there is nothing to widen to.
  • Confirm the landed reverted-fix falsifier still FAILS when the required verifier input is removed. If it passes when reverted, THAT is the defect to fix.
  • Record the test-all failure inventory as the plan’s live progress READING, NOT as an accepted floor. The mission gate is absolute zero — Overall: passed with failed=0, skipped=0, lcfail=0, aot_leaks=0, rc_leak_tests=0, process_leak_tests=0, Infrastructure failures: 0, verifier gate ACTIVE — so this inventory measures distance-to-green and shrinks every section; it never licenses a surviving failure. Record it through the runtime’s structured envelope, never a hand-tallied count.
  • Sweep the stale semantic surface — the flag name ORI_DISABLE_PREDICATE_STACK_RC, predicate-stack terminology, false-green / default-path claims, burden-only / gated-probe claims, setter and reporting code, debug help, and tests. Every live hit gets a classified disposition (delete / rewrite as inert compatibility metadata / retain with a stated reason). No silent skips.
  • Keep the deleted-emitter-symbol query (class_payload_of, emit_burden_ops, eliminate_burden_ops) as a SEPARATE absence proof. It returns 0 files by design and is never the work list — keying cleanup on it would sweep nothing while reporting a clean sweep.
  • Protect live code the terminology match must not touch (both filters measured). The sweep must not delete working code.
  • Land a post-change detector whose reverted-fix mutation REINTRODUCES a stale semantic claim and FAILS. Without it the cleanup is unpinned.

Sweep — in progress, re-measured this pass

Re-measured, inheriting no count. Every scope but one DRIFTED, which is why the item bans inheritance:

ScopeRecordedRe-measured
compiler_repo by flag name2323
compiler_repo by terminology3839
wrapper executables (scripts/**)513
AI-seam (.claude/** + CLAUDE.md)89

compiler_repo terminology hits by area: 17 compiler-source, 9 aims-proof, 6 diagnostics, 4 repo-scripts, 2 tests, 1 docs.

Dispositions applied this pass

  • compiler/oric/src/debug_flags/aims_ablation_phase5_core.rs — REWRITE AS INERT COMPATIBILITY METADATA + RETAIN WITH STATED REASON. The doc claimed the flag is “Consumed in ori_arc::aims::realize::emit_unified” and that it suppresses predicate-stack emission. Both false against current bytes: the sole env::var read is rc_remark.rs:58, emit_unified.rs and emit_unified/ contain ZERO reads, and ORI_RC_REMARKS is set nowhere in either scripts tree. Rewritten to name the real consumer and state the retain reason (keeping burden_path truthful on a gated remark stream). check-debug-flags.sh exits 0 before AND after — it structurally cannot see this class, which is precisely w-54ef47ad’s target.
  • Every file touched was first passed through sweep-negative-filter.sh --is-protected (H18 consumed): all reported sweepable; none protected.
  • ori_arc/src/aims/realize/rc_remark.rs, diagnostics/aot-guardrail.sh, oric/src/commands/build/mod.rs, ori_llvm/tests/aot/option_inner_rc_walk.rs, ori_llvm/tests/aot/closure_fold_edge_dec_probe.rs — REWRITE. Each asserted a second emitter, a masked leak, or a default-path verdict gap. rg -i 'false.green' over compiler/, diagnostics/, scripts/ returns zero.
  • scripts/ub-safety/README.md, scripts/ub-safety/coverage-matrix.json (2 rows) — REWRITE. Both asserted “the only valid RC/AOT verdict is the gated burden-sole probe; a default-path result is never a verdict”. The verdict belongs to the verifier (ORI_VERIFY_ARC / ORI_VERIFY_EACH) plus a leak check.
  • diagnostics/rc-stats.sh (2 sites), ori_llvm/tests/aot/class_ledger_skeleton.rs — REWRITE. Verdict attribution moved from the RC-disable flag to the verifier vars.
  • diagnostics/aot-guardrail.sh, diagnostics/rc-stats.sh, diagnostics/burden-balance.sh, scripts/ub-safety/README.md, scripts/ub-safety/coverage-matrix.json — wrapper-ref strip (H22). rg 'arc\.md' over compiler/, diagnostics/, scripts/ returns zero.
  • compiler/oric/tests/dump_orchestrator_baseline.rs (BUG-02-090), ori_llvm/tests/aot/drop_augment.rs (BUG-05-006) — RETAIN WITH STATED REASON. Both IDs verified OPEN in the tracker; compiler-ops.md admits an open BUG-XX-NNN as a compiler-source-comment external pointer.
  • docs/ori_lang/proposals/approved/aims-burden-tracking-proposal.md — RETAIN, MECHANICALLY BLOCKED. Carries ~30 wrapper refs (.claude/rules/*, bug-tracker/plans/, BUG-XX-NNN). Approved proposals are hook-locked (scripts/proposal_lock.py); remediation is a governed proposal amendment, not a sweep edit.
  • ori_llvm/tests/aot/corpus_under_flag_gate.rs, tests/spec/traits/associated_type_projection_return.ori — RETAIN WITH STATED REASON. Their “masks” / “false green” text describes count-vs-set comparison discipline and diagnostic poison-suppression, neither of which is the flag class.

Adjacent defects repaired this pass

  • scripts/ub-safety/coverage-matrix.json pin never_struct_field_rejected named integration_tests.rs; the test moved to integration_tests/type_declarations.rs during a file split. ub-coverage-check.py --strict was RED on a dangling pin. Repointed; GREEN, and a reverted-pin falsifier exits non-zero, so the checker genuinely detects it.
  • Five .ori test headers carried Spec: 15-memory-model.md § Compile-Time Cycle Prevention plus Design: 04-memory-management/02-arc.md § Cycle Detection. The design path does not exist, the spec anchor does not exist, and 15-memory-model.md now resolves to the unrelated 15-patterns.md. Repointed to Spec: Clause 21.6 / Clause 21.1.4, the canonical form compiler-ops.md admits.

Measured: the flag has ZERO effect on emitted RC

Falsifier executed rather than reasoned about — compile a fixture twice, with and without ORI_DISABLE_PREDICATE_STACK_RC=1, and diff the emitted ARC IR:

FixtureRC ops default / gatedRC-stream diff
tests/spec/codegen/tail_call_test.ori32 / 32IDENTICAL
tests/spec/codegen/block_merge_test.ori16 / 16IDENTICAL

The full ARC dump differs only by wall-clock timestamp and output filename. Converging mechanism evidence: no emission path reads the flag; emit_rc_unified carries only after_phase_7_burden_lowering and after_phase_3_coalesce where five predicate-stack phases are documented; RC instructions are constructed only on the burden-lowering path.

Two stale-claim candidates follow from this and are NOT yet dispositioned:

  • compiler/ori_arc/src/aims/realize/rc_remark.rs:51 — “a default-path run still co-emits the legacy predicate-stack RC and is false-green on floor cells”.
  • diagnostics/aot-guardrail.sh:38-39 — “a plain cargo test/ori build runs the DEFAULT path (predicate stack emits RC) where floor cells PASS (false-green)”.

SETTLED adversarially before any claim was swept:

  • Corpus-wide falsifier executed independently — two fresh aot-guardrail.sh --no-build runs, default env vs ORI_DISABLE_PREDICATE_STACK_RC=1, each 3081 pass / 46 fail with zero aborts.
  • Sorted failing-ID sets compared byte-for-byte and by comm -3: exactly identical, neither set holding an exclusive id.
  • Corpus equality alone proves only equal verdict sets. The CLOSED reader set proves the stronger mechanism claim: the flag cannot alter RC emission.

Dispositions applied on that authority (each file --is-protected-checked first, all sweepable):

FileDisposition
ori_arc/src/aims/realize/rc_remark.rsrewrite — flag documented as remark metadata, not an emitter selector
diagnostics/aot-guardrail.shrewrite — floor reading attributed to ORI_VERIFY_ARC/ORI_VERIFY_EACH
oric/src/commands/build/mod.rsrewrite — gating comment corrected
ori_llvm/tests/aot/option_inner_rc_walk.rsrewrite — verdict attributed to verification + leak check
ori_llvm/tests/aot/closure_fold_edge_dec_probe.rsrewrite — masking-second-emitter claim removed

rg -i 'false.green' over compiler/, diagnostics/, scripts/ now returns zero hits. cargo check -p ori_arc -p oric and -p ori_llvm --tests both exit 0.

Sweep enumerator — three scopes, re-measured every pass

The count is NOT frozen and NOT inheritable. Live measurement at authoring (rg, target/ excluded), superseding the earlier 20/21 figures which do not reproduce:

ScopeDefinitionFiles @authoringFiles @re-measureDisposition class
compiler_repo code + proof corpusflag name2323behavioral; full disposition
compiler_repo code + proof corpusterminology3846behavioral; +23 over name-only
wrapper executableseither520behavioral; full disposition
AI-seam rules/skills/CLAUDE.mdeither812text-only direct edit per tooling-first.md §0.A
  • Every count except the flag-name scope drifted from the authored figures. Re-measure is not optional bookkeeping; three of four scopes were understated.
  • The terminology scope is measured with predicate.stack|false.green|burden.only|burden.sole|gated.probe, which is broader than the authored predicate.stack|predicate_stack and accounts for the +8.
  • Aggregate behavioral surface at re-measure: 23 + 20 = 43 files; plus 12 AI-seam = 55.
  • Most hits are LEGITIMATE: the flag still exists as retained inert metadata, so naming it as probe env or test fixture is truthful. The dispositionable subset is the falsified-claim + public-leak set, isolated by the four scans recorded above.
  • The plan/bug corpus (~350 further files: historical .intel.md sidecars, archived section bodies, .completion-evidence/*.json, plan.json bodies) is HISTORY, never a sweep target. plans/aims-burden-tracking/ is SUPERSEDED — its 121-hit plan.json and 41-hit status.md are history.
  • Re-measure before the sweep; do not inherit 20, 21, 23, 28, 36, or 38.
  • The verify surface and the sweep surface SHARE a file: test_aot_leg_carries_predicate_disable (test_verification_env.py:64-69) is a legacy-surface hit living inside the falsifier the reverted-fix item re-runs. Budget the two together.

Two env-injection funnels — do not add a third

  • action_env composes env = os.environ.copy(); env.update(...) and RETURNS a dict.
  • compiler_execution._aot_predicate_env (compiler_execution.py:42-46) is the flag’s live SETTER; its caller mutates the PROCESS environment in place (os.environ.update(...) at compiler_execution.py:232).
  • Two structurally different shapes already exist. A sweep-introduced THIRD env-composition path is the violation (SSOT-18 / SSOT-03). The os.environ.update global-mutation hazard is noted here and NOT fixed by this section.

Absence proof — its measured blind spot

Executable artifact: compiler_repo/diagnostics/predicate-stack-absence.sh (registered in diagnostics/README.md). It is the SEPARATE absence proof, never the sweep’s work list.

  • Positive control is the load-bearing half: the run asserts the SAME query finds ssa_alias_classes live (7 files) BEFORE accepting any zero. A control of 0 FAILS, because an absence check without one passes identically whether the symbols are gone or the scan never ran — the exact “sweep nothing while reporting a clean sweep” failure.

  • Falsifier matrix (--self-test, 8/8 passing), including a PRESENT rg that exits >1, which must be ERROR 2 rather than a fabricated control failure. Proof semantics: clean tree PASSES; a resurrected class_payload_of FAILS; a tree where the scan finds nothing at all FAILS rather than reporting a clean sweep; a missing tree is ERROR, never PASS. CLI contract, driven through the real argument parser as a subprocess: --compiler-dir selects a clean fixture (0) and a resurrected fixture (1), proving the flag selects the REQUESTED tree; a missing --compiler-dir value is ERROR 2 with a usage diagnostic, never a bare 1.

  • Live verdict: control ssa_alias_classes 7 files; class_payload_of / emit_burden_ops / eliminate_burden_ops 0 files each; exit 0.

  • ssa_alias_classes is the CONTROL, never a member of the absence set.

  • class_payload_of, emit_burden_ops, eliminate_burden_ops: 0 in compiler source — the proof holds, by design.

  • emit_burden_path_probe_tail: 0 everywhere, while arc.md §STOP still lists it.

  • ssa_alias_classes — named in that SAME §STOP legacy clause — is LIVE in 7 compiler files and load-bearing in the intraprocedural alias substrate.

  • Do NOT extend the absence-proof symbol set to ssa_alias_classes; its liveness is a real dependency, not residue.

Detector shape — the one design element that survives refutation

  • Extend check-debug-flags.sh with a Consumed in <module> claim-vs-read-site cross-check. NEVER author a parallel lint (SSOT-18); the section’s own hygiene constraints already ban a third lint path here.
  • Assert the NEGATIVE direction: a reverted-fix mutation that re-introduces a diverged Consumed in <module> claim MUST FAIL. A positive-only detector pins nothing — every high-pain prior instance is a case where the positive path looked fine while a configuration made the check vanish.
  • Frame it as the mirror half of BUG-07-005 (resolved: “env var read but not registered”). This section’s finding is the opposite direction — registered, with a documented consumer that does not read it — and check-debug-flags.sh structurally cannot see it.
  • REFUTED and out of scope: moving the read into a debug_flags-owned named predicate. ori_arc cannot depend on oric (aims_ablation_phase5_core.rs:51); that inverts a crate dependency (PHASE-01 / PHASE-02). A retained toggle needs an ori_arc-LOCAL named predicate plus the registry cross-check, not a moved read.
  • REFUTED and out of scope: importing a compiler-side verifier default-flip. This section does not re-implement the gate.
  • python -m scripts.test_all_runtime run once, then the exact emitted blocking status_command once. Never poll, never loop.
  • NEVER invoke compiler_repo/test-all.sh (hook-denied; its full-looking summary is inadmissible as an agent verdict). NEVER read/grep/tail compiler_repo/test-all.log (human-only). This IS the “structured envelope, never a hand-tallied count” rule.
  • compiler_repo/diagnostics/aot-guardrail.sh --floor is the surface that distinguishes a STALE baseline entry (cell now passes under the gated env -> prune) from a LIVE floor cell. That distinction is what separates “distance to green” from “accepted floor”.

Failure inventory — live progress reading, NOT an accepted floor

Source: the test-all runtime’s structured terminal envelope. No hand-tallied count; no test-all.log read; no test-all.sh invocation.

FieldValue
run_id1785090912595370643-b32992e4
head_shaaed43969fa1f817a5b4d41c0c9575efa8b1ed8d7
timestamp2026-07-26T18:44:42Z
scope / terminal_phase / overallfull / complete / failed
schema_version4
summary.jsoncompiler_repo/build/test-all-snapshots/snap-aed43969fa1f/build/test-all-runs/1785090912595370643-b32992e4/summary.json
prior run compared1785081992780677315-fc073aa5; every metric (=)

Mission-gate metric set — distance to zero

MetricGateReading
Overallpassedfailed
failed0380
skipped00
lcfail0334
aot_leaks00
rc_leak_tests00
rc_leaked_allocations00
process_leak_tests00
Infrastructure failures00
verifier gateACTIVEACTIVE (ORI_VERIFY_ARC=1 + ORI_VERIFY_EACH=1 injected by action_env)
dispositions00 (observed_skipped 0, declared_skipped 0)
  • passed=24972.
  • Green suites: rust_workspace (9792), ori_interp (5642), rust_llvm (678), rust_rt (409), rust_doctest (62).
  • wasm_playground: not_applicable — playground source lives in the website repo.

Red suites and their execution env

SuitefailedlcfailEnv the leg ran under
aot (AOT integration tests)460gated floor env: ORI_DISABLE_PREDICATE_STACK_RC=1 (compiler_execution._aot_predicate_env) + ORI_VERIFY_ARC=1 ORI_VERIFY_EACH=1
ori_llvm (Ori spec, LLVM backend)334334verifier gates only; DEFAULT emission path (no predicate-stack disable)

The aot leg’s env is byte-equivalent to aot-guardrail.sh --floor’s METRIC CONTRACT, so this envelope IS the gated-floor reading. VERIFIED independently, not assumed: an executed aot-guardrail.sh --floor --no-build run under the exact gated env produced 3081 passing / 46 failing with zero build aborts, and its normalized failing-ID set equals this run’s 46 aot test_ids exactly (floor_only=[], recorded_only=[]); exit 1 is the expected guardrail result against the empty baseline.

Failure-record fold — 401 records, ONE root cause

failure_count 401 decomposes /calc-verified: 46 + 355 = 401 records; 46 + 334 = 380 counted test failures; ori_llvm’s 355 records are 334 + 21 (llvm_compile_fail + file_error, the latter uncounted in failed).

failure_kindRecordsSuite
test_failure (error[E5001] LLVM module verification failed)46aot
llvm_compile_fail334ori_llvm
file_error21ori_llvm
  • 401 of 401 records carry ContractCoherenceViolation. THREE mismatch variants occur, not one. Counting unit is stated per row because the two units differ.
Mismatch variantInstances inside mismatches[]Records mentioning it
EffectMismatch458350
ParamAccess10058
ParamMayShare1110
total569418 (records double-count on co-occurrence)
  • Record-level partition (/calc-verified 333 + 41 + 17 + 10 = 401): 333 EffectMismatch only, 41 ParamAccess only, 17 carrying BOTH, 10 ParamMayShare only. Instance total is /calc-verified 458 + 100 + 11 = 569.
  • These instance counts are IDENTICAL to s-76425fbc’s recorded 458 EffectMismatch + 100 ParamAccess + 11 ParamMayShare. The two enumerators agree; the shared counting unit is mismatch instances inside mismatches[].
  • 46 distinct violating func_names; heaviest: string_coalesce (72), match_preserving_list (63), struct_with_literals (44), _use_animal / _use_condition / _use_message / _use_myoptional (36 each).
  • Derive this fold mechanically from summary.json; never from a hand-listed variant alternation. A regex enumerating guessed variant names silently reports the variants it happened to name and hides every one it omitted.
  • This is the VF-6 contract/realization coherence surface. Ownership: s-76425fbc contract-coherence-zero (the coherence target) and s-6bfc337b bug-04-299-resolved. This section RECORDS the reading; it does not fix the violation.

STALE-baseline vs LIVE-floor discrimination

compiler/ori_llvm/tests/aot/fixtures/corpus_under_flag_gate/baseline_failing_ids.txt carries ZERO id lines (31 lines, all comments). Its own gate semantics: “failing_ids_under_flag MUST be a SUBSET of this set”; “the terminal target is the EMPTY set”; “shrink-only”.

  • Baseline set = the empty set => ZERO accepted floor cells. Consistent with arc.md §STOP recording the aot-guardrail.sh --floor gate as MET.
  • Therefore NONE of the 46 gated-floor aot failures is a STALE baseline entry and NONE is a LIVE accepted floor cell. All 46 are NEW against the baseline: distance to green.
  • The file’s trailing comment counts (72-cell floor, 47->46) describe historical pruning, not the operative set. The operative set is empty.

Reading discipline for every consumer of this block

  • This inventory measures distance-to-green and shrinks every section. It NEVER licenses a surviving failure.
  • Re-measure through python -m scripts.test_all_runtime run + the emitted blocking status_command; inherit no count from this block.
  • A default-path (ori_llvm) reading is not an RC/AOT floor verdict per arc.md §STOP; the aot row is. ContractCoherenceViolation fires on both paths because it is a VF-6 contract/realization check, not an RC-balance check.

Diagnostic-question log

  • 2026-07-26 workflow-engine: does the discussion-consensus gate need /tp-discuss --target <plan-dir>? — answered: NO. After discussion_coverage ensure-host binds the plan-host discussion, re-serving the root emits now.command_sequence carrying block-until-consensus --discussion <bound host path> --mode mutual. The always-on pairing.tp_discuss rail (enforcement: informational) is for AD-HOC pairing and mints a sibling topic-discussion by design; it is not the gate’s command. Running the advisory instead of re-serving minted an unregistered discussions/03-discussion (removed). No executable defect; the cure is the existing rails.reanchor discipline — re-serve after a gate command mutates state. /improve-tooling run 1785091976-5fc70d38 opened on the falsified premise and left unadvanced.

Ownership coordination — pick one reading explicitly

aims-provenance-ledger#s-ee6e96e4 predicate-stack-deletion is COMPLETED and owns the deletion of this surface, while the flag’s reader, its setter, and its stale registry doc all survive. Read plans/aims-provenance-ledger/content/predicate-stack-deletion--s-ee6e96e4.md IN FULL, then record which reading holds:

  • The completed scope was the EMITTER (all four symbols verified 0) and the surviving reader is deliberately-retained observability -> this section WRITES the retain-reason and fixes the false Consumed in claim.
  • The completed scope included the toggle and the survivors are residue -> closing them is aims-provenance-ledger work; the route is coordination, not absorption.

arc.md §STOP makes §S08 a deletion-inventory REFERENCE, never an authorization gate, and predicate-stack code is deleted on sight per CLAUDE.md §ZERO DEFERRAL. load_verification_env / verification_env_path / action_env carry ZERO plan or bug references — this section is the first artifact documenting the gate, so the verification record must be DURABLE, not a transient check.

Hygiene constraints inherited by this work

  • Scope split: scripts/test_all_runtime/** Python, .claude/** text, and compiler_repo/diagnostics/*.sh are TOOLING — the deep compiler matrix (TDD matrix, dual-exec parity, cross-phase invariants) is N/A. The sweep’s compiler_repo/compiler/** Rust touches (rc_remark.rs, aims_ablation_phase5_core.rs) ARE compiler source and carry the full families.
  • Softening the loader’s FileNotFoundError to a default-{} return is the canonical INVERTED-TDD shape (TEST-01 / TEST-05): a gate whose required input is absent must stay distinguishable from a gate that PASSED.
  • No second hardcoded ORI_VERIFY_* literal anywhere (SSOT-01 / SSOT-04); test_ci_yml_pins_verification_env is the existing anti-shadow pin — keep it.
  • Fixing the doc sentence without extending the gate leaves the class open one layer out (CLAUDE.md §Close the Class, Not the Instance): prefer making the bad state unrepresentable over fixing one sentence.
  • When rewriting false-green prose in AI-seam files, do not reintroduce dated/historical narrative (STRUCTURE:rationale-prose; skill-vocabulary.md §3).
  • rc_remark.rs:145 + :236 carry #[expect(dead_code, reason="…emission-seam sibling section")] with bug_id=null. Both are the preferred #[expect] form with a real reason; the SPEC-60 audit question the sweep’s write-up must answer is whether “the emission-seam sibling section” still names a live plan section.
  • Out of scope, note-only: the RcRemarkOp::as_str ~ RemarkKind::as_str duplication twin (score 0.954) belongs to the RC-remark schema, not the verification floor.

Evidence-trust constraints

  • direct_tests: 0 on every scoped symbol (both estates) is a FACET ARTIFACT (test_topology_stale: true; Python TESTS/COVERS edges not derived). The gate IS pinned five ways — four high-confidence test->production edges into load_verification_env plus one into _aot_predicate_env. Reporting a LAYER_GAP from that row is INTEL_BYPASS:unverified-graph-nomination.
  • A 0-row result from a STALE facet is UNKNOWN, never clean: surprise-coupling, callable-risk, MISSING_ABSTRACTION, and platform history-coupling all returned stale 0-row. A 0-row result from the FRESH code facet (hidden cross-module callers of verification_env.py) IS trustworthy.
  • Churn and community are DARK for exactly the newly-landed gate symbols (insights_stale: true; hotspot_score / blast_radius / community_leiden NULL for load_verification_env, verification_env_path, _aot_predicate_env, all rc_remark::*). Compensate with the post-change detector, NOT with churn-guided caution.
  • rc_remarks_stale: true — use the live producers, never the graph’s ingested rc-survivors / rc-cause-rank copies.
  • The one co-change pair (rc_remark.rs ~ emit_unified.rs, support=3, stale) says an edit to the reader historically drags in the very file the negative filter protects. Treat as a nomination; let the negative filter arbitrate.
  • Refresh (scripts/intel-query.sh refresh --code --wait-derived) before ANY decision that depends on churn, community, drift, or co-change.

Ordered execution entry points

  1. scripts/test_all_runtime/verification_env.py (32 lines, whole file) — fail-closed raise at :19-21.
  2. scripts/test_all_runtime/execution_process.py:158-193action_env; SSOT merge at :193.
  3. scripts/test_all_runtime/tests/test_verification_env.py (69 lines, whole file) — all five pins, including the legacy hit at :64-69.
  4. compiler_repo/scripts/test_all/verification.env + compiler_repo/.github/workflows/ci.yml env: — the SSOT and its CI parity pin.
  5. compiler/oric/src/debug_flags/aims_ablation_phase5_core.rs:37-47 — the stale Consumed in emit_unified claim; the single highest-value sweep hit.
  6. compiler/ori_arc/src/aims/realize/rc_remark.rs:36-71, then :83-113 — sole reader, sole caller.
  7. scripts/test_all_runtime/compiler_execution.py:42-46 and :228-233 — sole setter, second env funnel.
  8. compiler_repo/diagnostics/check-debug-flags.sh:1-25 — the header defines exactly what the detector must extend.
  9. plans/aims-provenance-ledger/content/predicate-stack-deletion--s-ee6e96e4.md — read in full; resolves the ownership reading.
  10. .claude/rules/arc.md §STOP §PREDICATE STACK IS LEGACY — the standing directive; note it still lists emit_burden_path_probe_tail (0 hits) and ssa_alias_classes (7 live).
  11. compiler/ori_arc/src/aims/realize/emit_unified.rs:1-25 — confirm burden_lowering is the 1-file live surface and reads no flag.
  12. BUG-07-005 (resolved) — read before designing the detector.
  13. Re-measure the enumerator; inherit no count.

Work Items

  • VERIFY the landed fail-closed gate against current bytes rather than re-implementing it: assert load_verification_env raises on an absent SSOT, that action_env injects both verifier variables, and that the CI/SSOT parity pin holds. The caller set is CLOSED and graph-enumerated — execution_process.action_env is the SOLE production caller plus three test callers — so three assertions ARE the complete set.
  • Confirm the landed reverted-fix falsifier still FAILS when the required verifier input is removed. If it passes when reverted, THAT is the defect to fix.
  • Record the test-all failure inventory as the plan’s live progress reading, NOT as an accepted floor. The mission gate is absolute zero — Overall: passed with failed=0, skipped=0, lcfail=0, aot_leaks=0, rc_leak_tests=0, process_leak_tests=0, Infrastructure failures: 0, verifier gate ACTIVE — so this inventory measures distance-to-green and shrinks every section; it never licenses a surviving failure. Record it through the runtime’s structured envelope, never a hand-tallied count. aot-guardrail.sh --floor is the STALE-baseline vs LIVE-floor discriminator.
  • Keep the deleted-emitter-symbol query (class_payload_of, emit_burden_ops, eliminate_burden_ops) as a SEPARATE absence proof. It returns 0 files by design and is never the work list — keying cleanup on it would sweep nothing while reporting a clean sweep. Do NOT extend the symbol set to ssa_alias_classes: it is named in the same arc.md STOP legacy clause but is LIVE in 7 compiler files and load-bearing in the intraprocedural alias substrate.
  • Explicit negative filter protecting the live unified burden_lowering (1 file
  • Two explicit negative filters protecting live code the sweep’s terminology match must not touch: (1) the live unified burden_lowering (1 file measured: compiler/ori_arc/src/aims/realize/emit_unified.rs). (2) the live ssa_alias_classes intraprocedural alias substrate (7 files measured: state_map.rs, state_map/aliases.rs, apply_aliases.rs, ssa_alias_classes.rs, mod.rs, state_map/types.rs, ir/repr.rs) — named in the same arc.md STOP legacy-path clause as the deleted predicate-stack symbols but NOT covered by the w-73169eb8 absence proof and NOT legacy: it is load-bearing today. The sweep must not delete, rename, or gut either surface on a terminology match alone; a sweep hit inside either file requires manual disposition, never automatic deletion.
  • Sweep the stale semantic surface. The ENUMERATOR is the legacy SEMANTIC surface — the flag name ORI_DISABLE_PREDICATE_STACK_RC, predicate-stack terminology, false-green / default-path claims, burden-only / gated-probe claims, setter and reporting code, debug help, and tests. RE-MEASURE every pass; inherit no count. Live measurement at authoring superseding the earlier 20/21 figures which do not reproduce: 23 compiler_repo files by flag name, 38 by predicate-stack terminology, plus 5 wrapper executables and 8 AI-seam files (text-only per tooling-first.md §0.A); the ~350-file plan/bug corpus is history, never a sweep target. Every live hit gets a classified disposition (delete / rewrite as inert compatibility metadata / retain with a stated reason). No silent skips.
  • Post-change detector extending check-debug-flags.sh (never a new parallel lint) with a Consumed in <module> claim-vs-read-site cross-check: for every debug flag whose doc comment names a specific consuming module — concretely, the ORI_DISABLE_PREDICATE_STACK_RC doc at compiler/oric/src/debug_flags/aims_ablation_phase5_core.rs:42-45 claiming it is ‘Consumed in ori_arc::aims::realize::emit_unified’ when the sole std::env::var("ORI_DISABLE_PREDICATE_STACK_RC") read lives in compiler/ori_arc/src/aims/realize/rc_remark.rs:58 — assert the documented consumer module matches the module containing the flag’s actual read site(s). A reverted-fix mutation that restores a diverged Consumed in <module> claim (or reintroduces any other stale semantic claim the sweep removed) MUST FAIL the detector; without it the cleanup is unpinned.

Intel dossier — pointer and tier disposition

Dossier: trustworthy-llvm-verification-floor--s-c299379d.intel.md (this section’s content/intel/ sidecar)

Read that dossier from line 1 through EOF before acting on this section. This block is a pointer and an audit record, never a substitute: not the BLUF, not a summary, not selected tiers.

Dossier tierTitleLinesDispositionWhere / why
00. Bottom line up front34integratedNew heading ’## The sweep’s highest-value target is a truth repair, not a tidy-up’ — the flag’s sole read site, the sole caller, the unset ORI_RC_REMARKS consequence, the false ‘Consumed in emit_unified’ claim, and check-debug-flags.sh’s structural blindness; plus new heading ’## Do-not-touch surface — verify before every sweep pass’ carrying the constrained_symbols set as a manual-disposition requirement.
11. The section, verbatim27integrated’## Deliverables’ rebuilt (its bullets had lost their heads and read as orphaned fragments) so each deliverable states its own load-bearing constraint; the inventory bullet now names the mission gate’s exact metric set (failed/skipped/lcfail/aot_leaks/rc_leak_tests/process_leak_tests/Infrastructure failures, verifier gate ACTIVE) instead of the vaguer ‘absolute zero’.
22. Terrain — symbols, files, and the measured sweep enumerator68integratedNew heading ’## Sweep enumerator — three scopes, re-measured every pass’ (table of the four measured scopes, the 20/21 figures marked non-reproducing, plan/bug corpus excluded as history, aims-burden-tracking marked superseded, verify/sweep shared-file fact); new heading ’## Absence proof — its measured blind spot’ (four symbols at 0 vs ssa_alias_classes live in 7 files, with the do-not-extend directive).
33. Code-graph recon139integrated’## Deliverables’ verify bullet now states the caller set is CLOSED and graph-enumerated (sole production caller + three test callers = the complete three assertions, nothing to widen to); new heading ’## Two env-injection funnels — do not add a third’ (copy-and-compose vs os.environ.update process mutation at compiler_execution.py:232); ’## Evidence-trust constraints’ carries the dark churn/community tiers and the compensate-with-the-detector directive.
3D3D. Diagnostic / observability surface29integratedNew heading ’## Inventory route — one legal source, one discriminator’ — run-once-then-status_command-once, the test-all.sh and test-all.log hard bans as the source of the structured-envelope rule, and aot-guardrail.sh —floor named as the STALE-baseline vs LIVE-floor discriminator that separates distance-to-green from accepted floor.
3H3H. Hygiene constraints the downstream work inherits37integratedNew heading ’## Hygiene constraints inherited by this work’ — the tooling-vs-compiler-source scope split, the FileNotFoundError-softening INVERTED-TDD shape, the no-second-ORI_VERIFY_*-literal rule, close-the-class over fix-one-sentence, the AI-seam no-dated-narrative constraint, the two #[expect(dead_code)] SPEC-60 audit question, and the out-of-scope as_str duplication twin.
44. Cluster / family — the related-work graph41integrated’## Detector shape’ bullet framing it as the mirror half of BUG-07-005 (registered-with-non-reading-consumer vs read-but-unregistered); ’## The sweep’s highest-value target’ closing paragraph cites BUG-04-135/BUG-04-132 as evidence the flag once WAS behavioral, making ‘inert compatibility metadata’ the historically honest disposition and ‘retain with a stated reason’ a write-the-reason obligation.
55. Conformance audit — MISSING_ABSTRACTION / SIBLING_DIVERGENCE18integrated’## Evidence-trust constraints’ — the stale-facet-0-row-is-UNKNOWN vs fresh-code-facet-0-row-is-trustworthy split (naming surprise-coupling, callable-risk, MISSING_ABSTRACTION, platform history-coupling as stale-0 and the hidden-caller result as fresh-0); ’## Hygiene constraints’ final bullet records the one drift nomination as note-only, out of scope.
66. Plan ownership — who owns this code now29integratedNew heading ’## Ownership coordination — pick one reading explicitly’ — the completed aims-provenance-ledger#s-ee6e96e4 owning the deletion while reader/setter/doc survive, the two readings as an explicit either/or the section must record, §S08 as reference not authorization gate, the read-in-full precondition, and the zero-plan-reference fact making the verification record DURABLE rather than transient.
77. Prior art — the fail-closed-verifier problem class, solved elsewhere45integrated’## Detector shape — the one design element that survives refutation’ — the check-debug-flags.sh extension with the claim-vs-read-site cross-check as the single surviving element, plus both refutations recorded as out-of-scope: the ori_arc-cannot-depend-on-oric crate-dependency inversion (so an ori_arc-LOCAL named predicate, never a moved read) and the compiler-side default-flip.
88. Sentiment — community heat around the terrain23integrated’## Detector shape’ negative-direction bullet — the detector MUST assert that a reintroduced stale claim FAILS, with the raised-pin-bar reason that every high-pain prior instance had a fine-looking positive path while a configuration made the check vanish; ’## Ownership coordination’ makes the verification record durable so the harness-injection position is not re-litigated.
99. Declared coverage gaps — what is dark and why31integrated’## Evidence-trust constraints’ in full — direct_tests:0 as a FACET ARTIFACT with the five-way pinning and the INTEL_BYPASS:unverified-graph-nomination label for reporting a LAYER_GAP from it, rc_remarks_stale forcing live producers over the graph copy, the stale co-change pair as nomination-only, and the refresh-before-deciding precondition.
1010. Recommended recon entry points (ordered read path)20integratedNew heading ’## Ordered execution entry points’ — the 13-step read path with its line anchors, ending on the re-measure-the-enumerator-inherit-no-count directive that also anchors ’## Sweep enumerator’.