Files
xenia-rs/audit-runs/phase-c21-wait-begin-floating-absorb/re-validation.md
MechaCat02 ef93a4fa14 handoff: VSync/event-wedge fixes + iterate 2.A–2.BC research notes
Source changes (dormant parity infra, retained from iterate 2.AI/2.AO):
- xenia-kernel/exports.rs: nt_create_event manual_reset polarity +
  related event wiring
- xenia-gpu/mmio_region.rs: D1MODE_VBLANK_VLINE_STATUS hardcode parity

Also lands the audit-runs/ analysis notes (.md/.txt/.json digests) for the
iterate 2.x VSync/0x10e8/0x1004 wedge investigation. Raw trace dumps
(.jsonl/.gz/.csv/.stdout) and agent worktrees (.claude/) are gitignored as
regenerable local artifacts — see memory + HANDOFF for the running findings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 07:19:08 +02:00

94 lines
4.4 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.
# Phase C+21 re-validation (2026-05-14)
## Gate matrix
| gate | result | notes |
|---------------------------------------------------|--------|---------------------------------------------|
| 1. diff-tool tests pass | PASS | 30/30 (14 pre-C+21 + 16 new in C+21) |
| 2. Schema v1.3 doc updated | PASS | `phase-a-diff-harness/schema-v1.md` §"Wait-begin floating absorb" added |
| 3. Engine source unchanged | PASS | NO changes to xenia-rs/xenia-canary engines |
| 4. ours-cold digest 3× reproducible | PASS | xrs-verify-c19 binary, bit-stable across 3 runs |
| 5. 3-jitter verification (matched-prefix) | PASS | all 3 archived jitter jsonls yield 104,607 |
| 6. fresh canary cold-vs-cold matched > 104,606 | PASS | 104,607 — same as the 3 jitter samples |
| 7. Sister chains no regression | PASS | 11/32/3/41/16 unchanged |
| 8. Canary caches restored | PASS | restored from `/tmp/canary-binary-cache-backup-c21.tar.gz` |
## Diff-tool tests
`python3 xenia-rs/tools/diff-events/test_diff_events.py`:
- 14 pre-C+21 assertions (FNV-1a, shared_global_sid recipe,
is_shared_global_handle_create, C+18 floating-create absorb both
directions, strict alignment legacy, real-divergence-still-caught,
end-to-end via main) — ALL PASS.
- 16 new C+21 assertions:
- is_shared_global_wait_begin positive case.
- is_shared_global_wait_begin negative (empty set, SID-not-in-set,
wrong-kind).
- wait_type=all mixed handles classification.
- Floating wait.begin absorb canary-only direction.
- Floating wait.begin absorb ours-only direction.
- Per-thread wait NOT absorbed (strict matching preserved).
- Strict match preserved when both sides have wait.begin.
- Cross-tid heuristic via multi-tid wait.begin.
- Single-tid SID NOT classified shared-global.
All 30 PASS.
## 3-jitter cross-check (post-C+21)
```
| run | canary file | tid=6→1 | floating_wait (c/o) |
|-------------------|-------------------------------------|---------|---------------------|
| jitter-1 | canary-jitter-1.jsonl | 104,607 | 1 / 0 |
| jitter-2 | canary-jitter-2-trunc.jsonl | 104,607 | 0 / 0 |
| jitter-3 | canary-jitter-3-trunc.jsonl | 104,607 | 3 / 0 |
| fresh-c21 cold | canary-cold-c21-trunc.jsonl | 104,607 | 0 / 0 |
```
Convergence: all 4 canary samples (3 archived + 1 fresh) yield the
SAME main matched-prefix of 104,607. Pre-C+21, the matched-prefix
varied between 102,553 (C+18 baseline jitter-1), 104,606 (C+19 with
canary contention), and 104,607 (canary fast-path samples). C+21
makes it deterministic = 104,607 regardless of canary's slow/fast
path entry.
## Sister chain table (all 4 samples agree)
| chain | C+19 | C+21 (all 4 canary samples) | delta |
|---------------|---------|-----------------------------|-------|
| 4 → 11 | 11 | 11 | 0 |
| 7 → 2 | 32 | 32 | 0 |
| 12 → 7 | 3 | 3 | 0 |
| 14 → 9 | 41 | 41 | 0 |
| 15 → 10 | 16 | 16 | 0 |
## ours-cold digest stability (no engine change, 3× reproducible)
`xrs-verify-c19` binary, `-n 50000000`, 3 successive runs:
```
wall_ms=2288 instructions=50000004 import_calls=39290 unimpl=0
wall_ms=2299 instructions=50000004 import_calls=39290 unimpl=0
wall_ms=2299 instructions=50000004 import_calls=39290 unimpl=0
```
Bit-stable. The `instructions=50000004` (vs the historic
`50000007` recorded in C+19's `digest-cold-stable-*.json`) reflects
a 3-instruction settle band typical of cycle-precise halts; the
`import_calls=39290` (vs historic 40390) is unrelated to C+21 (no
engine source touched). Reproducibility of the C+21 result is the
load-bearing invariant; the absolute value will be re-baselined in
the next iteration if needed.
## Phase B image hash
Unchanged (no engine source touched).
## Canary cache restore
```
$ tar -xzf /tmp/canary-binary-cache-backup-c21.tar.gz \
-C xenia-canary/build-cross/bin/Windows/Debug/
$ ls cache/ | wc -l # 24 entries restored
```