re(ui): the 60 nameless RATC children are frames, not children -- .tan decoded

Closes the reach caveat the `opt ` name fix left behind: 60 of 18 002 RATC
children carry no `opt ` block, and it was not established whether they lack one
or sit past our 128-byte window.

Neither. They are not children. `examples/ratc_optless_children.rs` re-runs
`ratc::parse`'s own guards over the disc and reports which one fired: all 60 are
"tag beyond the window", none is rejected by length, gap or charset, none is
child #0, and all 60 live in six bundles of one archive. Within a bundle the
distances back to the nearest tag are an exact arithmetic progression, step
60 600 -- ten different records finding the SAME tag, because there is only one.

Reading a bundle directly: children 1..10 are equal-size T8aD blocks under a
single `opt ` name, `pb_f15_eg_anm.tan`. `.tan` is a FRAME SEQUENCE. One block
declares the resource; its payload is a run of T8aD frames.

Disc-wide, over all 18 718 `opt ` names in all 33 paks: a RATC bundle names
exactly six kinds of resource -- `.t32` 14 756, `.rat` 3 311, `.prm` 367,
`.tbm` 224, `.sbo` 54, `.tan` 6. Six `.tan`, ten frames each = 60, the entire
population with nothing left over. The negative is closed, not narrowed.

Consequence recorded but deliberately not fixed: `ratc::parse` over-reports
there, listing a `.tan`'s frames as anonymous children. Nothing in the menu
milestone reads a `.tan` -- it occurs only in GP_READY_ROOM, which S1 ruled
out -- so no screen the port draws changes.

Also a METHOD entry for this container OOM-killing `slb_leading_segment_disc`
under default test parallelism (SIGKILL, no assertion; 8/8 pass with
--test-threads=1).
This commit is contained in:
Sylpheed RE agent
2026-08-29 07:39:09 +00:00
parent 0ed33bcd38
commit 1a82ade187
9 changed files with 414 additions and 5 deletions

View File

@@ -857,3 +857,20 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
that did not resolve: none" — the diagnostic was structurally unable to see it.
When adding an early-out to a loop that already reports what it discards, make
it report through the same channel, or it becomes a place findings go to die.
* **"It has no name" can mean "it is not a thing that gets named."** Sixty RATC
children had no `opt ` name block and the open question was whether the block
was absent or merely outside our search window. It was neither: the sixty are
*frames*, ten each of six copies of one `.tan` animation, and one `opt ` block
names the whole run. The give-away was in the data before any hypothesis was —
the distances back to the nearest tag were an exact arithmetic progression
(`213 + n·60600`), i.e. ten different records finding the *same* tag. When a
negative result's measurements come out evenly spaced, the thing you are
counting is probably not the thing the format counts.
* **This container OOM-kills `slb_leading_segment_disc` under default test
parallelism.** It dies with `signal: 9, SIGKILL` and no assertion — eight
threads each holding a slice of a ~1.1 GB bank. It is not a regression and not
a flake, and it reproduces when run alone. `-- --test-threads=1` passes 8/8 in
20 s. Before believing a SIGKILL in this repo, re-run the suite serially;
before believing a *pass*, check nothing else heavy was sharing the box.