docs(framing): revision 10 --- awaiting approval; fix the corrupted provenance
Two findings, both upheld.
1. The portable provenance was corrupted and incomplete --- worse than
the machine-local pointer it replaced, because it looked verifiable
and was not. Every log digest had lost its leading hex character
(A#1 recorded as 1c0fe47d55d8f5e... where the value is
e1c0fe47d55d8f5e): the extraction started one byte late in
`logsha=<value>`. The captured /tmp and MemAvailable columns were
dropped, and the command block used ellipsed paths. All ten digests
are corrected, both columns restored, and the command is written out
in full with only two named placeholders.
Separately: `uptime` was NEVER CAPTURED. §7's condition list names
it; the harness kept the load averages from it and discarded the
elapsed time. It is now recorded as UNKNOWN for all ten runs, with
the condition list marked as only partially satisfied rather than
implied met. The classifications stand --- none depends on uptime ---
and D1/D2's harness must capture the whole list.
2. Retiring D0b materially changes the approved diagnostic sequence,
which made D0b mandatory before every other diagnostic. The document
still claimed revision 9, approved at 15c25ec, for a decision that
approval does not contain. Promoted to revision 10 and marked
AWAITING APPROVAL; D0a's execution and result are reported under
revision 9, and D1/D2 do not begin until revision 10 is approved.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
ea0f3bfb14
commit
5f5fde6dde
|
|
@ -279,8 +279,11 @@ from #171 and #215.
|
||||||
**`72da24a`**, worktree
|
**`72da24a`**, worktree
|
||||||
`/home/jeans/Repos/personal/pmacs-probe-sigint`. Recover with
|
`/home/jeans/Repos/personal/pmacs-probe-sigint`. Recover with
|
||||||
`git fetch githubsucks && git checkout gpu-probe-sigint-teardown`.
|
`git fetch githubsucks && git checkout gpu-probe-sigint-teardown`.
|
||||||
- **No PR. Framing revision 9 at `docs/gpu-probe-sigint-framing.md`,
|
- **No PR. Framing revision 10 at `docs/gpu-probe-sigint-framing.md`,
|
||||||
APPROVED 2026-08-19 at `15c25ec`; NO IMPLEMENTATION and no fix
|
AWAITING APPROVAL** — revision 9 was approved at `15c25ec`, but that
|
||||||
|
approval does **not** cover retiring D0b, which changes the approved
|
||||||
|
diagnostic sequence. **D1/D2 do not begin until revision 10 is
|
||||||
|
approved.** Also: NO IMPLEMENTATION and no fix
|
||||||
proposed** — the mechanism is not known yet, and the framing says so
|
proposed** — the mechanism is not known yet, and the framing says so
|
||||||
rather than guessing. Revisions 1, 2 and 3 were each rejected on
|
rather than guessing. Revisions 1, 2 and 3 were each rejected on
|
||||||
findings, all upheld; run provenance lives in
|
findings, all upheld; run provenance lives in
|
||||||
|
|
@ -301,7 +304,13 @@ from #171 and #215.
|
||||||
- **The useful product is a RELIABLE REPRODUCTION** — 10/10 across two
|
- **The useful product is a RELIABLE REPRODUCTION** — 10/10 across two
|
||||||
commits at ~4 min/run. D1/D2 no longer wait on a rare event and are
|
commits at ~4 min/run. D1/D2 no longer wait on a rare event and are
|
||||||
the next step. Per-run provenance in `docs/probe-sigint-evidence.md`
|
the next step. Per-run provenance in `docs/probe-sigint-evidence.md`
|
||||||
§D0a and `/home/jeans/build/pmacs-gate-targets/d0a/results.tsv`.
|
§D0a, transcribed in full into that committed document — after the
|
||||||
|
first transcription corrupted every log digest by one hex character
|
||||||
|
and dropped `/tmp` and `MemAvailable`. **`uptime` was never captured**
|
||||||
|
and is `UNKNOWN` for all ten runs: §7 names it, the harness kept only
|
||||||
|
the load averages, so that condition list was **not fully
|
||||||
|
satisfied**. The classifications stand; D1/D2's harness must capture
|
||||||
|
the whole list.
|
||||||
- **Why it exists.** `ctrl_c_on_launcher_group_does_not_reach_spawned_daemon`
|
- **Why it exists.** `ctrl_c_on_launcher_group_does_not_reach_spawned_daemon`
|
||||||
fails in gate stage `sweep-crdt` with "child did not exit within 5s".
|
fails in gate stage `sweep-crdt` with "child did not exit within 5s".
|
||||||
**Pre-existing on `main`** — `72da24a` fails it in a clean worktree
|
**Pre-existing on `main`** — `72da24a` fails it in a clean worktree
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
# GPU launcher / probe SIGINT teardown — framing
|
# GPU launcher / probe SIGINT teardown — framing
|
||||||
|
|
||||||
Revision 9, approved 2026-08-19 at `15c25ec`.
|
Revision 10. Status: **AWAITING APPROVAL. No fix implemented;
|
||||||
Status: **D0a EXECUTED — see §4b. No fix implemented; mechanism still
|
mechanism still unknown.**
|
||||||
unknown.**
|
|
||||||
|
Revision 9 was approved 2026-08-19 at `15c25ec`. **That approval does
|
||||||
|
not extend to this revision**, because retiring D0b (§7) materially
|
||||||
|
changes the approved diagnostic sequence — the approved text made D0b
|
||||||
|
mandatory before every other diagnostic. D0a's execution and result
|
||||||
|
(§4b) are reported under it, and D1/D2 do not begin until this revision
|
||||||
|
is approved.
|
||||||
|
|
||||||
Revisions 1 and 2 were each rejected on five findings. Every correction
|
Revisions 1 and 2 were each rejected on five findings. Every correction
|
||||||
is recorded in place rather than quietly rewritten, because three of
|
is recorded in place rather than quietly rewritten, because three of
|
||||||
|
|
@ -22,6 +28,15 @@ them were claims this document itself had advanced:
|
||||||
(manifest); ledgers still carried the falsified R9 conclusions (§11).
|
(manifest); ledgers still carried the falsified R9 conclusions (§11).
|
||||||
**And a finding that reframes the lane: the failure has a datable
|
**And a finding that reframes the lane: the failure has a datable
|
||||||
onset (§4a) and is not long-standing.**
|
onset (§4a) and is not long-standing.**
|
||||||
|
- r9 → r10: **D0b retired as a precondition** (§7), which changes the
|
||||||
|
approved sequence and is why this revision needs its own approval;
|
||||||
|
D0a executed and its causal conclusion narrowed twice — "source
|
||||||
|
hypothesis eliminated" withdrawn in favour of "the commits do not
|
||||||
|
discriminate under current conditions" (§4b, and the endpoint
|
||||||
|
table's two uniform-same rows); portable provenance corrected after
|
||||||
|
it corrupted every log digest and silently dropped `/tmp` and
|
||||||
|
`MemAvailable`; and `uptime` recorded as **UNKNOWN**, since §7 names
|
||||||
|
it but the harness kept only the load averages.
|
||||||
- r8 → r9: D0a's classifier was not total — it named only "clean
|
- r8 → r9: D0a's classifier was not total — it named only "clean
|
||||||
split" and "mixed", leaving both-green, both-red, non-execution,
|
split" and "mixed", leaving both-green, both-red, non-execution,
|
||||||
copy-disagreement and unrelated-failure outcomes unprescribed, all of
|
copy-disagreement and unrelated-failure outcomes unprescribed, all of
|
||||||
|
|
@ -381,7 +396,10 @@ group.
|
||||||
confounding*; with an even run count one arm still holds the last
|
confounding*; with an even run count one arm still holds the last
|
||||||
slot, and that residue is accepted and stated rather than papered
|
slot, and that residue is accepted and stated rather than papered
|
||||||
over.
|
over.
|
||||||
- **Identical captured conditions per run**: same harness as D0b —
|
- **Identical captured conditions per run** — and D0a satisfied this
|
||||||
|
list only **partially**: it captured everything below except
|
||||||
|
`uptime`, keeping the load averages and discarding elapsed time.
|
||||||
|
D1/D2's harness must capture the whole list. Same harness as D0b —
|
||||||
argv, worktree, `git rev-parse HEAD`, `git status --porcelain`
|
argv, worktree, `git rev-parse HEAD`, `git status --porcelain`
|
||||||
emptiness, the Cargo suffixes executed, result, log digest — plus
|
emptiness, the Cargo suffixes executed, result, log digest — plus
|
||||||
the machine facts that have already misled this lane once
|
the machine facts that have already misled this lane once
|
||||||
|
|
|
||||||
|
|
@ -178,33 +178,53 @@ precondition then the `sweep-crdt` command. `dirty=0` verified per run.
|
||||||
| A#5 | A | `7599661` | **red** | 0 / 2 | 3 | `d0a/A-5.log` |
|
| A#5 | A | `7599661` | **red** | 0 / 2 | 3 | `d0a/A-5.log` |
|
||||||
| B#5 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-5.log` |
|
| B#5 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-5.log` |
|
||||||
|
|
||||||
**Exact commands.** Per run, with `TMPDIR=…/tmp/d0a` and
|
**Exact commands.** Every run, in full. `<WT>` is
|
||||||
`CARGO_TARGET_DIR=…/d0a-A` or `…/d0a-B`, executed in
|
|
||||||
`/home/jeans/Repos/personal/pmacs-d0a-A` (detached at `7599661`) or
|
`/home/jeans/Repos/personal/pmacs-d0a-A` (detached at `7599661`) or
|
||||||
`…-d0a-B` (detached at `724b785`):
|
`/home/jeans/Repos/personal/pmacs-d0a-B` (detached at `724b785`);
|
||||||
|
`<TD>` is `/home/jeans/build/pmacs-gate-targets/d0a-A` or `…/d0a-B`
|
||||||
|
correspondingly:
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo build --workspace --no-default-features --features luajit,crdt \
|
env TMPDIR=/home/jeans/build/pmacs-gate-targets/tmp/d0a \
|
||||||
&& cargo test --workspace --features crdt --no-fail-fast -- --skip basedpyright
|
CARGO_TARGET_DIR=<TD> \
|
||||||
|
sh -c 'cd <WT> \
|
||||||
|
&& cargo build --workspace --no-default-features --features luajit,crdt \
|
||||||
|
&& cargo test --workspace --features crdt --no-fail-fast -- --skip basedpyright'
|
||||||
```
|
```
|
||||||
|
|
||||||
**Per-run provenance, transcribed** (all runs `exit=101`, `dirty=0`,
|
**Per-run provenance, transcribed.** All runs: `exit=101`, `dirty=0`,
|
||||||
`ok=0 failed=2`, suffixes `-5d9105cb` / `-d4dae4f0`). Times are local
|
`ok=0 failed=2`, suffixes `-5d9105cb` / `-d4dae4f0`, `/tmp` 3 G of 30 G.
|
||||||
2026-08-19; `load` is the 1/5/15 average at run start; `freeMB` is
|
Times are local 2026-08-19. `load` is the 1/5/15 average at run start;
|
||||||
`MemFree`; `daemons` counts live `pmacs --daemon` processes:
|
`MemFree`/`MemAvail` in MB; `daemons` counts live `pmacs --daemon`:
|
||||||
|
|
||||||
| start | run | class | red bins | load | freeMB | daemons | log sha256/16 |
|
| start | run | class | red bins | load | MemFree | MemAvail | daemons | log sha256/16 |
|
||||||
|---|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|---|---|
|
||||||
| 12:21:20 | A#1 | red | 3 | 2.51, 2.85, 3.57 | 1549 | 72 | `1c0fe47d55d8f5e…` |
|
| 12:21:20 | A#1 | red | 3 | 2.51 2.85 3.57 | 1549 | 42069 | 72 | `e1c0fe47d55d8f5e` |
|
||||||
| 12:26:55 | B#1 | red | 2 | 7.86, 13.48, 8.97 | 9405 | 76 | `105794d515e6ec3…` |
|
| 12:26:55 | B#1 | red | 2 | 7.86 13.48 8.97 | 9405 | 42725 | 76 | `3105794d515e6ec3` |
|
||||||
| 12:32:12 | B#2 | red | 2 | 8.04, 18.28, 13.23 | 9761 | 80 | `7a662fb5ca15687…` |
|
| 12:32:12 | B#2 | red | 2 | 8.04 18.28 13.23 | 9761 | 43370 | 80 | `07a662fb5ca15687` |
|
||||||
| 12:35:39 | A#2 | red | 4 | 11.34, 21.23, 16.20 | 8933 | 84 | `50aacb9d15244c9…` |
|
| 12:35:39 | A#2 | red | 4 | 11.34 21.23 16.20 | 8933 | 43281 | 84 | `450aacb9d15244c9` |
|
||||||
| 12:39:35 | A#3 | red | 3 | 13.40, 26.07, 20.45 | 10628 | 88 | `9156bbbc852e2d3…` |
|
| 12:39:35 | A#3 | red | 3 | 13.40 26.07 20.45 | 10628 | 42989 | 88 | `19156bbbc852e2d3` |
|
||||||
| 12:43:26 | B#3 | red | 2 | 8.66, 22.18, 20.82 | 8778 | 92 | `f0d768a76ed9cb0…` |
|
| 12:43:26 | B#3 | red | 2 | 8.66 22.18 20.82 | 8778 | 43588 | 92 | `6f0d768a76ed9cb0` |
|
||||||
| 12:47:20 | B#4 | red | 2 | 17.96, 33.10, 27.07 | 10403 | 96 | `5a043a3d5568598…` |
|
| 12:47:20 | B#4 | red | 2 | 17.96 33.10 27.07 | 10403 | 43617 | 96 | `75a043a3d5568598` |
|
||||||
| 12:50:49 | A#4 | red | 3 | 10.99, 27.07, 26.52 | 10702 | 100 | `1b6d88c08764d9a…` |
|
| 12:50:49 | A#4 | red | 3 | 10.99 27.07 26.52 | 10702 | 43335 | 100 | `c1b6d88c08764d9a` |
|
||||||
| 12:54:47 | A#5 | red | 3 | 9.75, 28.50, 28.70 | 8494 | 104 | `ae21a3f53fc1a1a…` |
|
| 12:54:47 | A#5 | red | 3 | 9.75 28.50 28.70 | 8494 | 43053 | 104 | `2ae21a3f53fc1a1a` |
|
||||||
| 12:58:38 | B#5 | red | 2 | 11.43, 26.69, 28.97 | 8562 | 108 | `2c5baa0c7e49e37…` |
|
| 12:58:38 | B#5 | red | 2 | 11.43 26.69 28.97 | 8562 | 43122 | 108 | `82c5baa0c7e49e37` |
|
||||||
|
|
||||||
|
**Two defects in the previous transcription of this table, recorded
|
||||||
|
rather than silently fixed.** Every digest had lost its leading hex
|
||||||
|
character — A#1 read `1c0fe47d55d8f5e…` where the value is
|
||||||
|
`e1c0fe47d55d8f5e` — because the extraction started one byte late in
|
||||||
|
`logsha=<value>`. And `/tmp` and `MemAvailable` were captured by the
|
||||||
|
harness but dropped from the table. A transcription that silently
|
||||||
|
corrupts its own digests is worse than a pointer to the raw file, since
|
||||||
|
it looks verifiable and is not.
|
||||||
|
|
||||||
|
**`uptime` was NOT captured, and is `UNKNOWN` for all ten runs.** §7's
|
||||||
|
condition list names `uptime`; the harness recorded only the load
|
||||||
|
averages from it and discarded the elapsed time. The classifications
|
||||||
|
stand — none of them depends on it — but the condition list was **not
|
||||||
|
fully satisfied**, and D1/D2's harness must capture it. Recorded rather
|
||||||
|
than quietly treated as met.
|
||||||
|
|
||||||
Note the leaked-daemon count climbing 72 → 108, four per run. Recorded,
|
Note the leaked-daemon count climbing 72 → 108, four per run. Recorded,
|
||||||
not implicated: it rises monotonically while every run classifies the
|
not implicated: it rises monotonically while every run classifies the
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue