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 ofcompiler/—ori_arc/src/aims/realize/rc_remark.rs:58, reached only viaon_burden_sole_path, whose sole caller isRcRemarkStreamEnvelope::new(rc_remark.rs:99). Its whole effect: onetracing::info!plus theburden_pathboolean on the RC-remark JSONL header. ORI_RC_REMARKSis set nowhere underscripts/**orcompiler_repo/scripts/**, so on the wrapper’s own AOT leg that header is never written. Setting the flag withORI_RC_REMARKSunset changes nothing observable.compiler/oric/src/debug_flags/aims_ablation_phase5_core.rs:42-45states the flag is “Consumed inori_arc::aims::realize::emit_unified… predicate-stack emission is suppressed”.emit_unified.rs+emit_unified/contain ZERO reads (one doc comment inemit_unified/tests.rs:5).diagnostics/check-debug-flags.shvalidates only (1) every registered flag is used SOMEWHERE and (2) every rawenv::varis registered. Both pass. Neither validates theConsumed 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 surface | Live files | Role |
|---|---|---|
burden_lowering | 1 (compiler/ori_arc/src/aims/realize/emit_unified.rs) | live unified lowering surface |
ssa_alias_classes | 7 | live 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 PATHis 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 — anexit 2from a$(...)subshell degrades to an unclassified 1 in the parent. - Falsifier matrix (
--self-test, 12/12): intact tree PASSES; a deletedburden_loweringFAILS; a gutted alias substrate FAILS; a grown surface PASSES;--is-protectedaccepts 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 PRESENTrgthat exits >1 is ERROR 2 on--check,--is-protected, and--list. - The query helpers are the shared
count_symbol_files/list_symbol_filesindiagnostics/_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. || trueis BANNED on a scanner invocation. It converts a scanner failure into an empty match set, which made--is-protectedanswernot-protectedfor a protected file — the deletion ban inverting under error.- A helper restores the caller’s
errexitinstead 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_envraises on an absent SSOT, thataction_envinjects 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_envis 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: passedwithfailed=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:
| Scope | Recorded | Re-measured |
|---|---|---|
compiler_repo by flag name | 23 | 23 |
compiler_repo by terminology | 38 | 39 |
wrapper executables (scripts/**) | 5 | 13 |
AI-seam (.claude/** + CLAUDE.md) | 8 | 9 |
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 inori_arc::aims::realize::emit_unified” and that it suppresses predicate-stack emission. Both false against current bytes: the soleenv::varread isrc_remark.rs:58,emit_unified.rsandemit_unified/contain ZERO reads, andORI_RC_REMARKSis set nowhere in either scripts tree. Rewritten to name the real consumer and state the retain reason (keepingburden_pathtruthful on a gated remark stream).check-debug-flags.shexits 0 before AND after — it structurally cannot see this class, which is preciselyw-54ef47ad’s target.- Every file touched was first passed through
sweep-negative-filter.sh --is-protected(H18 consumed): all reportedsweepable; 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'overcompiler/,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'overcompiler/,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.mdadmits an openBUG-XX-NNNas 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.jsonpinnever_struct_field_rejectednamedintegration_tests.rs; the test moved tointegration_tests/type_declarations.rsduring a file split.ub-coverage-check.py --strictwas RED on a dangling pin. Repointed; GREEN, and a reverted-pin falsifier exits non-zero, so the checker genuinely detects it.- Five
.oritest headers carriedSpec: 15-memory-model.md § Compile-Time Cycle PreventionplusDesign: 04-memory-management/02-arc.md § Cycle Detection. The design path does not exist, the spec anchor does not exist, and15-memory-model.mdnow resolves to the unrelated15-patterns.md. Repointed toSpec: Clause 21.6/Clause 21.1.4, the canonical formcompiler-ops.mdadmits.
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:
| Fixture | RC ops default / gated | RC-stream diff |
|---|---|---|
tests/spec/codegen/tail_call_test.ori | 32 / 32 | IDENTICAL |
tests/spec/codegen/block_merge_test.ori | 16 / 16 | IDENTICAL |
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 plaincargo test/ori buildruns 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-buildruns, default env vsORI_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):
| File | Disposition |
|---|---|
ori_arc/src/aims/realize/rc_remark.rs | rewrite — flag documented as remark metadata, not an emitter selector |
diagnostics/aot-guardrail.sh | rewrite — floor reading attributed to ORI_VERIFY_ARC/ORI_VERIFY_EACH |
oric/src/commands/build/mod.rs | rewrite — gating comment corrected |
ori_llvm/tests/aot/option_inner_rc_walk.rs | rewrite — verdict attributed to verification + leak check |
ori_llvm/tests/aot/closure_fold_edge_dec_probe.rs | rewrite — 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:
| Scope | Definition | Files @authoring | Files @re-measure | Disposition class |
|---|---|---|---|---|
compiler_repo code + proof corpus | flag name | 23 | 23 | behavioral; full disposition |
compiler_repo code + proof corpus | terminology | 38 | 46 | behavioral; +23 over name-only |
| wrapper executables | either | 5 | 20 | behavioral; full disposition |
| AI-seam rules/skills/CLAUDE.md | either | 8 | 12 | text-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 authoredpredicate.stack|predicate_stackand 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.mdsidecars, archived section bodies,.completion-evidence/*.json,plan.jsonbodies) is HISTORY, never a sweep target.plans/aims-burden-tracking/is SUPERSEDED — its 121-hitplan.jsonand 41-hitstatus.mdare 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_envcomposesenv = 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(...)atcompiler_execution.py:232).- Two structurally different shapes already exist. A sweep-introduced THIRD
env-composition path is the violation (
SSOT-18/SSOT-03). Theos.environ.updateglobal-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_classeslive (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 PRESENTrgthat exits >1, which must be ERROR 2 rather than a fabricated control failure. Proof semantics: clean tree PASSES; a resurrectedclass_payload_ofFAILS; 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-dirselects a clean fixture (0) and a resurrected fixture (1), proving the flag selects the REQUESTED tree; a missing--compiler-dirvalue is ERROR 2 with a usage diagnostic, never a bare 1. -
Live verdict: control
ssa_alias_classes7 files;class_payload_of/emit_burden_ops/eliminate_burden_ops0 files each; exit 0. -
ssa_alias_classesis 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, whilearc.md §STOPstill lists it. -
ssa_alias_classes— named in that SAME§STOPlegacy 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.shwith aConsumed 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.shstructurally cannot see it. - REFUTED and out of scope: moving the read into a
debug_flags-owned named predicate.ori_arccannot depend onoric(aims_ablation_phase5_core.rs:51); that inverts a crate dependency (PHASE-01/PHASE-02). A retained toggle needs anori_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.
Inventory route — one legal source, one discriminator
python -m scripts.test_all_runtime runonce, then the exact emitted blockingstatus_commandonce. 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/tailcompiler_repo/test-all.log(human-only). This IS the “structured envelope, never a hand-tallied count” rule. compiler_repo/diagnostics/aot-guardrail.sh --flooris 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.
| Field | Value |
|---|---|
run_id | 1785090912595370643-b32992e4 |
head_sha | aed43969fa1f817a5b4d41c0c9575efa8b1ed8d7 |
timestamp | 2026-07-26T18:44:42Z |
scope / terminal_phase / overall | full / complete / failed |
schema_version | 4 |
summary.json | compiler_repo/build/test-all-snapshots/snap-aed43969fa1f/build/test-all-runs/1785090912595370643-b32992e4/summary.json |
| prior run compared | 1785081992780677315-fc073aa5; every metric (=) |
Mission-gate metric set — distance to zero
| Metric | Gate | Reading |
|---|---|---|
Overall | passed | failed |
failed | 0 | 380 |
skipped | 0 | 0 |
lcfail | 0 | 334 |
aot_leaks | 0 | 0 |
rc_leak_tests | 0 | 0 |
rc_leaked_allocations | 0 | 0 |
process_leak_tests | 0 | 0 |
Infrastructure failures | 0 | 0 |
| verifier gate | ACTIVE | ACTIVE (ORI_VERIFY_ARC=1 + ORI_VERIFY_EACH=1 injected by action_env) |
dispositions | 0 | 0 (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
| Suite | failed | lcfail | Env the leg ran under |
|---|---|---|---|
aot (AOT integration tests) | 46 | 0 | gated 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) | 334 | 334 | verifier 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_kind | Records | Suite |
|---|---|---|
test_failure (error[E5001] LLVM module verification failed) | 46 | aot |
llvm_compile_fail | 334 | ori_llvm |
file_error | 21 | ori_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 variant | Instances inside mismatches[] | Records mentioning it |
|---|---|---|
EffectMismatch | 458 | 350 |
ParamAccess | 100 | 58 |
ParamMayShare | 11 | 10 |
| total | 569 | 418 (records double-count on co-occurrence) |
- Record-level partition (
/calc-verified333 + 41 + 17 + 10 = 401): 333EffectMismatchonly, 41ParamAccessonly, 17 carrying BOTH, 10ParamMayShareonly. Instance total is/calc-verified458 + 100 + 11 = 569. - These instance counts are IDENTICAL to
s-76425fbc’s recorded458 EffectMismatch + 100 ParamAccess + 11 ParamMayShare. The two enumerators agree; the shared counting unit is mismatch instances insidemismatches[]. - 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-76425fbccontract-coherence-zero (the coherence target) ands-6bfc337bbug-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 §STOPrecording theaot-guardrail.sh --floorgate as MET. - Therefore NONE of the 46 gated-floor
aotfailures 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 blockingstatus_command; inherit no count from this block. - A default-path (
ori_llvm) reading is not an RC/AOT floor verdict perarc.md §STOP; theaotrow is.ContractCoherenceViolationfires 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-consensusgate need/tp-discuss --target <plan-dir>? — answered: NO. Afterdiscussion_coverage ensure-hostbinds the plan-host discussion, re-serving the root emitsnow.command_sequencecarryingblock-until-consensus --discussion <bound host path> --mode mutual. The always-onpairing.tp_discussrail (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 unregistereddiscussions/03-discussion(removed). No executable defect; the cure is the existingrails.reanchordiscipline — re-serve after a gate command mutates state./improve-toolingrun1785091976-5fc70d38opened 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 inclaim. - The completed scope included the toggle and the survivors are residue -> closing them is
aims-provenance-ledgerwork; 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, andcompiler_repo/diagnostics/*.share TOOLING — the deep compiler matrix (TDD matrix, dual-exec parity, cross-phase invariants) is N/A. The sweep’scompiler_repo/compiler/**Rust touches (rc_remark.rs,aims_ablation_phase5_core.rs) ARE compiler source and carry the full families. - Softening the loader’s
FileNotFoundErrorto a default-{}return is the canonicalINVERTED-TDDshape (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_envis 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+:236carry#[expect(dead_code, reason="…emission-seam sibling section")]withbug_id=null. Both are the preferred#[expect]form with a real reason; theSPEC-60audit 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_strduplication twin (score 0.954) belongs to the RC-remark schema, not the verification floor.
Evidence-trust constraints
direct_tests: 0on every scoped symbol (both estates) is a FACET ARTIFACT (test_topology_stale: true; PythonTESTS/COVERSedges not derived). The gate IS pinned five ways — four high-confidence test->production edges intoload_verification_envplus one into_aot_predicate_env. Reporting aLAYER_GAPfrom that row isINTEL_BYPASS:unverified-graph-nomination.- A 0-row result from a STALE facet is UNKNOWN, never clean:
surprise-coupling,callable-risk,MISSING_ABSTRACTION, and platformhistory-couplingall returned stale 0-row. A 0-row result from the FRESHcodefacet (hidden cross-module callers ofverification_env.py) IS trustworthy. - Churn and community are DARK for exactly the newly-landed gate symbols
(
insights_stale: true;hotspot_score/blast_radius/community_leidenNULL forload_verification_env,verification_env_path,_aot_predicate_env, allrc_remark::*). Compensate with the post-change detector, NOT with churn-guided caution. rc_remarks_stale: true— use the live producers, never the graph’s ingestedrc-survivors/rc-cause-rankcopies.- 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
scripts/test_all_runtime/verification_env.py(32 lines, whole file) — fail-closed raise at:19-21.scripts/test_all_runtime/execution_process.py:158-193—action_env; SSOT merge at:193.scripts/test_all_runtime/tests/test_verification_env.py(69 lines, whole file) — all five pins, including the legacy hit at:64-69.compiler_repo/scripts/test_all/verification.env+compiler_repo/.github/workflows/ci.ymlenv:— the SSOT and its CI parity pin.compiler/oric/src/debug_flags/aims_ablation_phase5_core.rs:37-47— the staleConsumed in emit_unifiedclaim; the single highest-value sweep hit.compiler/ori_arc/src/aims/realize/rc_remark.rs:36-71, then:83-113— sole reader, sole caller.scripts/test_all_runtime/compiler_execution.py:42-46and:228-233— sole setter, second env funnel.compiler_repo/diagnostics/check-debug-flags.sh:1-25— the header defines exactly what the detector must extend.plans/aims-provenance-ledger/content/predicate-stack-deletion--s-ee6e96e4.md— read in full; resolves the ownership reading..claude/rules/arc.md §STOP §PREDICATE STACK IS LEGACY— the standing directive; note it still listsemit_burden_path_probe_tail(0 hits) andssa_alias_classes(7 live).compiler/ori_arc/src/aims/realize/emit_unified.rs:1-25— confirmburden_loweringis the 1-file live surface and reads no flag.- BUG-07-005 (resolved) — read before designing the detector.
- 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_envraises on an absent SSOT, thataction_envinjects both verifier variables, and that the CI/SSOT parity pin holds. The caller set is CLOSED and graph-enumerated —execution_process.action_envis 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: passedwithfailed=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 --flooris 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 tossa_alias_classes: it is named in the samearc.mdSTOP 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 livessa_alias_classesintraprocedural 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 pertooling-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 aConsumed in <module>claim-vs-read-site cross-check: for every debug flag whose doc comment names a specific consuming module — concretely, theORI_DISABLE_PREDICATE_STACK_RCdoc atcompiler/oric/src/debug_flags/aims_ablation_phase5_core.rs:42-45claiming it is ‘Consumed inori_arc::aims::realize::emit_unified’ when the solestd::env::var("ORI_DISABLE_PREDICATE_STACK_RC")read lives incompiler/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 divergedConsumed 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 tier | Title | Lines | Disposition | Where / why |
|---|---|---|---|---|
| 0 | 0. Bottom line up front | 34 | integrated | New 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. |
| 1 | 1. The section, verbatim | 27 | integrated | ’## 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’. |
| 2 | 2. Terrain — symbols, files, and the measured sweep enumerator | 68 | integrated | New 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). |
| 3 | 3. Code-graph recon | 139 | integrated | ’## 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. |
| 3D | 3D. Diagnostic / observability surface | 29 | integrated | New 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. |
| 3H | 3H. Hygiene constraints the downstream work inherits | 37 | integrated | New 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. |
| 4 | 4. Cluster / family — the related-work graph | 41 | integrated | ’## 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. |
| 5 | 5. Conformance audit — MISSING_ABSTRACTION / SIBLING_DIVERGENCE | 18 | integrated | ’## 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. |
| 6 | 6. Plan ownership — who owns this code now | 29 | integrated | New 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. |
| 7 | 7. Prior art — the fail-closed-verifier problem class, solved elsewhere | 45 | integrated | ’## 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. |
| 8 | 8. Sentiment — community heat around the terrain | 23 | integrated | ’## 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. |
| 9 | 9. Declared coverage gaps — what is dark and why | 31 | integrated | ’## 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. |
| 10 | 10. Recommended recon entry points (ordered read path) | 20 | integrated | New 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’. |