Shared cleanup and canonical example evidence
Pre-releaseShared cleanup and canonical example startup evidence
Draft #169, source
b43ea2cd3f66639ea320d33a4fe9d2ccaf9a369c, adds optional final cleanup to
runGame, moves Pong onto the shared native/browser loop, fixes its held-key
pause behavior and corrects 51 invalid palette references across six examples.
The browser scheduler cancels future frames, completes an active draw before
cleanup, and invokes cleanup once. Fatal native process failures cannot promise
cleanup. Existing callback-only calls remain supported.
Local acceptance
- A fresh package installs and runs the Jolt/image fixture in scene and direct-2D
modes on Radeon 760M DX12 and Vulkan. All four captures match all 16,384 expected
pixels and record exactly one cleanup. The first compile takes 270.609 seconds;
the second takes 3.390 seconds. These are test durations, not FPS. - An actual callback-only native program still completes the exact frame and
runs its post-loop cleanup once. - Compiled Pong replay records every pause state: the original held-key check
producesRPRPRPRPR, while the corrected edge check producesRPPPPPPPP.
The first frame precedes application of the injected event. - All 20 canonical native examples compile/link after the palette correction.
Corrected Pong and the actual engine also complete the full web build. A
committed-source receipt proves its embedded game WASM matches compilation
of the final committed Pong source. Browser rendering is not inferred. - Nine scheduler tests, nine web-command tests, palette rejection controls,
repository/quality contracts, formatting, strict Clippy and WASM checking pass.
Local native fixture acceptance preceded the later palette/documentation changes;
the exact final hosted package validates the committed source. Local tools use
Perry 0.5.1220 with the qualified matching source-built runtime profile. DX12 has
the Windows SDK compiler DLLs on PATH. This is headless rendering acceptance.
Failures retained
The first actual Pong replay failed reading an undefined color's r member:
Colors.White and similar mixed-case properties do not exist in the uppercase
Colors palette. Linking alone had missed that problem. The subsequent eight-frame
pause audit used a wrong expectation because input becomes active on the next
frame. Its failure is retained as a harness mistake. The final nine-frame replay
distinguishes old and corrected behavior without changing the game logic.
The early candidate.patch and initial WASM compile represent intermediate
source. final.patch, the committed source receipt, and source/ identify the
final implementation. Private executables, installed trees, generated HTML/WASM,
build distributions and caches are excluded from the evidence archive.
Hosted acceptance
Hosted Tests run 34561587869 passes all 22 jobs. The fresh installed Windows package renders all expected pixels in both scene and direct-2D modes with exactly one cleanup, using Microsoft Basic Render Driver. The native build, all 20 example links, installed web command and hosted macOS tests also pass. PR head and hosted merge checkout have identical Git trees. Windows raster goldens skip the CPU adapter; the installed startup captures are real software rendering acceptance, not physical-GPU or performance qualification.
The exact installed Windows package also records one cleanup in each mode. The
hosted JavaScript-driven browser smoke passes; it does not execute a compiled
Perry game. That stronger gate is introduced separately in draft #170.
Remaining scope
Actual compiled-game browser rendering, all-example runtime acceptance, visible
native presentation, packaged DXC/DXIL, general Windows long-path support, fixed
updates and the full one-command starter remain open. #170's initial Windows
shared-test job subsequently fails with an access violation despite FXC; #169's
successful run does not resolve that continuing test/driver instability. No
rendering baseline or threshold changes, merges or npm releases are performed.
RTX 4080-specific acceptance remains unperformed.