Files
xenia-rs/crates/xenia-app/tests/golden/README.md
MechaCat02 43441523f9 [iterate-4A] intro-video: re-baseline boot golden 50M -> 200M after clock fix
The clock fix (INSTRUCTIONS_PER_MS 10_000 -> 1_000_000, commit 645feb8) moves
the worker-hub +66 ms render gate from ~660k to ~66M instructions, so the old
-n 50M anchor is now pre-render (swaps=0) and no longer guards boot rendering.

Re-anchor sylpheed_n50m -> sylpheed_n200m: at -n 200M the fixed build renders
steadily (draws=3165, swaps=895) and the stable digest is deterministic across
repeated inline lockstep runs. Renames the golden, updates the test's -n and
doc comment, and refreshes tests/golden/README.md. Per the README's re-baseline
policy (intentional digest move -> separate commit).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 20:39:38 +02:00

79 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sylpheed regression goldens
These JSON files anchor `xenia-rs check` digest output for Project Sylpheed.
## Files
| File | -n | Mode | Captures |
|------|----|------|----------|
| `sylpheed_n2m.json` | 2_000_000 | full digest | early boot (swaps=0, no rendering) |
| `sylpheed_n200m.json` | 200_000_000 | stable-digest | steady boot rendering (draws=3165, swaps=895) |
Note: `sylpheed_n200m.json` replaces the former `sylpheed_n50m.json`. The
intro-video clock fix (`INSTRUCTIONS_PER_MS` 10_000 → 1_000_000) moved the
worker-hub `+66 ms` render gate to ~66M instr, so 50M is now pre-render
(swaps=0). Re-anchored to 200M to keep the golden guarding boot rendering.
## Stable-digest mode
`sylpheed_n200m.json` is captured with `--stable-digest`, which omits
timing-sensitive counters: `packets` (±28% lockstep noise from a GPU thread
race), `resolves`, `interrupts_delivered`, `interrupts_dropped`,
`texture_decodes`. The remaining fields are byte-identical across repeated
lockstep runs at a fixed -n.
`sylpheed_n2m.json` predates the stable-digest flag and uses full-digest
compare. It still works because at -n 2M the GPU pipeline has not produced any
packets yet — `packets=0` is trivially deterministic.
## Circularity hazard
Per ORACBUG-001/002/003, these goldens were captured by running the same code
they validate. They detect **regression** from a known-good snapshot, not
**correctness**. When a planned fix intentionally moves the digest (e.g. a
shader fix landing `draws > 0` for the first time), re-baseline the golden as
a separate commit and reference the audit ID in the message.
## Re-baselining
```sh
cargo build --release -p xenia-app
target/release/xenia-rs check \
"$SYLPHEED_ISO" \
-n 200000000 \
--gpu-inline \
--stable-digest \
--out crates/xenia-app/tests/golden/sylpheed_n200m.json
```
## Running the goldens
```sh
cargo test --release -p xenia-app --test sylpheed_oracles -- --ignored --nocapture
```
The tests are `#[ignore]`-gated because each run takes a few seconds, which is
unacceptable in the default `cargo test` cycle. The ISO path defaults to the
contributor's local `~/RE Project Sylpheed/Project Sylpheed*.iso` and can be
overridden via `SYLPHEED_ISO=/path/to/sylpheed.iso`.
## n4b canonical-invocation regression anchor (deferred)
The audit's recommended next sprint also called for a `sylpheed_n4b.json`
golden capturing the canonical reference invocation
`xenia-rs check sylpheed.iso -n 4_000_000_000 --parallel --reservations-table`.
This is **deferred** because:
1. The `--parallel --reservations-table` combination is empirically pathologically
slow at -n 100M (>32 min per run per the audit memory). At -n 4B the run cost
is many hours, not the single-session-friendly 515 min the original plan
estimated.
2. Each phase that intentionally moves rendering counters (C, D, E, F) would
need a re-baseline of n4b — a significant time cost compounding over the
sprint.
Once the renderer-unblock phases (C+D+E) land and `draws > 0` is confirmed at
-n 100M lockstep, an n4b artifact may be captured one-shot and stored under
`audit-runs/post-fix/` (not as a test golden) as a manual regression anchor for
the canonical invocation.