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>
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user