docs(framing): Stage 1 revision 18 --- residuals that outlive the buffer, and two overclaims narrowed

Answers review of revision 17. Still framing only; no code.

**IDENTITY HAS A SECOND HALF, AND R2/R3 CANNOT REACH IT.** A panel or
terminal residual is keyed to a surface that GOES AWAY, so replacement
is naturally observable. The document's and the minimap's do not work
that way: they live in the long-lived GPU `State` and OUTLIVE the
buffer. Their reset is a manual list --- buffer replacement
(`pmacs-gpu/src/main.rs:5922` onward) zeroes `scroll_top`,
`code_scroll_residual` and `code_scroll_left` one explicit line at a
time, each with its own comment. A new wheel residual will not reset
itself, and nothing fails if it is forgotten except a user's next
document scrolling from someone else's offset.

  R4  document A -> document B, covering the document residual AND the
      chrome residual it shares; successor starts from zero.
      Mutation: omit the document residual from the replacement reset.
  R5  minimap across A -> B; its residual is independent (B6) so it
      needs its own reset and its own leg.
      Mutation: omit the minimap residual from the replacement reset.

The mutations are deliberately separate --- one reset omitted at a time
--- because a single "forgot to reset" mutation would bite both legs
and prove neither field individually covered. `code_scroll_left` had
precisely this defect once, which is why it now carries a comment
explaining that a switch would otherwise inherit the previous
document's leftward viewport.

**AND TWO OVERCLAIMS IN THE SIGNATURE ROWS.** I wrote that both steps
ran "the same executable". They ran the same TARGET but different
ARTIFACTS: `pmacs-9d4963151c6f3151` at 211,777,472 bytes and
`pmacs-7624ed4bed0b6617` at 214,462,056, and `cmp` reports differing
bytes. What is supported is the same libtest target, its 1,940-test
population, and default intra-binary threading --- which is all the
concurrency conclusion ever needed, so that conclusion is unchanged.

"Cargo runs test binaries sequentially" was also stated as a universal.
It is narrowed to what was observed: under cargo 1.95.0, this sweep ran
its 119 binaries sequentially. The rows no longer generalize to cargo
versions or invocations they did not measure.

Gates: all nine green under `env -u TMPDIR`, log 20260814T110707Z.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
Levi Neuwirth 2026-08-14 13:11:56 +02:00
parent 836f417313
commit fff1779677
No known key found for this signature in database
1 changed files with 51 additions and 2 deletions

View File

@ -1,7 +1,27 @@
# GUI arc, Stage 1 — input foundation (framing)
**Status: revision 17 — AWAITING APPROVAL.** Revision 17 answers review
of 16. Two additions and one correction:
**Status: revision 18 — AWAITING APPROVAL.** Revision 18 answers review
of 17:
- **Identity has a second half that R2/R3 cannot reach.** A panel or
terminal residual is keyed to a surface that *goes away*; the
**document's and the minimap's live in the long-lived GPU `State`
and outlive the buffer**. Their reset is a **manual list** —
`pmacs-gpu/src/main.rs:5922` zeroes `scroll_top`,
`code_scroll_residual` and `code_scroll_left` one line at a time — so
a new wheel residual will not reset itself. **R4** (document plus the
chrome residual it shares) and **R5** (the minimap's independent
residual) add buffer A→B legs, each with its own mutation omitting
its own reset. `code_scroll_left` had this exact defect once already.
- **U9/U10 said "the same executable"; the two artifacts differ.**
`pmacs-9d4963…` and `pmacs-7624…`, different sizes, differing bytes.
The supported claim is the same *target*, 1,940-test population and
default intra-binary threading. **"Cargo runs test binaries
sequentially" is narrowed to the observed cargo 1.95.0 sweep** rather
than asserted universally. The concurrency conclusion is unaffected.
**Previously, revision 17 — SUPERSEDED.** Two additions and one
correction:
- **B1 gains the two separations its crossing witness could not
reach.** "Per axis and surface" has two nouns; 16 witnessed one
@ -337,6 +357,35 @@ defect as leaking between kinds but invisible to a kind-level row.
- **R3 — terminal A→terminal B:** the same, across two terminal
buffers. *Mutation: key the residual by "the terminal".*
**R2 and R3 are not the whole of identity, because the document and the
minimap do not get replaced — their state OUTLIVES the buffer.** A
panel or terminal residual can be keyed to a surface that goes away; the
document's and the minimap's live in the long-lived GPU `State`, which
survives a buffer switch. **Their reset is manual, and there is a list
to be forgotten from.** Buffer replacement (`pmacs-gpu/src/main.rs:5922`
onward) zeroes `scroll_top`, `code_scroll_residual` and
`code_scroll_left` **one explicit line at a time**, each with its own
comment — including `code_scroll_left`, added later precisely because a
switch *"inherits the PREVIOUS document's leftward viewport and renders
the new buffer scrolled sideways until a cursor motion repairs it — a
symptom nothing about the new buffer explains."* **A new wheel residual
will not reset itself.** Two more legs:
- **R4 — document A→document B**, covering the document residual **and
the chrome residual it shares** (chrome's owner is the document's, so
one reset must serve both): bank a sub-tick over the document, replace
the buffer, motion over B **starts from zero**. *Mutation: omit the
document residual from the replacement reset.*
- **R5 — minimap across A→B:** the minimap's residual is **independent**
(B6), so it needs its own reset and its own leg. *Mutation: omit the
minimap residual from the replacement reset.*
Two mutations, deliberately separate: **one reset omitted at a time**,
because a single "forgot to reset" mutation would bite both legs and
prove neither field is individually covered. This is the same defect
`code_scroll_left` already had once, and the reason it now has a
comment explaining itself.
R2 and R3 also pin the **discard on disappearance**: a residual banked
against a surface that no longer exists must not be inherited by its
successor. That is the identity question and the staleness question at