Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 66 additions & 2 deletions .claude/skills/t27f/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -476,8 +476,72 @@ Traps:
- **A one-byte-short fit test cannot tell `w > cap` from `w > cap + k`.** Both return `cap + 1`
there. The original and the mutant only differ when the room is 2..k+1 bytes short, so the
test that kills the mutant is three bytes short, not ten.
- **Bands are in edge-list order, so a hub shows `account/*` first.** That is the stated rule,
not a ranking; do not caption the first three as the most important.
- **Bands were in edge-list order, so a hub showed `account/*` first.** Since t27#10762 (below)
they are ranked by how many specs import each row. Even so, do not caption the first three as
the most important: "most imported" is the only measure the card has.

#### Long names are abbreviated, not refused (t27#10728)

A shown name of at most 58 bytes is drawn byte for byte. A longer one is drawn as its first
segment, `/...`, and the longest run of whole trailing segments that fits
(`port/.../rings/CR-CHAT-03/src/confirmation_tag_chain`). When no whole run fits, it is drawn as
`...` and its last 55 bytes. Only drawn bytes are checked, and the text size follows the drawn
length. `why_card` is unchanged and still refuses a name over 58 bytes.

On 5440d35e1 the sweep compares the new binary with master's, card by card:

- 30 cards are newly drawn, 783 are byte-identical to master, and 0 are lost or refused;
- 0 changed cards and 0 newly drawn cards have no `...`, and 0 identical cards have one;
- 29 abbreviated forms are drawn: 27 `/.../` and 2 `...`, the longest 58 bytes;
- the helpers card (29 importers), a `/.../` focus and a `...` focus passed every pixel check,
with 0 white pixels outside x 100..980.

Lab traps from this run:

- **`pkill -f dn_lab.sh` kills the fs-lab command that runs it**, because the pattern is in that
command's own line. Write `pkill -f '[d]n_lab.sh'`, in an fs-lab call that names the script
nowhere else (see #10762's traps).
- **An untracked seal in the lab checkout makes `git checkout` fail, and the script then tests the
old commit.** Have the script take the commit it must test and stop with `WRONG COMMIT` when
`HEAD` differs. Once the PR adding a seal merges, that seal is tracked, so `rm -f` of it deletes
a tracked file: restore it with `git checkout --` before sealing.
- **Count a kill only on `^ ?FAIL [a-z]`.** The `FAIL 0` summary line otherwise counts as a failing
test, and a surviving mutant reads `KILLED by 1: 0`.
- **A `<` mutant of a 58-byte bound needs an unquotable byte that only the whole-name check
sees.** A 58-byte name with `:` in the middle is `true` under the mutant, because the dots form
hides that byte, and `false` under the rule.

#### Bands rank the most imported first (t27#10762)

Each band draws its specs by how many distinct specs import each of them in the whole edge list,
highest first. A repeated edge line counts once, and equal scores keep the edge-list order, so a
band of equal scores draws exactly what it drew before. The subtitle says
`most imported first in each band`. The direct counts, the transitive counts and `+N more` do not
change: only which names are drawn, and in what order. "Most imported" is the only measure; the
ranking is quadratic in the edge list, and the hub is the largest band measured (539 ms, 378 importers).

On 7853e2ef4 the sweep compares the new binary with the #10728 binary, card by card:

- 124 cards are reordered, 689 are the same, and 0 are lost or refused;
- 0 cards have a count that differs, and 0 drawn rows score higher than the row above them
(1647 rows checked; 3 rows have abbreviated names, so their scores are unknown);
- the hub `base/types` now shows `compiler/lexer`, `compiler/parser` and `igla/race/bram_weights`
in place of three `account/*` specs, and both it and `analog/linear` passed every pixel check;
- 21 of 21 mutants fail a named test, including the tie order, the repeated line, out-degree in
place of in-degree, and the hidden-name check run in edge-list order.

Traps from this run:

- **ffmpeg splits drawtext on `:` and `,` even inside the quoted text.** A subtitle with `:` made
ffmpeg refuse the whole graph ("Both text and text file provided"), and every test still passed,
because the tests compare the graph text and do not run ffmpeg. Every fixed text now passes
`dcard_text_ok`, which has a test and a negative control. Only a render catches this class.
- **`pkill -f '[r]k.sh'` still kills the fs-lab command if that same command line also says
`/root/rk.sh`.** The bracket trick only hides the pattern from itself. Run the pkill in its own
fs-lab call, then send and start the script in the next one.
- **`seal --verify` does not check the closure.** After a master merge changes an imported spec,
`--verify` still says MATCH, and frontier refuses the seal (#10749). Re-save the seal after any merge
that touches the closure.

#### Long names are abbreviated, not refused (t27#10728)

Expand Down
16 changes: 8 additions & 8 deletions .trinity/seals/t27f_t27f_deps_card.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,23 @@
}
],
"config": "gen=c,rust,verilog,zig;tests=zig",
"gen_hash_c": "sha256:683eaa26f084480224ca235b1b3c8fd3b3054e8b40c21ba9cbda756746e1182f",
"gen_hash_rust": "sha256:2e5b5fa8665015b90bf5adc6868fc719b0017e11b94639791a306cbf0bffbf9e",
"gen_hash_verilog": "sha256:a3778e7e0be41b04d8f4e4bcd5a8584394a1a6f78595832b4292a8aaf781373d",
"gen_hash_zig": "sha256:59fe61003bfe57fce363d3b6072112d96309dfe0a3819486afb7e518d80d1352",
"gen_hash_c": "sha256:3d48add519bafd236c700adf369f4108d1f3dfff3a2f5536f307cae64f684603",
"gen_hash_rust": "sha256:abdd5b77e5c07df08a243704b57ad0051d5b3cce0a8271c321778ca7e6525382",
"gen_hash_verilog": "sha256:5b18c1b146174b46ebcaa57c19cc15f62d27e05243662082a3c3bbc86d309232",
"gen_hash_zig": "sha256:671dcd2e8b4f2c0e56bad3c9b787c7c75971d3984dbb7ca097680dda81f2fba8",
"module": "t27f_deps_card",
"ring": 12,
"seal_schema": 2,
"sealed_at": "2026-10-19T01:13:38Z",
"sealed_at": "2026-10-19T01:35:52Z",
"sealed_by": "t27c-bootstrap@0.5.2",
"spec_hash": "sha256:96b9f08f0229d5408e2b44e9ced7519f68e898a9d3e8bc7a3c055bd72a93c893",
"spec_hash": "sha256:2668cf097b59a43a77bef448c2aef5cf575e437f97b5544250c6dcffbc0b9757",
"spec_path": "specs/t27f/deps_card.t27",
"tests": {
"failed": 0,
"failing": [],
"forced": false,
"passed": 17,
"total": 17,
"passed": 22,
"total": 22,
"vacuous": 0
},
"toolchain": {
Expand Down
Loading
Loading