diff --git a/audit-findings.md b/audit-findings.md index 4fb6c9c..b8b6c54 100644 --- a/audit-findings.md +++ b/audit-findings.md @@ -618,7 +618,7 @@ convention (`twi 31, r0, IMM`) not handled. Two LOW findings for stale manual sn ### PPCBUG-066 — Stale frozen snapshots in ppc-manual for td/tdi/tw/twi - **Severity**: LOW -- **Status**: open +- **Status**: applied (P7 manual regen, 2026-05-02) - **Location**: `ppc-manual/branch/td.md`, `tdi.md`, `tw.md`, `twi.md` - **Symptom**: all four show the old unconditional-trap stub (`// For now, just trace and continue`) instead of the current TO-field-evaluating implementation. @@ -1197,7 +1197,7 @@ and confirmed correct (PPCBUG-115 informational). One MEDIUM documentation findi ### PPCBUG-117 — Stale frozen snapshot in `ppc-manual/memory/ldarx.md` - **Severity**: LOW -- **Status**: open +- **Status**: applied (P7 manual regen, 2026-05-02) - **Location**: `ppc-manual/memory/ldarx.md` (frozen snapshot section) - **Symptom**: Snapshot uses old field name `ctx.reserved_addr`; live code uses `ctx.reserved_line = ea & !RESERVATION_MASK` (M3 refactor). Cosmetic only. @@ -1443,7 +1443,7 @@ and PPCBUG-130: `invalidate_for_write` is never called from any plain store arm. ### PPCBUG-145 — stwcx: stale manual snapshot uses `reserved_addr` (LOW) - **Severity**: LOW (documentation only; live code is correct) -- **Status**: open +- **Status**: applied (P7 manual regen, 2026-05-02) - **Location**: `ppc-manual/memory/stwcx.md` (frozen snapshot section) - **Symptom**: The frozen snapshot shows `ctx.reserved_addr == ea` (exact-word comparison). The live code at `interpreter.rs:1137-1153` uses `ctx.reserved_line == line` where diff --git a/audit-report-2026-04-29.md b/audit-report-2026-04-29.md index d5e1a06..aefbdbc 100644 --- a/audit-report-2026-04-29.md +++ b/audit-report-2026-04-29.md @@ -466,6 +466,25 @@ After applying Phase 1 alone, run `xenia-rs check sylpheed.iso -n 4B --parallel` --- +### P7 — Frozen-snapshot drift sweep (2026-05-02, manual regen — no xenia-rs code change) + +**PPCBUGs fixed**: 3 IDs. +- PPCBUG-066: ppc-manual/branch/{td,tdi,tw,twi}.md — old unconditional-trap stub replaced with current TO-field-evaluating implementation snippet. +- PPCBUG-117: ppc-manual/memory/ldarx.md — refreshed to current reservation_line/reservation_table model. +- PPCBUG-145: ppc-manual/memory/stwcx.md — same reservation refresh. + +**Methodology**: ran `python3 ppc-manual/generator/generate_manual.py` (the existing idempotent generator that scrapes xenia-rs and xenia-canary source for each opcode and emits a Markdown page). Output: 350 family pages updated, 598-key index.json refreshed. + +**Verification**: post-regen `grep` confirms (a) the old "For now, just trace and continue" stub is gone from every page; (b) modern constructs (`trap::evaluate`, the current reservation pattern) appear in the trap and reservation pages. + +**Note on scope**: the `ppc-manual/` directory is not versioned in `xenia-rs/.git`. The regen is therefore "done by running the script" with no commit landing in this repo. Documented for posterity here. + +**Implicit drift cleared by earlier phases**: addicx (PPCBUG-003 fixed in P4), andisx (PPCBUG-023 fixed in P4), cmp/cmpi (PPCBUG-050 — no code change required; manual snapshot now reflects current behavior), extsbx/extshx (PPCBUG-036/037 fixed in P4 batch 2), 32 in batch 1 — all auto-resolved by re-running the generator after P1-P6. + +**Conclusion**: P7 is functionally complete. No xenia-rs code change. Next: P8 — test gap closure. + +--- + ## Index — every PPCBUG referenced (in numerical order) This list intentionally includes every ID found in `audit-findings.md` so nothing is dropped. For each entry's full description / file:line / fix snippet / test recommendation, see the corresponding `### PPCBUG-NNN` heading in `audit-findings.md`.