docs: record TAS correction commits and outstanding merge gates

This commit is contained in:
Matthew Stanley
2026-09-15 12:45:16 -07:00
parent 637c0e3649
commit d91fa85bee
2 changed files with 217 additions and 0 deletions
+26
View File
@@ -213,6 +213,32 @@ on a fixed region -> next.
## 5. Status / Log (update every session)
- **2026-09-15 (TAS corrections approved for publication):**
Owner approved the audit checkpoint and requested commits on the PR branch,
publication and merge-prerequisite notes. Prepared additive commits 65fd320f
(test gates), 0ac5bb84 (runtime CI), 637c0e36 (retired replay card option).
Re-ran the complete local suites: 161 recompiler/TAS and 118 no-BIOS runtime
enabled tests pass. GitHub confirms mstan cannot push to Alexbeav/psxrecomp;
draft32/37 also disable maintainer edits. Publication is awaiting fork access
or owner direction to use an upstream handoff branch. No merge or fork update.
See `TAS_STACK_OBJECTIVE_CHECKIN_20260915.md`; central issue beads-eio.3.164.
- **2026-09-15 (TAS split objective regression gates, audit checkpoint):**
On the complete draft stack f7652e2b, repaired stale no-hack/SIO/cache/exception
fixtures, optimized-build assertions, GNU fixture linking and stale source
checks. Added a fixture-only build aggregate plus runtime CI coverage. Removed
the dead replay card-repair option without changing runtime behavior or card
identity checks. GNU16.1 Release suites pass 161 recompiler/TAS and 118 runtime
enabled tests; a fresh no-BIOS aggregate also passes. Five existing disabled
tests remain disabled. Fresh Clang22 SCPH1001/Tomba/MMX6/Ape builds pass six
cold/warm 11000-frame runs with zero kernel mismatches/dirty aborts. Screenshots
confirm Tomba FMV/title, MMX6 attract gameplay and Ape's populated Load Game
list, without a card workaround. Original cards/pins untouched; no full-game,
write/reload, live-oracle, source-TAS, enhanced-renderer or Tomba2 qualification.
Corrections remain local/uncommitted on fix/tas-regression-gates-20260915 for
human class-fix audit before commit/push; no merge. See
`TAS_STACK_OBJECTIVE_CHECKIN_20260915.md`; central issue beads-eio.3.164.
- **2026-09-13 (SIO card hack removal — branch-only review checkpoint):**
Reproduced fixed-Ape-RAM IRQ7/mask injection after an absent-card probe,
plus SELECT-time ACK fabrication and INTC-pending ACK requeueing with the
@@ -0,0 +1,191 @@
# TAS stack: objective fixes and validation checkpoint
Date: 2026-09-15. Central tracker: `beads-eio.3.164`.
## Outcome
The reproduced test/build failures are repaired locally. The full enabled
recompiler/TAS and runtime suites pass. Fresh Tomba, Mega Man X6 and Ape Escape
builds pass bounded cold/warm runs; Ape's actual Load Game route displays the
populated save list without a game-specific card workaround.
This is not approval to merge the entire experimental runtime stack. Exact
source-profile retail replay qualification remains outstanding. The owner has
approved committing/publishing the corrections. Local commits are prepared;
publication onto the contributor's PR branches is blocked by GitHub permissions.
Nothing has been merged or changed on a contributor's branch.
## Branch and review scope
- Worktree: `F:/Projects/psxrecomp/_review-tas-stack-20260915`.
- Local branch: `fix/tas-regression-gates-20260915`.
- Correction base: `f7652e2b82cdd474c40d6d27a05ab4ccbf47795d`, the complete
submitted stack. Corrections are appended, without rewriting that history.
- The owner approved the human-audit checkpoint. Prepared code commits:
`65fd320f` (test gates), `0ac5bb84` (runtime CI), `637c0e36` (dead card option).
- Upstream master checked: `193a60b805e1eaa853129d6ccf63022440d4b143`.
Its tree exactly matches stack base `5968162f`; there is no current tree-level
rebase conflict to resolve. This does not imply runtime equivalence of the
later stack slices.
- [Original upstream PR 361](https://github.com/RetroPortingToolKit/psxrecomp/pull/361)
is closed. [PR 366](https://github.com/RetroPortingToolKit/psxrecomp/pull/366)
is already merged.
The remaining draft stack is:
| Draft | Slice | Reviewed head |
|---|---|---|
| [Alexbeav #32](https://github.com/Alexbeav/psxrecomp/pull/32) | Source timing core | `033ba4f4` |
| [Alexbeav #33](https://github.com/Alexbeav/psxrecomp/pull/33) | TAS/replay tooling | `51e63d01` |
| [Alexbeav #34](https://github.com/Alexbeav/psxrecomp/pull/34) | GPU source projection | `bd885702` |
| [Alexbeav #35](https://github.com/Alexbeav/psxrecomp/pull/35) | Controller/card replay | `ab8e73a0` |
| [Alexbeav #36](https://github.com/Alexbeav/psxrecomp/pull/36) | CD-ROM/MDEC source work | `732bc3f1` |
| [Alexbeav #37](https://github.com/Alexbeav/psxrecomp/pull/37) | Campaign documentation | `f7652e2b` |
The authenticated `mstan` account has `push=false` on `Alexbeav/psxrecomp`;
fork PRs 32 and 37 report `maintainerCanModify=false`. Direct updates require
write access to the fork. An upstream handoff branch and linked PR notes are
the alternative awaiting owner direction; no force-push is appropriate.
Relative to master this local branch contains the contributor's runtime work;
only the **new local correction diff** is test/CI/tooling/documentation work.
## Objective corrections
1. Remove obsolete `test_sio_card_repair.c`, which referenced deleted state and
asserted that the retired hack injects IRQ7/I_MASK. Keep the four production
SIO no-hack scenarios, including the environment-variable resurrection guard.
The deleted obsolete fixture is recoverable from Git.
2. Supply the inactive-route input callback to four isolated SIO fixtures;
restore missing CPU-boundary, exception-context and MDEC link seams in other
isolated fixtures. These helpers are not linked into production games.
3. Keep assertions enabled for test executables in optimized builds, recursively
including nested test directories. Add a compile/run regression verifying
assertions really execute, production still has NDEBUG, and the fixture-only
aggregate does not build production. All 212 inspected production runtime/
oracle compile commands remain free of `-UNDEBUG`.
4. Fix the GNU GPU dot fixture's linker configuration, the missing host-path
include, the stale SYS02 return-value expectation, and stale fast-forward and
v7/v8 snapshot source checks. No device expectations were relaxed to conceal
a production failure.
5. Add `psxrecomp-test-fixtures` and make the TAS CI workflow also build/run the
runtime suite without retail assets. The new sequence passes locally with
**no linked BIOS backend**. Hosted GitHub CI has not run these commits.
6. Remove the dead replay `--legacy-card-repair` option, its environment write,
profile arguments and documentation. Tests check its absence and retain
rejection of unqualified card models. Old external replay commands must drop
that argument. Runtime card behavior, card-image size/hash validation and
source-profile identity gates are unchanged.
No local edits to `runtime/src`, `runtime/include`, `recompiler/src`, generated
C, release pins, or original game saves were made.
## Automated validation
| Surface | Result |
|---|---|
| Recompiler/TAS, GNU 16.1, UCRT Windows, Release, CHD enabled | 161/161 enabled tests pass |
| Runtime fixtures, GNU 16.1, Release | 118/118 enabled tests pass |
| Fresh no-BIOS runtime fixture aggregate and CTest sequence | Build passes; 118/118 enabled tests pass |
| New Release assertion/aggregate regression | Passes with GNU 16.1 and Clang 22.1.8 |
| Whitespace/error check | `git diff --check` passes |
Three pre-existing recompiler tests remain disabled: `interpreter_perf_guards`,
`runtime_perf_diag_guards`, `overlay_pair_dedup_runtime`. Runtime keeps the two
pre-existing disabled tests `sio_dualshock_rumble_test` and `spu_fidelity_test`.
Disabled/skipped/unconfigured tests are not counted as passes. Optional netplay
dependencies, hardware GL readback and a live independent Beetle oracle were
not configured for this run.
Local test evidence is in `build-review/Testing/Temporary`,
`build-runtime-review/Testing/Temporary`, and `build-runtime-ci/Testing/Temporary`.
## Fresh game validation
Artifacts and reproducible scripts:
`F:/Projects/psxrecomp/_validation-tas-stack-20260915`.
All three games and SCPH1001 were freshly generated, then built using Clang
22.1.8 / Ninja / RelWithDebInfo. BIOS HLE was off. No old overlay cache was copied;
cold runs generated ABI-24 overlays, and warm runs reused the resulting cache.
All inherited PSX environment overrides were cleared. No source-replay profile,
card workaround, IRQ suppression, fingerprint bypass or manual generated-C edit
was used. These headless runs exercise software video and guest audio generation,
not audible host playback or the enhanced renderer.
| Title / run | Final frame | Native overlay dispatches | Inspected visible coverage |
|---|---:|---:|---|
| Tomba cold | 11,002 | 910,366 | Opening FMV and title |
| Tomba warm | 11,010 | 1,076,585 | Opening FMV and title |
| MMX6 cold | 11,015 | 1,103,542 | Opening sequence and gameplay attract/demo |
| MMX6 warm | 11,009 | 1,206,539 | Opening sequence and gameplay attract/demo |
| Ape cold | 11,008 | 990,427 | Opening sequence and title |
| Ape warm + Load Game | 11,007 | 16,071,049 | Title, Up, X, populated save list |
Every run: exit code 0, zero kernel mismatches, zero dirty-interpreter aborts,
and nonzero guest SPU output. These are bounded liveness/correctness checks,
not a performance comparison or full-game certification.
Ape evidence: `ape/results/candidate-warm-load/load-settled.png` and `report.json`.
The list shows Wlau1 100%, Wlau2 83.3%, File3 83.3%, and File4 No Data. The original
cards retain their pre-test hashes. The isolated writable card1 copy changed five
bytes confined to sector 63 during this testing. This
write has not been attributed against an exact-master control, so this run is
**not** a save/write/reload persistence qualification. Do not overwrite original
cards with these test artifacts.
Test executable SHA-256:
```text
tomba 742ce2341c059a2c06fb9b3acd1c8d84fb77dfdd09f533a93c6e3c0756cf7c4f
mmx6 1ae381d0cda638908842453b8709a770256a5dd918d9e958d289f4afa96a40f2
ape b090a1f07e8334309408efc8712ff0af01e7ffdc839abf67ae2cac1b7dfcae44
```
BIOS SHA-256:
`71af94d1e47a68c11e8fdb9f8368040601514a42a5a399cda48c7d3bff1e99d3`.
Fresh BIOS emitter fingerprint:
`914f43179654baabb1e48785b181ceda8f323a7eae662c458f3ca6e6fee00c29`.
## Remaining work and merge judgment
- Publish the approved correction commits through an authorized branch, then
attach the change summary and prerequisites to the draft PRs. Direct fork
access is currently unavailable. Run hosted CI on the chosen integration
branch. The corrections are low game-regression risk: production code and
flags are unchanged. Retired replay CLI arguments are the intentional
compatibility change to call out.
- Keep the experimental runtime drafts as drafts until fresh integrated Tekken,
Pepsiman and Biohazard source-profile replays establish their declared input,
return-clock, RAM and card identities. Historical campaign passes are not
evidence for this integration. The exact retail assets/reference sets were not
located in the checked local game/download/PSX-library locations.
- Biohazard's historical one-cycle/terminal-RAM mismatch remains an explicit
unresolved qualification issue, not something to waive based on these smokes.
- Full gameplay, audible FMV/audio sync, save/write/reload, enhanced renderers,
rewind/netplay and Tomba 2 were not qualified here. A fresh exact-master
comparison is required before attributing any subtle difference to this stack.
The remaining timing/fidelity questions are objectively testable with the right
assets and independent traces. They do not inherently require a subjective
opinion from the contributor. Human play remains useful for audiovisual quality
and broader gameplay acceptance, not as a replacement for identity checks.
## Suggested local follow-up order
1. Compare Ape's isolated card sector-63 write with a freshly built exact-master
control using the same initial card and route. Preserve both output cards and
traces; do not attribute the write to this stack before that comparison.
2. Exercise a save/write/clean-exit/relaunch/load route on isolated card copies.
3. Obtain the exact owned retail images and independent replay/reference sets,
regenerate from the final integrated source, and run Tekken, Pepsiman and
Biohazard identity gates. Do not bypass historical-fingerprint rejection.
4. Address any first divergence with a reduced objective fixture; retain draft
status while a claimed profile has an unexplained mismatch.
The fixes were tested on the complete stack, not every intermediate draft
slice. Do not put the complete-stack head onto an earlier split branch: that
would import later runtime changes into its review. If corrections are moved
into earlier slices, apply only the relevant changes and revalidate each slice.
Tracker notes are saved centrally; Dolt push remains blocked by the pre-existing
missing remote data ref. No tracker initialization or unrelated repair was done.