Files
Chimera GFX release export a6037502d7
phase0-ci / build-and-audit (push) Successful in 2m14s
Publish Chimera GFX source
2026-09-03 03:27:14 +02:00

1102 lines
46 KiB
Markdown

# Test plan
## Test classes
### Host unit tests
- API rejects null, undersized, wrong-version, unknown-backend, unknown-flag,
and render-request configurations.
- mock context lifecycle and capabilities are deterministic.
- surface/texture validation, upload, present ordering, ownership, limits, and
resource-busy cleanup are deterministic;
- adapter queries never claim acceleration or hardware contexts;
- probe logic handles complete, partial, and failed resolution without
exposing addresses or invoking callbacks as functions.
- repeated cleanup is safe where the API contract permits it.
### Static policy tests
- generated symbol include matches the JSON manifest byte-for-byte;
- no GNM identifier appears as a C call expression;
- no submit, draw, dispatch, flip, queue-map, resource-registration, MMIO, or
firmware-patch operation is called by project C sources;
- the PS5 platform shim uses only the approved dynamic-loader surface;
- no build target contains `deploy`, `upload`, `send`, `run-ps5`, or boot hooks;
- the discovery-only firmware allowlist is exactly `["9.60"]`, the CMake
default remains `NONE`, and Phase-1 rejects every non-`NONE` gate;
- Phase-1 firmware validation precedes `SDL_Init` and present;
- the Phase-1 target is off by default and never links SDL2main.
### Reproducibility checks
- SDK release download matches the locked SHA-256 and size;
- generated files are current;
- clean host configure/build/test works without network access;
- Docker base is pinned by digest and direct tool packages are version-pinned;
- PS5 compile uses the locked SDK and produces an ELF without contacting a PS5.
- artifact generation binds the byte hash and clean source commit; verification
rejects changed bytes or execution claims;
- artifact consumers reject `execution_eligible=false`, malformed inputs, and
permanent denylist hashes;
- the Phase-0.5 minimal-startup option fails configuration while its loader
caller contract is unproven;
- Phase-0.6 exact loader/manager identities, binary audit, call graph, effect
classes, and blocked artifact state validate offline;
- Phase-0.7 hardened loader, controlled manager, and lifecycle probe have
byte-identical double clean builds, exact import/DT_NEEDED inventories,
complete call-edge inventories, and a passing static deployment gate;
- Phase-0.8 records a blocked offline preflight whenever exact permission,
collector side-effect freedom, two-source firmware identity, current live
topology, or byte-exact rollback evidence is absent; tests reject any
invented on-device action, authorization, or completed dataset;
- Phase-0.8R rehashes the three immutable Phase-0.8 records, keeps every
authorization and retry field false, preserves the permanent denylist and
hard Payload Manager-backup gate, and rejects promotion of HTTP routes,
OPTIONS, host evidence, the permission template, or RetroArch work;
- Phase-0.9A validates 20 anti-brick invariants, two separate component
transactions, five empty authorization templates, all 14 power-loss
boundaries, fail-closed approval transitions and every declared virtual
fault while preserving `READ_ONLY_PREFLIGHT_BLOCKED`;
- Phase-0.9A simulator results always identify themselves as host-only,
perform no filesystem/network/target I/O, never claim PS5 evidence, and stop
before execution even when the synthetic switch primitive is enabled;
- Phase-0.9B validates the blocked startup/exit and output-channel gates,
exercises the proposed result contract entirely in memory, and rejects any
observer source, target artifact, authorization or fabricated artifact audit;
- Phase-0.9C validates the complete startup/exit model, prohibited normal-CRT
effects, incomplete freestanding dependency closure, absence of a safe exit
terminal, all four output architectures, fixed 4096-byte D1 framing,
nonce/request/checksum/deadline/completion/cleanup rules, firmware-source
conflict and absence, observation side effects, capability blockers, exact
source and immutable hashes, and the absence of target source, ELF, map or
lifecycle/install/autoload package;
- hardened launcher tests cover deadlines, step budgets, credential restore,
cleanup, child termination/reaping, receiver-side hashing, and denylisting;
- controlled-manager tests cover same-FD hashing/streaming, symlinks,
truncation, mismatch, denylisting, TOCTOU, loopback-only transport, and
negative compile-time artifact configuration;
- every potentially eligible artifact requires an exact controlled runtime
profile and firmware argument; missing/mismatched/hard-effect profiles fail;
- SPDX inventory and artifact schema validate without network access.
- the compiled probe has no direct Sce imports and the disabled Phase-1 ELF has
exactly the reviewed 15-name Sce import set with no GNM/keyboard/IME imports.
## Commands
Host:
```sh
cmake --preset host-debug
cmake --build --preset host-debug
ctest --preset host-debug
```
The default host suite is standalone and uses only tracked repository inputs.
Validators that require exact sibling repositories, ignored linker maps/ELFs,
or pinned `work/upstream` checkouts are deliberately excluded from that suite.
Register them only in a prepared, phase-specific evidence workspace:
```sh
cmake -S . -B build/external-evidence \
-DBUILD_TESTING=ON \
-DCHIMERA_GFX_REGISTER_EXTERNAL_EVIDENCE_VALIDATORS=ON
cmake --build build/external-evidence
ctest --test-dir build/external-evidence -N
```
Run only the named validator whose exact sibling commits and ignored artifacts
were prepared, using its phase command below or `ctest -R <exact-name>`.
Historical validators intentionally bind different RetroArch revisions and
cannot be treated as one shared-worktree suite. Missing, dirty, mismatched, or
incomplete external evidence must fail the selected validator. Leaving them
unregistered never promotes an evidence claim; the corresponding artifact and
device authorization fields remain false. The current workspace disposition is
recorded in `docs/evidence/external-evidence-integrity-2026-07-29.md`.
PS5 compile-only:
```sh
cmake -S . -B build-ps5 \
-DCMAKE_TOOLCHAIN_FILE="$PS5_PAYLOAD_SDK/toolchain/prospero.cmake" \
-DCHIMERA_GFX_BUILD_PS5_PROBE=ON
cmake --build build-ps5 --target chimera-gfx-capability-probe
```
The expected default artifact contains a firmware gate value of `NONE` and
cannot enter symbol discovery. No test command in this repository executes it.
Exact 9.60 offline build from WSL/Linux and a clean tree:
```sh
bash tools/build-firmware-probe.sh 9.60
```
The script builds only `chimera-gfx-capability-probe`, forces
`CHIMERA_GFX_BUILD_PHASE1_VIDEOOUT_CLEAR=OFF`, verifies the exact six undefined
imports, audits the pinned SDK startup/loader/cleanup chain, and marks the
artifact execution-ineligible. It does not connect to or execute on a PS5.
Phase-0.5 startup audit (WSL/Linux, offline, produces JSON only):
```sh
python3 tools/audit_ps5_startup_feasibility.py \
--root . \
--sdk-source work/upstream/sdk \
--sdk-install work/toolchains/ps5-payload-sdk-v0.41 \
--objdump /usr/bin/llvm-objdump-18 \
--readelf /usr/bin/readelf \
--output manifests/runtime/phase-0.5-startup-audit.json
```
The command invokes the compiler only with `-###`; it does not compile or link
an ELF. Repeating it must leave the JSON byte-identical. Enabling
`CHIMERA_GFX_BUILD_PS5_MINIMAL_STARTUP` is a negative test and must fail before
any target is created.
Phase-0.6 exact loader/runtime audit (WSL/Linux, offline):
```sh
python3 tools/audit_ps5_loader_runtime.py \
--root . \
--loader-source work/upstream/elfldr-v0.23 \
--loader-asset work/upstream/release-assets/elfldr-ps5-v0.23.elf \
--payload-manager-source work/upstream/pldmgr-v0.3.1 \
--sdk-source work/upstream/sdk \
--readelf /usr/bin/readelf \
--objdump /usr/bin/llvm-objdump-18 \
--output manifests/runtime/phase-0.6-loader-runtime-audit.json
```
Run it twice from clean exact checkouts and compare output SHA-256. It only
reads public source and an ignored release asset, then writes JSON. It does not
connect to a PS5. Because the decision is blocked, no lifecycle compile,
linker map, probe disassembly, double ELF build, transfer, or execution occurs.
Phase-0.7 full offline audit:
```sh
python3 tools/audit_phase07_artifacts.py \
--root . \
--loader-root ../chimera-elfldr \
--manager-root ../chimera-ps5-payload-manager \
--sdk-install work/toolchains/ps5-payload-sdk-v0.41 \
--output manifests/runtime/phase-0.7-offline-audit.json
```
The tool performs two clean builds of all three artifacts, requires
byte-identical ELF output, records full imports, `DT_NEEDED`, relocations,
sections, linker maps, disassembly, and reachable call edges, and rejects
source identity drift. Full reports are written below ignored
`outputs/phase07/audit/`; the machine audit and all report hashes are
committed. It never contacts or executes on a PS5.
The static policy check must pass for the exact local lifecycle bytes while
continuing to report `execution_authorized=false`:
```sh
python3 tools/check_artifact_execution_policy.py \
--manifest manifests/artifacts/chimera-gfx-lifecycle-probe-phase07-fw-9.60.json \
--denylist manifests/artifact-denylist.json \
--artifact outputs/phase07/artifacts/chimera-gfx-lifecycle-probe.elf \
--runtime-profile manifests/runtime/controlled-ps5-runtime-profile.json \
--firmware 9.60
```
Wrong firmware, altered bytes, blocked hash, missing hardened identity,
installed/executed state drift, widened budgets, or a hard effect must fail.
After all source and evidence are committed and the tracked worktree is clean,
create the deterministic offline review and rollback archives:
```sh
python3 tools/package_phase07_review.py --root .
```
The command accepts only the exact reviewed hashes, embeds the clean
repository HEAD, and writes below ignored `outputs/phase07/packages/`. It
contains no PS5 connection, transfer, installation, or execution operation.
Phase-0.8 read-only preflight record:
```sh
python3 tests/test_phase08_preflight.py --root .
```
This is an offline record-validation command. It does not contact the PS5.
The current expected result is `READ_ONLY_PREFLIGHT_BLOCKED`: no exact
permission record or admissible no-side-effect collector exists, and current
device and rollback evidence is absent. Do not use the stock Payload Manager
HTTP routes as a Phase-0.8 collector.
Phase-0.8R remediation and regression guardrails:
```sh
python3 tools/validate_phase08_remediation.py --root .
python3 tests/test_phase08_remediation.py --root .
```
When the ignored exact Payload Manager v0.3.1 source checkout is already
present locally, its commit and relevant source-file hashes can also be
revalidated without network access:
```sh
python3 tools/validate_phase08_remediation.py \
--root . \
--require-local-source
```
These commands only read repository evidence and run in-memory negative
variants. They do not build a target, contact a remote or PS5, create an
artifact, or claim hardware safety.
Phase-0.9A offline anti-brick design and simulator:
```sh
python3 tests/test_phase09_transaction.py --root .
python3 tools/simulate_phase09_transaction.py \
--component hardened_elfldr \
--run-fault-suite
python3 tools/simulate_phase09_transaction.py \
--component controlled_payload_manager \
--run-fault-suite
```
The simulator uses virtual objects held in memory. It has no output-file,
device, network, compiler, transfer, install or execution operation. The
default transaction stops because PS5 switch atomicity and durability are
unproven. Its synthetic atomic model exists only inside the fault suite and
does not establish PS5 behavior.
Phase-0.9B blocked bounded-observer audit:
```sh
python3 tools/validate_phase09b_observer_audit.py --root .
python3 tests/test_phase09b_observer_audit.py --root .
```
These commands read pinned local source evidence and run an in-memory host
model. They fail if an observer source, target, ELF, map, install/lifecycle
package, device address, read path, true authorization field or false positive
artifact audit appears. They do not compile target code, contact a PS5,
transfer, execute, install, create a backup, change services or start
RetroArch/graphics work.
Phase-0.9C execution-feasibility closure:
```sh
python3 tests/test_phase09c_protocol.py --root .
python3 tools/validate_phase09c_feasibility.py --root .
python3 tests/test_phase09c_feasibility.py --root .
```
These commands use local source trees and finite host-only models. They do not
compile or assemble target code, open a device path, use a network operation,
create an ELF/map/package, or authorize a later action. The expected result is
`BLOCKED_MULTIPLE_FOUNDATIONAL_CONTRACTS`; a passing host protocol does not
establish a target startup, exit, output, firmware, cleanup, or side-effect
contract.
Phase-0.9D existing-stack readback and recovery audit:
```sh
python3 tools/validate_phase09d_readback.py --root .
python3 tests/test_phase09d_readback.py --root .
```
The validator rehashes the five clean pinned source trees, immutable Phase
records, and permanent denylist. The 30 negative guardrails reject mutating,
launching, autoload-triggering, incompletely framed, retrying, or
recovery-promoting variants. They create no target code or artifact, make no
network request, and do not prove device behavior. The expected decision is
`BLOCKED_NO_READBACK_PATH`.
Phase-0.9E external-bootstrap provenance audit:
```sh
python3 tools/validate_phase09e_bootstrap.py --root .
python3 tests/test_phase09e_bootstrap.py --root .
```
The validator rehashes the bounded local Y2JB-named candidate archive, its
opaque `SIECAF` member, the clean pinned source trees, immutable historical
records, source-bound post-bootstrap artifacts, and the permanent denylist.
The 20 guardrails prohibit invented provenance, protocol promotion, target
source or artifacts, live replacement, autoload, automatic retry, and false
reboot or host-to-memory claims. The tests open no network port, create no
protocol client or emulator, and provide no device evidence. The expected
classification is `BOOTSTRAP_IMPLEMENTATION_MISSING`.
Phase-0.9E-R official-release correlation:
```sh
python3 tools/validate_phase09er_provenance.py --root .
python3 tests/test_phase09er_provenance.py --root .
```
The validator rehashes the unchanged local outer ZIP and opaque inner member,
the official detached 1.6 source tree, immutable historical records, the
permanent denylist, deliverables, and their checksum inventory. The 22
guardrails reject name/size-only matches, mirror provenance, opaque-content
promotion, invented embedded-source identity, reference-only port promotion,
duplex overclaims, target output, authorization, retry, and large tracked
assets. They perform no network or device action. Expected decisions are
`OFFICIAL_RELEASE_NO_MATCH`, `PORT_9020_REFERENCE_ONLY`, and
`LOCAL_BACKUP_NOT_CORRELATED`.
Phase-0.9E-R2 inner and MediaFire correlation:
```sh
python3 tools/validate_phase09er2_correlation.py --root .
python3 tests/test_phase09er2_correlation.py --root .
python3 tests/test_siecaf_header_parser.py --root .
```
The validator rehashes the unchanged local outer and inner, all immutable
historical manifests, the denylist, generated SIECAF record fingerprints, and
the checksum inventory. It recomputes the local SIECAF parse and all
normalized record hashes without needing downloaded evidence to remain. The 24
phase guardrails and 18 parser cases cover repacking, complete byte-match
requirements, malformed and overflowing tables, ranges, duplicate/overlap
reporting, redaction, large-file exclusion, authorization, retry, target
absence, and runtime-evidence boundaries. Expected results are
`INNER_ARCHIVE_HASH_MISMATCH`, `SIECAF_LAYOUT_DIFFERENT`, and
`LOCAL_BACKUP_UNCORRELATED`.
The Phase-0.9D and Phase-0.9E validators deliberately require their original
branch and original root-document checksums. CTest therefore leaves those two
branch-local historical validators disabled on later phases; the current
Phase-0.9E-R2 validator rehashes their immutable manifests instead. They can be
registered only on the matching historical checkout with
`CHIMERA_GFX_RUN_BRANCH_LOCAL_HISTORICAL_VALIDATORS=ON`.
Phase-1.0E inherited result-channel validation:
```sh
python3 tools/validate_retroarch_phase10e.py --root . \
--retroarch-root ../chimera-retroarch \
--loader-root ../chimera-elfldr
python3 tests/test_retroarch_phase10e.py --root .
```
In `chimera-retroarch`, run `make -f Makefile.ps5 test-ps5-port`, then perform
two clean `PS5_PROFILE=result-diag` builds and compare both ELF and linker map
byte-for-byte. Static audit must prove W^X, empty init/fini arrays, absent TLS,
the complete import set, an import delta of exactly `send`, and the reachable
SDK `_start -> __patch_init` path. The validator additionally checks the
ignored RUN-C trace's exact size/hash and its one-connect/no-retry D00-D02
record when that local evidence is present. These commands are offline and do
not authorize or perform any new connection, transfer, result reception or
execution.
Phase-1.0F offline startup-interval validation:
```sh
python3 tools/validate_retroarch_phase10f.py --root . \
--retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10f.py --root .
```
In `chimera-retroarch`, run `make -f Makefile.ps5 test-ps5-port`, then perform
two clean `PS5_PROFILE=interval-diag` builds from the manifest-bound commit and
compare ELF and linker map byte-for-byte. Audit both copies for identical ELF
model, imports, relocations and segment permissions. Disassembly must bind all
I00-I14 callsites to the stream-only wrappers and the single existing `send`
relocation. These commands never authorize a connection, transfer, result
reception or execution.
Phase-1.0G offline one-shot-runner validation:
```sh
python3 tools/validate_retroarch_phase10g.py --root . \
--retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10g.py --root .
```
In `chimera-retroarch`, `make -f Makefile.ps5 test-ps5-port` uses only injected
fake sockets. It verifies exact manifest/approval binding, actual artifact
rehashing, manifest-only F-protocol selection, exclusive trace creation and a
durable consumed-attempt receipt created before the mocked transport. Negative
tests prove that inactive, mismatched, reused, retrying or reconnecting inputs
do not reach transport. These are host-policy tests, not device evidence.
Consumed Phase-1.0G result validation:
```sh
python3 tools/validate_retroarch_phase10g_result.py --root .
python3 tests/test_retroarch_phase10g_result.py --root .
```
These checks bind the immutable local trace hash, exact seven-frame sequence,
ordinary stdout hash, one-shot counters and consumed authorization. They reject
invented I04/terminal progress, retries, reconnects, active future authority or
claims that SDL/VideoOut and cleanup were reached.
Phase-1.0H offline startup-argument validation:
```sh
python3 tools/validate_retroarch_phase10h.py --root . \
--retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10h.py --root .
```
In `chimera-retroarch`, run `make -f Makefile.ps5 test-ps5-port`, then perform
two clean `PS5_PROFILE=startup-args-diag` builds and compare the ELF and map
byte-for-byte. Audit both ELFs for H magic, flag mask `0x07`, unchanged
imports/modules/relocations, no RWX, manifest-only dual-gated H selection and
identical normalized disassembly. These are host/static checks, not device
evidence.
Consumed Phase-1.0H result validation:
```sh
python3 tools/validate_retroarch_phase10h_result.py --root .
python3 tests/test_retroarch_phase10h_result.py --root .
```
These checks bind the 25-frame order, exact raw results, transport counters,
trace/receipt hashes and consumed authority. Negative cases reject invented
D11/flip success, retry, reconnect, visibility, cleanup and write-operation
claims.
Phase-1.0I offline postmortem validation:
```sh
python3 tools/validate_retroarch_phase10i.py --root .
python3 tests/test_retroarch_phase10i.py --root .
```
These checks bind the consumed artifact/map identities, three linked blocking
wrappers, exact submit tuple and failure branch. Mutation cases reject an
invented write operation, errno, successful flip, event wait, root cause,
active authorization, target action or device-test readiness. They are static
host checks and create no target artifact or hardware evidence.
Phase-1.0J offline diagnostic artifact validation:
```sh
python3 tools/validate_retroarch_phase10j.py --root .
python3 tests/test_retroarch_phase10j.py --root .
```
Build the sibling RetroArch `write-diag` profile twice from clean state and
compare the ELF and map byte-for-byte. Audit the ignored output for exact J
magic and D13 fields, an immediate stop before I04, errno capture before any
reporting, one frame-index source, no RWX, empty init/fini arrays, no TLS, the
exact imports/modules/relocations and identical normalized disassembly. The
GFX validator binds those results while mutation cases reject a live J runner,
socket/receive capability, late stop, successful write, repeated submit,
active authorization or hardware-proof claim. No run, upload or deploy target
exists.
Phase-1.0K inactive one-shot runner validation:
```sh
python3 tools/validate_retroarch_phase10k.py \
--root . --retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10k.py --root .
```
These host-only checks bind the unchanged J artifact, exact 30-entry wire
table and host-runner commit. Mutation tests reject active authorization,
artifact eligibility, a tracked target/run ID, D13 renumbering, a free protocol
selector, retry, multiple connections, a late consumption receipt and any
claim that fake-socket results are hardware evidence. The tracked manifest and
approval template remain inactive and cannot open a socket.
Phase-1.0L consumed write-firewall result validation:
```sh
python3 tools/validate_retroarch_phase10l.py \
--root . --retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10l.py --root .
```
These host-only checks bind the consumed K receipt and ignored trace identities,
the exact nine-frame terminal sequence, `D13(6,1)` as the first and only blocked
`MKDIR`, and the source/map/disassembly route through `config_set_defaults`.
Mutation cases reject an invented operation, second write, I04/SDL progress,
retry, reconnect, runtime path, cleanup proof or reusable authority. No target
artifact is built or tracked.
Phase-1.0M offline write-free defaults validation:
```sh
python3 tools/validate_retroarch_phase10m.py \
--root . --retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10m.py --root .
```
Build the sibling RetroArch `write-diag` profile twice from clean state. The
checks bind the exact source guard, retained in-memory path derivation, all 17
write-wrapper link options, exact ignored ELF/map hashes, identical normalized
disassembly, imports, modules, relocations and no-RWX result. Mutation cases
reject a weakened firewall, lost path derivation, invented runtime progress,
artifact eligibility, active authority or a device action. No run, upload or
deploy target exists.
Phase-1.0N inactive one-shot runner validation:
```sh
python3 tools/validate_retroarch_phase10n.py \
--root . --retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10n.py --root .
```
These host-only checks bind the exact M artifact to the exact N runner commit
and source hash. Mutation cases reject active eligibility or authority, a
Phase-K scope, target/run fields, altered wire ordering, a free protocol
selector, retries and widened attempt counts. The sibling fake-socket suite
proves parser and gate behavior only. No target build or device action occurs.
Phase-1.0O consumed result validation:
```sh
python3 tools/validate_retroarch_phase10o.py \
--root . --retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10o.py --root .
```
These offline checks bind the consumed run ID, authorization/receipt/trace
hashes, exact one-shot counters, 25-frame sequence and source-bounded
interpretation. Mutations reject reusable authority, retry/reconnect, an
invented D13 or successful flip, invented errno, successful runner-terminal
classification, visible presentation and cleanup. They never reconnect to the
device and do not treat the result as authority for another run.
Phase-1.0P offline analysis validation:
```sh
python3 tools/validate_retroarch_phase10p.py \
--root . --retroarch-root ../chimera-retroarch \
--sdk-root work/upstream/sdk --sdl-root work/upstream/SDL
python3 tests/test_retroarch_phase10p.py --root .
```
These host-only checks bind the O artifact/trace identities, exact submit
register tuple, SDK/SDL source commits and deterministic D12/D04 ordering.
Mutations reject invented success or errno, semantic ABI promotion, new
VideoOut calls, parser relaxation, parameter experiments and active authority.
They build no target and perform no network or device operation.
Phase-1.0Q public evidence validation:
```sh
python3 tools/validate_retroarch_phase10q.py \
--root . --sdk-root work/upstream/sdk --sdl-root work/upstream/SDL
python3 tests/test_retroarch_phase10q.py --root .
```
These offline tests validate the already-recorded source identities and do not
access the network. Mutations reject mirrors, executed downloads, invented SDK
headers or independent sources, PS4-to-PS5 promotion, semantic promotion,
parameter changes, new VideoOut calls and every authorization.
Phase-1.0R launch-context validation:
```sh
python3 tools/validate_retroarch_phase10r.py \
--root . --retroarch-root ../chimera-retroarch \
--sdk-root work/upstream/sdk --sdl-root work/upstream/SDL \
--elfldr-root ../chimera-elfldr \
--manager-root ../chimera-ps5-payload-manager \
--pacbrew-root work/upstream/pacbrew-repo
python3 tests/test_retroarch_phase10r.py --root .
```
These host-only checks rehash the exact wrapper, CRT, SDL video, elfldr,
manager, RetroArch makefile, artifact and linker map. They verify the actual
source tokens and repository commits, reject invented SDL2main registration,
a distinct manager process, packaging-as-launcher claims, LNC-log root-cause
promotion and every target/device authorization. They open no network socket
and build no target.
Phase-1.0S launcher-provenance validation:
```sh
python3 tools/validate_retroarch_phase10s.py \
--root . --shsrv-root work/upstream/shsrv \
--shsrv-v07-root work/upstream/shsrv-v0.7 \
--pacbrew-root work/upstream/pacbrew-repo
python3 tests/test_retroarch_phase10s.py --root .
```
These offline tests bind the clean official v0.7 and v0.19 commits, Git trees,
file hashes, BigApp calls, persistent-write branch and PacBrew provenance
limit. Mutations reject upstream-as-deployed promotion, VideoOut/runtime
promotion, hidden staging, remount or fake-app effects, invented deadlines,
route reuse and every target/device authorization. They do not build or run
the downloaded source and perform no network or device operation.
Phase-1.0T inactive identity-gate validation:
```sh
python3 tools/validate_retroarch_phase10t.py \
--root . --shsrv-root work/upstream/shsrv \
--shsrv-v07-root work/upstream/shsrv-v0.7
python3 tests/test_retroarch_phase10t.py --root .
python3 tests/test_phase10t_shsrv_transcript.py --root .
```
These host-only tests bind the exact public shsrv source identities and the
connection-to-shell/greeting effects. Mutation tests reject active authority,
targets, retry, hidden serial transmission, exact-identity promotion and
relaxed command or redaction policy. Synthetic transcript tests prove that
sensitive values and unknown paths are discarded and that all source-family,
metadata and weak-checksum combinations remain non-exact. They open no socket,
write no transcript and perform no device operation.
Phase-1.0U bounded local-inventory validation:
```sh
python3 tools/validate_retroarch_phase10u.py \
--root . --shsrv-root work/upstream/shsrv \
--shsrv-v07-root work/upstream/shsrv-v0.7 \
--pacbrew-root work/upstream/pacbrew-repo
python3 tests/test_retroarch_phase10u.py --root .
```
These host-only checks rehash the official wrapper and PacBrew recipe, bind the
clean source commits and preserve the distinction between reference objects
and deployed identity. Mutations reject global-absence claims, execution of a
discovered sender, active authority and launch-context experimentation. They
perform no search, network or device operation during CTest; the bounded
inventory result is an immutable audit record.
Phase-1.0V inactive collector-model validation:
```sh
python3 tools/validate_retroarch_phase10v.py --root .
python3 tests/test_retroarch_phase10v.py --root .
python3 tests/test_phase10v_shsrv_collector_model.py --root .
```
These offline tests enforce the absence of network imports and live CLI
arguments, exact source hashes, inactive activation, fixed bounds and
non-promoted memory/device claims. Synthetic byte streams cover fragmented
Telnet negotiation, subnegotiation, serial/telemetry redaction, oversize and
chunk rejection, invalid UTF-8, incomplete control state, abort, one-shot
sealing and literal-path filtering. No socket or device operation is used.
Phase-1.0W self-review and inactive client-architecture validation:
```sh
python3 tools/validate_retroarch_phase10v.py --root .
python3 tests/test_phase10v_shsrv_collector_model.py --root .
python3 tools/validate_retroarch_phase10w.py --root .
python3 tests/test_retroarch_phase10w.py --root .
python3 tests/test_phase10w_shsrv_client_policy.py --root .
python3 tools/validate_retroarch_phase10x.py --root . \
--shsrv-root work/upstream/shsrv
python3 tests/test_retroarch_phase10x.py --root .
python3 tests/test_phase10x_inactive_transport.py --root .
python3 tools/validate_retroarch_phase10y.py --root . \
--shsrv-root work/upstream/shsrv
python3 tests/test_retroarch_phase10y.py --root .
python3 tests/test_phase10y_shsrv_framing_model.py --root .
```
The V rerun proves the reviewed model's corrected hash and 21 edge cases. The
W tests bind the data-only policy/fake-transport hashes, inactive records,
source-bound port, dual-record match, approval lifetime, side-effect acceptance
and one-shot command windows. Mutations reject targets in tracked state,
second opens, command/target injection, retry, execution authority, missing
effects, unknown approval fields, listener/policy mismatch, expired approval
and invented live components. No socket is opened.
The X tests bind the W policy and remediated collector to an injected-only
orchestrator. Eighteen mutation guardrails preserve inactive records, false
authority, missing live framing and explicit durability/deadline limitations.
Eighteen fault tests verify consumed-before-open ordering, exclusive files,
close/reopen/hash validation, one-shot command order, sanitization, deadline
and adapter failures, deterministic fake close and absence of socket/CLI code.
They use no network and provide no hardware evidence.
The Y validator binds every official v0.9-v0.19 tag to the empty-option
`libtelnet` family and keeps v0.7-v0.8 raw. Eighteen mutation guardrails reject
authority, activation, family collapse, invented echo/negotiation, prompt
promotion and live implementation. Twenty-two synthetic framing cases cover
raw pass-through, NVT EOL, IAC escaping, unsupported-option replies,
fragmentation, subnegotiation, prompt ambiguity and hard size bounds.
Phase-1.0Z passive-batch validation:
```sh
python3 tools/validate_retroarch_phase10z.py --root .
python3 tests/test_retroarch_phase10z.py --root .
python3 tests/test_phase10z_passive_batch_contract.py --root .
```
The validator binds V/W/X/Y and the Z model/test identities, exact inactive
state, false authority, one LF batch and synthetic-deadline-only completion.
Eighteen mutations reject activation, target retention, authority, retry,
reconnect, CR/IAC, multiple batches, prompt/EOF completion and hardware-proof
promotion. Twenty-five synthetic cases cover exact batch bytes, bounds, path
injection, IAC rejection, raw LF and CRLF transcripts, complete help and
stat/sum, partial rejection, abort and one-shot sealing. No network is used.
Phase-1.0AA offline fake-adapter integration:
```sh
python3 tools/validate_retroarch_phase10aa.py --root .
python3 tests/test_retroarch_phase10aa.py --root .
python3 tests/test_phase10aa_offline_fake_batch.py --root .
```
The validator hash-binds X, Z and the AA integration/tests, rejects network or
real-clock imports, and enforces exact fake types and inert authorization.
Twenty mutations prevent activation, target retention, live protocols,
authority, retries, subclass promotion, EOF/early-deadline completion and
hardware claims. Twenty-five integration cases cover receipt-before-open,
single batch, complete help/stat/sum, synthetic deadline, close on all paths,
exclusive evidence, sanitization and bounded fake-event failures.
Phase-1.0AB offline live-adapter feasibility:
```sh
python3 tools/validate_retroarch_phase10ab.py --root .
python3 tests/test_retroarch_phase10ab.py --root .
python3 tests/test_phase10ab_nonblocking_trace_model.py --root .
```
On the audited Windows host, additionally pass
`--python-root "C:\Program Files\Python313"` to rehash the four recorded local
runtime files. CI validates the immutable evidence record without assuming that
its own Python installation is the audited host. Twenty mutations reject
authorization, runtime/feasibility promotion, live imports and relaxed hard
stops. Twenty-five trace cases cover immediate/pending connect, `SO_ERROR`,
partial sends, interrupted/time-out waits, bounded receive, EOF, deadline races,
sanitization, close and output ordering. No socket is opened.
Phase-1.0AC offline dormant-adapter validation:
```sh
python3 tools/validate_retroarch_phase10ac.py --root .
python3 tests/test_retroarch_phase10ac.py --root .
python3 tests/test_phase10ac_dormant_adapter.py --root .
```
The validator hash-binds the dormant adapter and its tests, rejects live
imports, embedded addresses, activation and device authority, and requires the
exact closed fake types. Twenty mutations protect the inactive record. Thirty-
two synthetic cases cover create/nonblocking order, immediate and pending
connect, `SO_ERROR`, partial progress, interruptions, timeout/deadline races,
bounded reads, EOF, malformed output, one-close cleanup and result
sanitization. No socket or real clock is used.
Phase-1.0AD inactive activation-contract validation:
```sh
python3 tools/validate_retroarch_phase10ad.py --root .
python3 tests/test_retroarch_phase10ad.py --root .
python3 tests/test_phase10ad_activation_contract.py --root .
```
The validator hash-binds the contract, tests and documentation. The tracked
record is target-free and inactive. Synthetic candidate validation accepts
only canonical private numeric IPv4, source-bound port 2323, a five-minute
one-shot window and separate launcher, payload and approval hashes. It rejects
DNS names, public/special addresses, retry, reconnect, resume, device writes,
app termination and remount authority. No socket, clock, CLI or file output is
present.
Phase-1.0AE minimal BigApp-launcher architecture validation:
```sh
python3 tools/validate_retroarch_phase10ae.py --root . \
--shsrv-root work/upstream/shsrv \
--shsrv-v07-root work/upstream/shsrv-v0.7
python3 tests/test_retroarch_phase10ae.py --root .
```
The external validator binds the official v0.19 and v0.7 commits, trees and
hbldr/elfldr/ptrace source hashes. It proves only the offline lineage facts:
v0.19 contains fake-app/remount behavior and v0.7 references the existing
`PPSA01659` title without those two mechanisms. Standard guardrails keep every
authority false, reject killing an existing BigApp and preserve all firmware,
VideoOut, cleanup and bounded-wait blockers.
Phase-1.0AF offline BigApp lifecycle-model validation:
```sh
python3 tools/validate_retroarch_phase10af.py --root .
python3 tests/test_retroarch_phase10af.py --root .
python3 tests/test_phase10af_bigapp_lifecycle_model.py --root .
```
The validator binds the AE decision, model and tests and rejects live imports,
target claims and authority. Failure injection covers a pre-existing BigApp,
every parent/child stage, unique-child timeout, replacement restoration,
cleanup failure, tick exhaustion, wrong ordering and unused operations. These
tests prove only the closed fake state machine.
Phase-1.0AG bounded ELF admission validation:
```sh
python3 tools/validate_retroarch_phase10ag.py --root .
python3 tests/test_retroarch_phase10ag.py --root .
python3 tests/test_phase10ag_bounded_elf.py --root .
```
The validator hash-binds AF, the bytes-only parser and its synthetic tests.
Malformed identity, hash, type, machine, header tables, file/memory ranges,
alignment, overlap, W+X, interpreter, entry and count cases fail closed. No
path, mapping or execution interface exists, and the missing historical M
bytes are never promoted from a size/hash reference into admitted evidence.
Phase-1.0AH dynamic/relocation contract validation:
```sh
python3 tools/validate_retroarch_phase10ah.py --root . \
--shsrv-v07-root work/upstream/shsrv-v0.7 \
--sdk-root work/upstream/sdk
python3 tests/test_retroarch_phase10ah.py --root .
python3 tests/test_phase10ah_dynamic_contract.py --root .
```
The external validator binds official shsrv v0.7 and SDK v0.41 source. Tests
cover exact ordered dependencies, allowlisting, dynamic termination, RW/aligned
targets, relative symbol/addend rules, GLOB_DAT rules, unknown types, missing
relative closure and inherited ELF/hash rejection. No mapping or module load
is performed.
Phase-1.0AI mapping transaction validation:
```sh
python3 tools/validate_retroarch_phase10ai.py --root .
python3 tests/test_retroarch_phase10ai.py --root .
python3 tests/test_phase10ai_mapping_model.py --root .
```
Failure injection covers reserve, mirror creation, every copy/BSS/relocation/
protection/sync/release stage, atomic deadline preemption, cleanup failures,
W+X, page-rounded protection overlap, wrong bindings and unused operations.
Success retains only the synthetic new region; failure requires mirror release
and complete region unmap. No allocator or mapping API is called.
Phase-1.0AJ primitive source audit:
```sh
python3 tools/validate_retroarch_phase10aj.py --root . \
--shsrv-v07-root work/upstream/shsrv-v0.7 \
--hardened-elfldr-root ../chimera-elfldr
python3 tests/test_retroarch_phase10aj.py --root .
```
The validator hash-binds both source trees. Guardrails reject direct reuse of
the unbounded v0.7 loader, require the temporary-resource and cleanup-ownership
gaps to remain explicit, and keep all target and device authority false.
Phase-1.0AK hybrid composition model:
```sh
python3 tools/validate_retroarch_phase10ak.py --root .
python3 tests/test_retroarch_phase10ak.py --root .
python3 tests/test_phase10ak_hybrid_composition.py --root .
```
Failure injection covers every forward operation, reverse cleanup, cleanup
failure containment through child termination, failed terminal termination,
deadline preemption, invalid bounds/order and unused operations. The model has
no process, mapping, clock, network or device capability.
Phase-1.0AL SDK mdbg copy audit:
```sh
python3 tools/validate_retroarch_phase10al.py --root . \
--sdk-root work/upstream/sdk
python3 tests/test_retroarch_phase10al.py --root .
```
The external validator binds the exact SDK commit, implementation and public
header. Guardrails preserve the observed restoration/progress gaps, reject
direct reuse and keep every target and device authorization false.
Phase-1.0AM bounded copy/restore model:
```sh
python3 tools/validate_retroarch_phase10am.py --root .
python3 tests/test_retroarch_phase10am.py --root .
python3 tests/test_phase10am_bounded_copy_model.py --root .
```
Tests cover exact multi-chunk completion, partial/error/zero/oversized progress,
both independent restore failures, capability-set failure, deadline and range
overflow, incomplete completion and terminal cleanup failure. No credential,
process, memory, clock, network or target interface exists in the model.
Phase-1.0AN service lifecycle and copy audit:
```sh
python3 tools/validate_retroarch_phase10an.py --root . \
--hardened-elfldr-root ../chimera-elfldr
python3 tests/test_retroarch_phase10an.py --root .
```
The external validator binds the hardened fork and distinguishes fail-stop from
restart/recovery. Guardrails keep blocking `PT_IO` copy, automatic restart,
target implementation and every device authorization disabled.
Phase-1.0AO worker supervisor model:
```sh
python3 tools/validate_retroarch_phase10ao.py --root .
python3 tests/test_retroarch_phase10ao.py --root .
python3 tests/test_phase10ao_worker_supervisor_model.py --root .
```
Tests cover exact accepted results, deadline preemption, wrong identity,
partial/restore failure, ambiguous start, pre-start failure, terminal cleanup
failure, bounds and unused events. The model has no process, signal, clock, IPC,
network or target interface and performs no retry or automatic restart.
Phase-1.0AP current-upstream worker feasibility audit:
```sh
python3 tools/validate_retroarch_phase10ap.py --root . \
--sdk-root work/upstream/sdk \
--shsrv-root work/upstream/shsrv-v0.7
python3 tests/test_retroarch_phase10ap.py --root .
```
The validator binds exact official commits and Git blobs without changing the
pinned checkouts. Guardrails distinguish a worker-creation source candidate
from runtime proof and keep preemption, result transport, target code, shsrv
code reuse and device authority blocked.
Phase-1.0AQ fixed worker result record:
```sh
python3 tools/validate_retroarch_phase10aq.py --root .
python3 tests/test_retroarch_phase10aq.py --root .
python3 tests/test_phase10aq_worker_result_record.py --root .
```
Tests cover exact success/failure records, every single-byte mutation,
truncation/extension/type errors, PID/nonce/generation/attempt mismatches,
partial progress, restore bits, rehashed semantic corruption and numeric bounds.
The parser has no random source, pipe, socket, process, clock or target ability.
Phase-1.0AR exclusive result channel model:
```sh
python3 tools/validate_retroarch_phase10ar.py --root .
python3 tests/test_retroarch_phase10ar.py --root .
python3 tests/test_phase10ar_result_channel_model.py --root .
```
Tests cover every two-part split, byte-at-a-time delivery, EOF, deadline,
silence, overflow, damaged/wrong-identity records, writer precommit, crossing
deadline, trailing events and invalid chunks. No live transport is opened.
Phase-1.0AS channel primitive and FD ownership audit:
```sh
python3 tools/validate_retroarch_phase10as.py --root . \
--sdk-root work/upstream/sdk \
--shsrv-root work/upstream/shsrv-v0.7
python3 tests/test_retroarch_phase10as.py --root .
```
The validator binds exact official Git objects. Guardrails preserve the
`RFCFDG` close-all mismatch, absent exclusive close order, nonblocking callsite,
absolute deadline, bounded reap, target code and device authorization.
Phase-1.0AT offline RFFDG FD/deadline model:
```sh
python3 tools/validate_retroarch_phase10at.py --root .
python3 tests/test_retroarch_phase10at.py --root .
python3 tests/test_phase10at_fd_deadline_model.py --root .
```
Failure injection covers every setup boundary, exact parent/child end ownership,
partial records, EINTR, would-block, absolute deadline, EOF, overflow, damaged
or trailing records and terminal cleanup. All operations are synthetic.
Phase-1.0AU live-channel feasibility reassessment:
```sh
python3 tools/validate_retroarch_phase10au.py --root . \
--sdk-root work/upstream/sdk \
--shsrv-root work/upstream/shsrv-v0.7
python3 tests/test_retroarch_phase10au.py --root .
```
The validator binds the exact official SDK headers and shsrv callsites. The
guardrails keep API declarations separate from firmware behavior and reject
the current `RFCFDG`, unbounded-wait and automatic-restart composition.
Phase-1.0AV target-free launch-context canary:
```sh
python3 tools/validate_retroarch_phase10av.py --root .
python3 tests/test_retroarch_phase10av.py --root .
python3 tests/test_phase10av_launch_context_canary.py --root .
```
Tests require identical payload identity, distinct launcher/run/approval
bindings, submit-before-D04-before-terminal ordering, complete cleanup and zero
retry/persistent-write counts. A return difference remains candidate-only.
Phase-1.0AW canary source-delta and effect audit:
```sh
python3 tools/validate_retroarch_phase10aw.py --root . \
--retroarch-root ../chimera-retroarch \
--shsrv-root work/upstream/shsrv-v0.7
python3 tests/test_retroarch_phase10aw.py --root .
```
The validator binds the historical M source and official shsrv v0.7 Git
objects. Guardrails require a new magic, D14 cleanup predicate and byte-identical
payload while retaining every BigApp effect and live-result blocker.
Phase-1.0AX host-only AV protocol model:
```sh
python3 tools/validate_retroarch_phase10ax.py --root .
python3 tests/test_retroarch_phase10ax.py --root .
python3 tests/test_phase10ax_canary_protocol_model.py --root .
```
Tests cover canonical 64-byte frames, every single-byte mutation, semantic
stage types, duplicate/order errors, false cleanup claims, D12 terminal misuse
and every individual D14 cleanup predicate.
Phase-1.0AY exact RetroArch source-base selection:
```sh
python3 tools/validate_retroarch_phase10ay.py --root . \
--retroarch-root ../chimera-retroarch
python3 tests/test_retroarch_phase10ay.py --root .
```
The validator proves that the private N tip descends from M and retains every
relevant target-source blob. Guardrails require an isolated worktree and forbid
target profile, cross-build, artifact and runner activation.
Offline Phase-1 compile only:
```sh
bash tools/build-phase1-videoout.sh
```
The script verifies the SDK and SDL inputs, applies only the reviewed video-only
overlay, disables SDL2main and unrelated subsystems, builds both fail-closed
ELFs, and runs the strict static import audit. Do not execute either output.
## Future installation and hardware-test template (not authorized)
Every approved hardware test must record:
- task approval reference and operator;
- console firmware identifier and allowlist entry;
- source commit and toolchain lock digest;
- exact operation permitted;
- timeout and recovery procedure;
- expected logs and success/failure criteria;
- cleanup evidence;
- result and any anomaly.
An empty or ambiguous field means the test does not run.