oxedyne/fe2o3/fe2o3_austenite/tests/oracle/fixtures/oxeweb_techspec_repin_20260921/NOTE.md
3.3 KiB, 1 run
created by r1870400018:59359, which is this file's identity for as long as the history lasts, whatever it is later renamed to
download · who wrote it · its history
| 1 | # oxeweb-techspec re-pin — 2026-09-21 |
| 2 | |
| 3 | Golden-file re-pin of the `oxeweb-techspec` oracle root, following the inline |
| 4 | mid-prose content-fn expansion change (reader-completeness item 3). Lead |
| 5 | sign-off: coordinator, rc-3 slot. |
| 6 | |
| 7 | ## Hash change |
| 8 | |
| 9 | | | sha256 | |
| 10 | |---|---| |
| 11 | | BEFORE (`bac7751`, current pin) | `9a142b10b67a29a48cf151e9705bb90d6911ab3dbf8f56cc89c4f705185d400d` | |
| 12 | | AFTER (this change) | `18c263888e8cc159cce1b96cbf9cc9fee1617eeb56a99ed9dff1e9fc48e44708` | |
| 13 | |
| 14 | Pages 141 → 141, anchors 574 → 574 (structure unchanged; only inline `#oxe` |
| 15 | glyph occurrences differ). |
| 16 | |
| 17 | ## Why this is a self-pin, not a Typst-validated pin |
| 18 | |
| 19 | `oxeweb-techspec` has NO Typst oracle: `typst` 0.15.1 cannot compile it. Its |
| 20 | `utils.typ` (shared with `oxeweb-overview`) defines `cat()`/`tup()` helpers |
| 21 | using the `bracket.l.double` / `angle.l.double` symbol modifiers, **removed in |
| 22 | 0.15.1** with no glyph-identical replacement. `typst query` on the harness |
| 23 | dump exits 1, so the harness has always downgraded this root's oracle |
| 24 | comparison to a note (see `tests/oracle/mod.rs::corpus`). The pin is therefore |
| 25 | austenite's own output, and this re-pin is backed by human-legible visual |
| 26 | evidence rather than byte-acceptance. |
| 27 | |
| 28 | ## What changed, and why it is a fidelity improvement |
| 29 | |
| 30 | The document's `#let oxe = [#h(..)#box(.. scale(..)[$times.circle$] ..)#h(..)]` |
| 31 | binding is referenced inline mid-prose — `M#oxe`, `B#oxe` (ch08_tokens.typ). |
| 32 | |
| 33 | - **BEFORE:** an inline reference to a content binding was not expanded, so the |
| 34 | raw source `M#oxe` / `B#oxe` **leaked onto the page verbatim**, and was NOT |
| 35 | recorded as a refusal (a silent, untallied raw-markup leak). |
| 36 | - **AFTER:** the reference expands, exactly as an own-line reference already |
| 37 | does. The binding's body is Typst layout primitives austenite does not |
| 38 | implement (`#h`, `#box`, `scale`), so they are refused and TALLIED in the |
| 39 | skip report (`#h ×4, #box ×2`), setting no ink where the ⊗ glyph would go. |
| 40 | The raw `#` no longer reaches the page. |
| 41 | |
| 42 | Typst itself would set the scaled circled-times glyph (`M⊗`); austenite can do |
| 43 | neither engine's glyph without implementing `#box`/`scale`/`#h`, so the honest |
| 44 | outcome is a tallied refusal. The change converts a **silent raw-markup leak |
| 45 | into a tallied, clean refusal** — strictly better observability and no `#` |
| 46 | garbage on the page. |
| 47 | |
| 48 | ## Visual evidence (page 78, "Tokens / Units") |
| 49 | |
| 50 | - `page78_before_raw_oxe_leak.png` — four raw leaks: list items "written as |
| 51 | one moxe or **M#oxe**." / "written as **B#oxe**.", and the paragraph "One |
| 52 | full oxecoin is approximately **M#oxe 4,295 or B#oxe 4.3**." |
| 53 | - `page78_after_refused.png` — the same four occurrences now set "M." / "B." / |
| 54 | "M 4,295 or B 4.3" with the raw `#oxe` gone. |
| 55 | |
| 56 | Every other pixel on the page is identical between the two renders (same |
| 57 | headings, same 1/2/3 list structure, same paragraphs, same line breaks, same |
| 58 | folio and footer): the ONLY delta is the four `#oxe` occurrences. No corruption, |
| 59 | no structural change. |
| 60 | |
| 61 | ## Reproduction |
| 62 | |
| 63 | Rendered with the austenite binary at 150 DPI, page 78 of 141. BEFORE was |
| 64 | produced from the same tree with the inline-expansion pre-pass disabled, whose |
| 65 | full-document hash reproduced the current pin `9a142b10…` exactly — confirming |
| 66 | the probe is a faithful stand-in for `bac7751`. |
| 67 | |
| 68 | All 16 other pinned roots stay byte-identical; only this root moves. |