From e2084fbba5eea71c3755e895b47ed822aa4dd1c5 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Tue, 18 Aug 2026 17:33:23 +0200 Subject: [PATCH] docs(framing): revision 6 --- the ancestry argument shows less than claimed Three findings on revision 5, all upheld. 1. The ancestry argument overreached. 72da24a failing today while its descendant 7599661 passed on 08-15 shows exactly one thing: outcome is not determined by commit alone, since the observations come from different environments at different times. Revision 5 said a source cause was "positively discouraged", that the ancestry "says to expect" equal endpoints, and that the change was environmental. None follows. It cannot discriminate an environmental change, a source/environment interaction, or a fix before 7599661 with a regression before 724b785 --- and an ancestor OUTSIDE the interval is irrelevant to whether the interval regressed, since a bisect over 7599661..724b785 needs only that the clean endpoints differ now. D0a is unchanged as an action but is now stated as a decision procedure with NO predicted outcome: endpoints differ -> bisect that interval; endpoints agree -> ask what else changed across the window. 2. The byte-identity withdrawal was incomplete in both ledgers. This branch's said the artifacts "are byte-different" and then withdrew it two lines later, still said R9 ran "different binaries", and still promised an "artifact family". The held ledger still said "byte-different" and still called the window a bisect target with revision 4's onset conclusion. Both now say "different Cargo suffixes/compilations" throughout; historical byte identity is UNKNOWN and is never claimed. 3. Provenance slips: R9's observation-table row listed only -6b4b8223 although it executed both -91f51d0b and -6b4b8223; R10's suffixes are at log lines 3 and 24, not 3 and 4; R9's are at 3066 and 3087, not 3066 alone. All corrected against the logs. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai --- docs/active-work.md | 33 ++++++++++--------- docs/gpu-probe-sigint-framing.md | 54 +++++++++++++++++++++++--------- docs/probe-sigint-evidence.md | 29 ++++++++++------- 3 files changed, 75 insertions(+), 41 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index 2b64f9f..bc5d877 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -279,7 +279,7 @@ from #171 and #215. **`72da24a`**, worktree `/home/jeans/Repos/personal/pmacs-probe-sigint`. Recover with `git fetch githubsucks && git checkout gpu-probe-sigint-teardown`. -- **No PR. Framing revision 5 at `docs/gpu-probe-sigint-framing.md`; +- **No PR. Framing revision 6 at `docs/gpu-probe-sigint-framing.md`; NO IMPLEMENTATION and no fix proposed** — the mechanism is not known yet, and the framing says so rather than guessing. Revisions 1, 2 and 3 were each rejected on findings, all upheld; run provenance lives in @@ -300,13 +300,13 @@ from #171 and #215. R1–R10 is green.** Each run is enumerated with exact command, worktree, HEAD, cleanliness and log digest in `docs/probe-sigint-evidence.md` — "0/N" is not a record. -- **But R9 did NOT run the same binaries as the sweep.** It executed - `…-91f51d0b…` / `…-6b4b8223…`; the sweeps executed `…-5d9105cb…` / - `…-d4dae4f0…`, and those artifacts are byte-different. Command shape - changes Cargo's fingerprint. R9 establishes **same target names and - order**, not same compilations — and "byte-different" is withdrawn, - since the bytes a historical run executed are unknowable now; only - the differing Cargo suffixes are. What the evidence is **consistent +- **But R9 did NOT run the same compilations as the sweep.** It + executed `…-91f51d0b…` / `…-6b4b8223…`; the sweeps executed + `…-5d9105cb…` / `…-d4dae4f0…`. **Differing Cargo suffixes mean + differing metadata hashes — different compilations.** Historical byte + identity is **UNKNOWN** and is never claimed: target dirs have been + overwritten, so a hash computed today is the current occupant's. R9 + establishes **same target names and order**, not same compilations. What the evidence is **consistent with**, not what it isolates: prior targets alone (R9) green, workspace selection alone (R10) green, both together (F1–F7) red. That is an observation, not a finding. `--workspace` selection @@ -318,8 +318,8 @@ from #171 and #215. available 27G→45G, still red); leaked daemons; inotify. - **NOT ruled out, contrary to earlier entries here:** `--workspace` artifact selection, and the preceding tests. R9 appeared to clear - them but ran **different binaries**, so the comparison was never - made. Both are open. + them but ran **different Cargo compilations**, so the comparison was + never made. Both are open. - **Ground truth, and what it does NOT establish.** Neither binary contains signal-handling code: `run_gpu` (`src/main.rs:324`) blocks in `command.status()` with no handler, and grepping all of @@ -360,8 +360,8 @@ from #171 and #215. default disposition" contradicted its own hypothesis and is withdrawn; the assertion no longer appears above it either. - **Run provenance is a pushed document**, `docs/probe-sigint-evidence.md`: - exact command, worktree, HEAD, cleanliness, artifact family, result - and log digest per physical run. Three caveats stated there rather + exact command, worktree, HEAD, cleanliness, the Cargo suffixes + executed, result and log digest per physical run. Three caveats stated there rather than smoothed over — **R1 and R2 have no preserved log** (revision 2 double-counted one log as both R2 and R6), **cleanliness is UNKNOWN** for every pre-manifest run, and **R1–R10 ran in the @@ -382,8 +382,13 @@ from #171 and #215. 08:45:41, after that run ended 08:42:01). **Cleanliness captured for neither.** And `72da24a` is an **ancestor** of `7599661` yet fails today while `7599661` passed — no source-monotonic cause does that. - So D0a reproduces clean endpoints first; a Git bisect is justified - only if they differ. + The ancestry shows only that **outcome is not determined by commit + alone**; it does NOT discriminate an environmental change, a + source/environment interaction, or a fix before `7599661` with a + regression before `724b785`, and an ancestor outside the interval is + irrelevant to whether the interval regressed. D0a is a **decision + procedure with no predicted outcome**: endpoints differ → bisect + `7599661..724b785`; endpoints agree → ask what else changed. - **Red full-sweep count is SEVEN, not five** (F1–F7 in the manifest), each with its own log digest; revision 3 said 5/5 while the framing separately cited a gate run the manifest never listed. diff --git a/docs/gpu-probe-sigint-framing.md b/docs/gpu-probe-sigint-framing.md index ead3aa6..864785e 100644 --- a/docs/gpu-probe-sigint-framing.md +++ b/docs/gpu-probe-sigint-framing.md @@ -1,6 +1,6 @@ # GPU launcher / probe SIGINT teardown — framing -Revision 5. Status: **awaiting approval. No implementation.** +Revision 6. Status: **awaiting approval. No implementation.** Revisions 1 and 2 were each rejected on five findings. Every correction is recorded in place rather than quietly rewritten, because three of @@ -20,6 +20,10 @@ them were claims this document itself had advanced: (manifest); ledgers still carried the falsified R9 conclusions (§11). **And a finding that reframes the lane: the failure has a datable onset (§4a) and is not long-standing.** +- r5 → r6: the ancestry argument overreached (§4a) — it shows outcome + is not determined by commit alone, and nothing more; residual + byte-identity and "artifact family" wording in both ledgers (§11); + and three provenance slips (§4, manifest). - r4 → r5: the section summaries still carried revision-3 counts and groupings (§4); the onset count was 13/1/3, not 14 (§4a); "byte- different" overstated what is knowable about historical artifacts @@ -149,8 +153,8 @@ different Cargo compilations: | prior targets execute | compilation set | result | |---|---|---| -| yes | `-6b4b8223` (subset selection) | R9 green | -| no | `-5d9105cb` + `-d4dae4f0` (workspace selection) | R10 green | +| yes | `-91f51d0b` + `-6b4b8223` (subset selection; `prefix.log:3066`, `:3087`) | R9 green | +| no | `-5d9105cb` + `-d4dae4f0` (workspace selection; `wsonly.log:3`, `:24`) | R10 green | | yes | workspace selection | **F1–F7 red (7)** | Neither factor alone reproduced it **in these runs**. That is the @@ -203,14 +207,32 @@ after that run ended at 08:42:01. **Cleanliness was captured for neither**, and the tree was under active edit throughout. So the window dates a **machine/worktree-state transition**, not two clean revisions. -The evidence in fact argues *against* a source cause: `72da24a` is an -**ancestor** of `7599661` (verified by `git merge-base --is-ancestor`), -yet `72da24a` fails today while `7599661` passed on 08-15. No -source-monotonic cause produces that. Unless clean endpoints say -otherwise, whatever changed is environmental, cached, or uncommitted. +One further relationship is worth stating **only for what it shows**: +`72da24a` is an **ancestor** of `7599661` (verified by +`git merge-base --is-ancestor`), yet `72da24a` fails today while +`7599661` passed on 08-15. That establishes exactly one thing — +**outcome is not determined by commit alone** — because the two +observations are from different environments at different times. -**This still supersedes the reduction matrix as the lane's first move** -— but as endpoint reproduction, not as a bisect. +**Revision 5 drew more from it than it carries, and that is +withdrawn.** It said a source cause was "positively discouraged", that +the ancestry "says to expect" equal endpoints, and that "whatever +changed is environmental, cached, or uncommitted". None of that +follows. The observation cannot distinguish: + +- an environmental change; +- a source/environment interaction; or +- a source fix landing before `7599661` and a regression landing before + `724b785`. + +And an older ancestor outside the interval behaving badly is simply +**irrelevant** to whether `7599661..724b785` contains a regression: a +bisect over that interval needs only that the two clean endpoints +differ *now*. + +**This still supersedes the reduction matrix as the lane's first +move**, as endpoint reproduction — which is a decision procedure, not a +prediction. ## 5. Two retracted claims, both mine, kept as warnings @@ -268,11 +290,13 @@ group. - **D0a — reproduce the onset endpoints CLEANLY** (§4a): `7599661` (last observed green) and `724b785` (first observed red), each - checked out clean, each in its own isolated target directory. **Only - if they differ is a Git bisect justified.** If they agree, the - changed state is environmental, cached or uncommitted — which the - ancestry argument says to expect — and bisecting source would burn - runs proving nothing. + checked out clean, each in its own isolated target directory. This is + a **decision procedure with no predicted outcome**: + - **endpoints differ** → a regression lives in `7599661..724b785` + and a Git bisect over that interval is justified; + - **endpoints agree** → the difference is not captured by those two + commits under current conditions, and the next question is what + else changed across the window. - **D0b — re-run the §4 matrix with captured provenance**, at `main`, recording the artifact hashes actually executed **at run time**. Revision 2's strongest claim collapsed because command shape silently diff --git a/docs/probe-sigint-evidence.md b/docs/probe-sigint-evidence.md index f4b2e80..3fcb0c6 100644 --- a/docs/probe-sigint-evidence.md +++ b/docs/probe-sigint-evidence.md @@ -82,8 +82,8 @@ except `WT=main`, which uses `…/pmacs-fdccc423`. | R6 | `test --features crdt --no-fail-fast --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`5174f73`–`b72843a` | UNKNOWN | reduction | green, 11+15+15 | `332693a39c73731a` 4569 | | R7 | `test --features crdt --no-fail-fast --lib --bins --test acceptance --test ambient_isolation_acceptance --test auto_indent_acceptance --test auto_indent_crdt_acceptance --test auto_pair_acceptance --test auto_pair_crdt_acceptance --test autosave_acceptance --test bottom_panel_stage1_acceptance --test bottom_panel_stage2a_acceptance --test bottom_panel_stage2b_daemon_acceptance --test bottom_panel_stage2b_gpu_acceptance --test bottom_panel_stage2b_protocol_acceptance --test comment_toggle_acceptance --test compile_mode_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | `gpu_invocation…-6b4b8223` **only** — R7 does not select `gpu_initial_target` | green | `9e1ebc59ed9f0dd4` 187531 | | R8 | `test --features crdt --no-fail-fast --test compile_mode_crdt_acceptance --test completion_popup_acceptance --test config_registry_acceptance --test cua_region_acceptance --test desktop_acceptance --test destination_capture_acceptance --test dired_acceptance --test discovery_acceptance --test discovery_stage2_acceptance --test editops_acceptance --test find_file_acceptance --test folding_acceptance --test folding_stage2_acceptance --test full_grid_resync_acceptance --test gate_script_acceptance --test git_status_stage1_acceptance --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | `-91f51d0b` / `-6b4b8223` per log | green | `8b26ebfcf5f871b4` 28677 | -| R9 | `test --features crdt --no-fail-fast --lib --bins --test acceptance --test ambient_isolation_acceptance --test auto_indent_acceptance --test auto_indent_crdt_acceptance --test auto_pair_acceptance --test auto_pair_crdt_acceptance --test autosave_acceptance --test bottom_panel_stage1_acceptance --test bottom_panel_stage2a_acceptance --test bottom_panel_stage2b_daemon_acceptance --test bottom_panel_stage2b_gpu_acceptance --test bottom_panel_stage2b_protocol_acceptance --test comment_toggle_acceptance --test compile_mode_acceptance --test compile_mode_crdt_acceptance --test completion_popup_acceptance --test config_registry_acceptance --test cua_region_acceptance --test desktop_acceptance --test destination_capture_acceptance --test dired_acceptance --test discovery_acceptance --test discovery_stage2_acceptance --test editops_acceptance --test find_file_acceptance --test folding_acceptance --test folding_stage2_acceptance --test full_grid_resync_acceptance --test gate_script_acceptance --test git_status_stage1_acceptance --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | **`-91f51d0b` / `-6b4b8223`** (log `:3066`) | green | `b31d98ee2f427eca` 214566 | -| R10 | `test --workspace --features crdt --no-fail-fast --test gpu_initial_target_acceptance --test gpu_invocation_acceptance -- --skip basedpyright` | mg | ~`b72843a` | UNKNOWN | **`-5d9105cb` AND `-d4dae4f0`** (log `:3`, `:4`) | green | `81b48fd7a0e261dc` 3553 | +| R9 | `test --features crdt --no-fail-fast --lib --bins --test acceptance --test ambient_isolation_acceptance --test auto_indent_acceptance --test auto_indent_crdt_acceptance --test auto_pair_acceptance --test auto_pair_crdt_acceptance --test autosave_acceptance --test bottom_panel_stage1_acceptance --test bottom_panel_stage2a_acceptance --test bottom_panel_stage2b_daemon_acceptance --test bottom_panel_stage2b_gpu_acceptance --test bottom_panel_stage2b_protocol_acceptance --test comment_toggle_acceptance --test compile_mode_acceptance --test compile_mode_crdt_acceptance --test completion_popup_acceptance --test config_registry_acceptance --test cua_region_acceptance --test desktop_acceptance --test destination_capture_acceptance --test dired_acceptance --test discovery_acceptance --test discovery_stage2_acceptance --test editops_acceptance --test find_file_acceptance --test folding_acceptance --test folding_stage2_acceptance --test full_grid_resync_acceptance --test gate_script_acceptance --test git_status_stage1_acceptance --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | **`-91f51d0b` / `-6b4b8223`** (log `:3066`, `:3087`) | green | `b31d98ee2f427eca` 214566 | +| R10 | `test --workspace --features crdt --no-fail-fast --test gpu_initial_target_acceptance --test gpu_invocation_acceptance -- --skip basedpyright` | mg | ~`b72843a` | UNKNOWN | **`-5d9105cb` AND `-d4dae4f0`** (log `:3`, `:24`) | green | `81b48fd7a0e261dc` 3553 | | F1 | `build --workspace --no-default-features --features luajit,crdt && test --workspace --features crdt --no-fail-fast -- --skip basedpyright` | **main** | `72da24a` | clean (verified `git status --porcelain` empty) | `-5d9105cb` / `-d4dae4f0`; today's occupants `e0578039…` / `00f06aeb…` | **red** | `10b55b8ba8741125` 334446 | | F2 | `test --workspace --features crdt --no-fail-fast -- --skip basedpyright` | mg | ~`b72843a` | UNKNOWN | `-5d9105cb` / `-d4dae4f0`; bytes UNKNOWN | **red** | `474f88f0dad581fe` 338555 | | F3 | same argv as F2, with a resource sampler running | mg | ~`b72843a` | UNKNOWN | as F2; bytes UNKNOWN | **red** | `7b8519e7300e8bb3` 338555 | @@ -141,12 +141,15 @@ was captured for **neither**, and the tree was being edited throughout. So the window dates a **machine/worktree-state transition**, not two clean source revisions. -**A source bisect is in fact positively discouraged by the evidence.** -`72da24a` is an **ancestor** of `7599661` — verified with -`git merge-base --is-ancestor` — yet `72da24a` fails today (F1) while -`7599661` passed on 08-15. A source-monotonic cause cannot produce -that. Whatever changed is environmental, cached, or uncommitted unless -proven otherwise. +One relationship is worth recording **for exactly what it shows**: +`72da24a` is an **ancestor** of `7599661` (`git merge-base +--is-ancestor`), yet fails today (F1) while `7599661` passed on 08-15. +That shows **outcome is not determined by commit alone** — the two +observations come from different environments at different times — and +nothing further. It does **not** discriminate an environmental change, +a source/environment interaction, or a fix before `7599661` followed by +a regression before `724b785`. An ancestor outside the interval is +irrelevant to whether the interval contains a regression. ## D0 — re-run the matrix with captured provenance @@ -165,7 +168,9 @@ log digest. Two constraints learned the hard way: - **first, reproduce the two candidate endpoints CLEANLY** — `7599661` (last observed green) and `724b785` (first observed red) — each checked out clean, each in its **own isolated target - directory**. Only if those endpoints differ is a Git bisect - justified. If they do not differ, the changed state is environmental, - cached or uncommitted, and bisecting source would burn runs proving - nothing. The ancestry argument above says to expect the latter. + directory**. A decision procedure with **no predicted outcome**: + endpoints differ → a regression lives in `7599661..724b785` and a + bisect over that interval is justified; endpoints agree → the + difference is not captured by those two commits under current + conditions, and the question becomes what else changed across the + window.