|
| 1 | +# P-037 A2.1 zero-semantic-cut evidence (after-run at A', superseding the A run) |
| 2 | + |
| 3 | +T = `4a8e6582e10222403cd40adc9e95db7e0228a1c2` (terminal-green baseline commit) |
| 4 | +R = `5fd6bfa6abd4c2af7e53712af300cf66c97f2f50` (baseline evidence commit, in |
| 5 | + `main` via PR #361) |
| 6 | +A = `dce26ed1f5d831e36f78f02e307b8b772c8a8800` (original A2.1 treatment: |
| 7 | + emits the guarded-fact sidecar — SUPERSEDED, see below) |
| 8 | +A' = `5a0de070af241a2612859153887ad6ae04afcce2` (A2.1 treatment, corrected: |
| 9 | + decouples call RELEVANCE from argument REPRESENTABILITY in |
| 10 | + `BuildGuardedFacts`; branch `claude/p037-a2.1-relevance-fix`, built |
| 11 | + directly on A) |
| 12 | +M = `P037_A2_MEASUREMENT_M1`, the same preserved measurement environment |
| 13 | + used for the T baseline and the original A run; same workspace |
| 14 | + checkout root reused, not a fresh worktree. |
| 15 | + |
| 16 | +## Why A' exists (A is not evidence-admissible) |
| 17 | + |
| 18 | +Independent review of the A run's after-evidence (`2cbd6c6`, PR #362, since |
| 19 | +superseded) found a real contract bug in A's `BuildGuardedFacts`: a handle |
| 20 | +argument that had to be encoded `opaque` (params/`ref`/`out`, or an unstable |
| 21 | +owned parameter) also had its RELEVANCE bit zeroed, so the entire call |
| 22 | +record silently vanished from `guarded_facts` instead of surviving with an |
| 23 | +opaque slot — contradicting spec/OwnIR.md §5.2 ("an unstable parameter |
| 24 | +argument becomes opaque, not absent"). A' fixes this and adds three |
| 25 | +regression shapes (`corpus/p037-shapes/sidecar-relevance-*`), each verified |
| 26 | +against the pre-fix code first (reproduced the bug) and the fix (call |
| 27 | +record now present). See A''s commit message for the full analysis. |
| 28 | + |
| 29 | +Per the reviewer's explicit rule and general P-037 discipline: A is not |
| 30 | +rewritten (its SHA is retired, not reused) — A' is a new commit, and this |
| 31 | +evidence commit (S') truthfully names A' as its `source_commit`. The prior |
| 32 | +S (`2cbd6c6`, PR #362) is stale and should not be merged; this commit |
| 33 | +replaces it. |
| 34 | + |
| 35 | +## Four after-takes at A', population held at T |
| 36 | + |
| 37 | +| artifact | sha256 | compare result | |
| 38 | +|---|---|---| |
| 39 | +| p037-a2.1-after-mos-repo.json | `c9a06af959252f7c3c54bc239eef7249987e73c9ccd21357b11c1ab0fb4911f9` | UNCHANGED, facts_moved=1, python_mos_moved=0, rust_mos_moved=0, after_parity_moved=0 | |
| 40 | +| p037-a2.1-after-mos-corpus.json | `6d9ca1f60217483c0544000977aabfd72e9edbd4159e6e081f9fb57075e04e5f` | UNCHANGED, facts_moved=36, python_mos_moved=0, rust_mos_moved=0, after_parity_moved=0 | |
| 41 | +| p037-a2.1-after-verdict-python.json | `2d6e673fed1bd2fe3c71ef86047f51a5fafe1e691f7cdca1292482eda348183f` | UNCHANGED, no verdict moved (137 files, level=verdict) | |
| 42 | +| p037-a2.1-after-verdict-rust.json | `9d2166acdad693a6742c1e90130a7dc679d1ad49eac80c1a5efa28e0460eceab` | UNCHANGED, no verdict moved (137 files, level=verdict); own-cli qualified sha == executed sha (`8373f5f5...`, unchanged from T — the fix is C#-only), post_run_intact=true | |
| 43 | + |
| 44 | +`facts_moved` counts (1 and 36) are identical to the original (buggy) A run: |
| 45 | +neither the repo's own 81 files nor the 137-file corpus happen to contain a |
| 46 | +`params`/`ref`/`out` disposable-handle argument or an unstable owned |
| 47 | +parameter, so the relevance fix does not change either fact-diff count here |
| 48 | +— it is a correctness fix visible on the three new regression shapes, not |
| 49 | +on this measured population. That is an observation, not a pre-registered |
| 50 | +predicate. |
| 51 | + |
| 52 | +Compared against the same T-baseline artifacts recorded in R (unchanged |
| 53 | +from the prior comparison). All four: `is_evidence=true`, |
| 54 | +`source_commit=A'`, `population_commit=T`, `dirty=false`, |
| 55 | +`post_run_population_intact=true`. |
| 56 | + |
| 57 | +## Execution profile equality |
| 58 | + |
| 59 | +`p037_evidence.py profile` output is byte-identical to the T-baseline |
| 60 | +capture: CPython 3.11.15, .NET SDK 8.0.425 (runtimes |
| 61 | +Microsoft.AspNetCore.App 8.0.31 + Microsoft.NETCore.App 8.0.31), |
| 62 | +rustc/cargo 1.94.1. |
| 63 | + |
| 64 | +## Known pre-existing observation (not fixed here) |
| 65 | + |
| 66 | +`scope_cache_sites[].file` in the raw facts carries an absolute path |
| 67 | +rather than a repo-relative one — a pre-existing portability defect from |
| 68 | +T, not introduced by A or A'. Unaffected by this evidence-only commit. |
| 69 | + |
| 70 | +Taken: 2026-09-19 (UTC), operator run. |
0 commit comments