docs: the zoom lane recorded revision 4 and three findings
The lane went stale across two review rounds. It said framing revision 4, 13 acceptance tests, and "the three findings review caught" --- all true when written, none true now. Brings it current: revision 5, the pushed tip, 15 tests, and the two later findings. The quantization one gets a real entry rather than a mention, because its content is a REUSABLE fact about this codebase --- ConfigKind::Number validates finiteness and bounds and nothing else, and on_change cannot veto --- so any future setting needing a stronger predicate than a range meets the same wall. Also records the verification asymmetry that mattered: the raw-step bite fails the new witness while the pre-existing 0.37 test still passes. That is why it had to be a separate test, and it is the kind of detail a lane summary usually drops. New section for pre-checkout CI reds, which #220 hit three times. The job dies in "Set up job" before actions/checkout; grepping the full log for checkout/cargo/test-result returns 0. No code is fetched, so the red says nothing about the commit in either direction --- re-running it is a first execution, not a retry-to-green. It gets a section here and not a registry row on purpose: matching requires an exact test selector plus fragments, and no test ran. Making it a row would mean deforming the row shape. Whether the registry wants a non-row section for the class is left to its owner. Written down rather than acted on silently because the registry's opening instruction is to read it BEFORE attributing a red run to the environment, and that is exactly the attribution being made here. 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
1e054f7109
commit
b645fe7f3b
|
|
@ -304,10 +304,12 @@ correction from #171 and #215 — so the row below was filled in rather
|
||||||
than invented.
|
than invented.
|
||||||
|
|
||||||
- **Branch `gui-zoom`**, base `githubsucks/main` @ `218d2e7` (the #219
|
- **Branch `gui-zoom`**, base `githubsucks/main` @ `218d2e7` (the #219
|
||||||
merge). `githubsucks/gui-zoom` is the authoritative tip.
|
merge). Pushed; `githubsucks/gui-zoom` is the authoritative tip, at
|
||||||
|
`1e054f7`.
|
||||||
Recover: `git fetch githubsucks && git checkout gui-zoom`.
|
Recover: `git fetch githubsucks && git checkout gui-zoom`.
|
||||||
- **Framing `docs/gui-zoom-framing.md` revision 4**, approved after
|
- **Framing `docs/gui-zoom-framing.md` revision 5**, approved after
|
||||||
four review rounds. **Q#Z1 = (c)** configured base with `None`
|
four review rounds; revision 5 adds §3.2 for a finding raised against
|
||||||
|
the implementation. **Q#Z1 = (c)** configured base with `None`
|
||||||
preserved; **Q#Z2 = additive**; **Q#Z3 = (C)** commands only, no
|
preserved; **Q#Z2 = additive**; **Q#Z3 = (C)** commands only, no
|
||||||
default bindings; **Q#Z4** eager restore inside `install_state_dirs`.
|
default bindings; **Q#Z4** eager restore inside `install_state_dirs`.
|
||||||
|
|
||||||
|
|
@ -320,7 +322,7 @@ than invented.
|
||||||
dimension and `apply_font_facts` already re-metriced everything; this
|
dimension and `apply_font_facts` already re-metriced everything; this
|
||||||
drives the preference that existed.
|
drives the preference that existed.
|
||||||
|
|
||||||
### The three findings review caught, none of which was in revision 1
|
### The findings review caught, none of which was in revision 1
|
||||||
|
|
||||||
- **Q#Z3 was not implementable.** `keymap_stack::Scope` is
|
- **Q#Z3 was not implementable.** `keymap_stack::Scope` is
|
||||||
`Buffer | Mode | Global` with no frontend identity, and
|
`Buffer | Mode | Global` with no frontend identity, and
|
||||||
|
|
@ -339,14 +341,38 @@ drives the preference that existed.
|
||||||
- **Every size write clobbered the family.** `set_font` replaces both
|
- **Every size write clobbered the family.** `set_font` replaces both
|
||||||
fields unconditionally, so `{ size = n }` alone silently cleared a
|
fields unconditionally, so `{ size = n }` alone silently cleared a
|
||||||
configured family until restart.
|
configured family until restart.
|
||||||
|
- **The bounds could not carry the round-trip guarantee** (raised
|
||||||
|
against the implementation, not the framing). `ConfigKind::Number`
|
||||||
|
validates finiteness and bounds and *nothing else*, and `on_change`
|
||||||
|
is notified after the value is stored — so it cannot veto. A step of
|
||||||
|
`0.015` is therefore settable, and used raw it broke the framed
|
||||||
|
exact round trip: `16.00 -> 16.02 -> 16.01`. Fixed by quantizing the
|
||||||
|
step **and** the base at the point of use, which is the operation
|
||||||
|
`validate_font_size` already applies to sizes, one level up.
|
||||||
|
Set-time enforcement was rejected: the registry cannot express
|
||||||
|
precision, and a validating wrapper is bypassed by a direct
|
||||||
|
`pmacs.config.set` — the seam `autosave` documents about
|
||||||
|
`interval_ms`.
|
||||||
|
|
||||||
|
A fifth, documentation-only: the explanation of *why* `0.015` broke
|
||||||
|
said the two intermediates rounded in opposite directions. They do not.
|
||||||
|
`16.015` and `16.005` are exactly `1601.5` and `1600.5` centi-pixels —
|
||||||
|
both exact ties, and half-up sends **both up**. The mechanism is that
|
||||||
|
half-up is not symmetric under negation, so the two roundings
|
||||||
|
accumulate rather than cancel. Corrected in all three copies; no
|
||||||
|
behavior change.
|
||||||
|
|
||||||
### Verification
|
### Verification
|
||||||
|
|
||||||
13 acceptance tests, three bitten: dropping family preservation fails
|
15 acceptance tests, four bitten: dropping family preservation fails
|
||||||
3; reverting to the framing's first parser `^(%d+)$` fails 4 including
|
3; reverting to the framing's first parser `^(%d+)$` fails 4 including
|
||||||
the seam restore (it anchors to end-of-subject and rejects the
|
the seam restore (it anchors to end-of-subject and rejects the
|
||||||
newline-terminated file the writer emits); hardcoding the 16.0 origin
|
newline-terminated file the writer emits); hardcoding the 16.0 origin
|
||||||
fails the base test.
|
fails the base test; **using the raw step instead of the quantized one
|
||||||
|
fails the unrepresentable-step witness** with
|
||||||
|
`left: Some(16.01) / right: Some(16.0)` **while the pre-existing 0.37
|
||||||
|
test still passes** — which is exactly why the new case had to be its
|
||||||
|
own test rather than another parameter of that one.
|
||||||
|
|
||||||
### Not in scope
|
### Not in scope
|
||||||
|
|
||||||
|
|
@ -373,6 +399,41 @@ so this is load-sensitive and **undiagnosed** — recorded as a scope
|
||||||
note for the audit, not as a registry row: these were local, and the
|
note for the audit, not as a registry row: these were local, and the
|
||||||
registry judges red **CI** runs.
|
registry judges red **CI** runs.
|
||||||
|
|
||||||
|
## Pre-checkout CI reds — a class the registry has no row shape for
|
||||||
|
|
||||||
|
Seen 2026-08-06 on #220, three times across two runs (`M4`+`M5`, then
|
||||||
|
`M5` again on the rerun):
|
||||||
|
|
||||||
|
```
|
||||||
|
Prepare all required actions
|
||||||
|
Getting action download info
|
||||||
|
Failed to resolve action download info. Error: Internal Server Error
|
||||||
|
##[error]Failed to resolve action download info.
|
||||||
|
```
|
||||||
|
|
||||||
|
**This is not a flake and not a test failure.** The job dies inside
|
||||||
|
`Set up job`, before `actions/checkout` — a `grep` for
|
||||||
|
`checkout|cargo|test result:` over the full job log returns **0**. No
|
||||||
|
repo code is fetched, so the red carries *zero* information about the
|
||||||
|
commit, in either direction.
|
||||||
|
|
||||||
|
Two things follow, and both matter for signal integrity:
|
||||||
|
|
||||||
|
- **Re-running is a first execution, not a retry-to-green.** The rerun
|
||||||
|
rule governs a test that ran and failed; nothing ran here. The
|
||||||
|
discriminator is objective and cheap — did the job reach checkout?
|
||||||
|
- **It cannot be a registry row as the registry is written.** Matching
|
||||||
|
requires an *exact test selector* plus fragments, and there is no
|
||||||
|
test. Recorded here rather than forced into a shape it does not fit.
|
||||||
|
|
||||||
|
The second `M5` failure took **4m52s**, which read like a real run;
|
||||||
|
the duration was entirely retry backoff. Duration is not evidence that
|
||||||
|
a job executed — **the log is**.
|
||||||
|
|
||||||
|
Whether `docs/ci-red-signatures.md` should grow a short non-row section
|
||||||
|
for this class is an open question for its owner, not something this
|
||||||
|
lane decided.
|
||||||
|
|
||||||
## Tree primitive (P5) — MERGED as #217; adoption is the open work
|
## Tree primitive (P5) — MERGED as #217; adoption is the open work
|
||||||
|
|
||||||
**The lane is gone, not the work.** Rule 4 removes a lane after merge,
|
**The lane is gone, not the work.** Rule 4 removes a lane after merge,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue