Files
chimera-gfx-Public/docs/runtime/phase-0.9c-static-audit.md
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

6.4 KiB

Phase 0.9C static audit

Date: 2026-07-18. Final classification: BLOCKED_MULTIPLE_FOUNDATIONAL_CONTRACTS.

This audit stops before target implementation. No observer source, assembly, object, ELF, map, target build, lifecycle package, installation package, autoload package, transfer template, device address, device path, or authorization exists.

Exact source basis

Source Commit Tree
hardened elfldr 197623058f509eddde18868dafcb92fdcac66464 clean
controlled Payload Manager e23d94ff91233aa770e2342800c1467875bdef44 clean
public elfldr v0.23 699e8bcff03e91e8d6ca6eba281af25c5a58d8c2 clean
public Payload Manager v0.3.1 cfbc70f30f419b09bf2b52283f7409e2d3117ee1 clean
PS5 Payload SDK v0.41 d2e2e585740362976a39fdd5ccf390f199a7bc37 clean
lifecycle source identity fe08300339a13f899fb78ea404ada381a5cba87c unchanged file hash

Every reviewed file hash is recorded in manifests/runtime/phase-0.9c-feasibility.json. The validator rehashes the files and verifies all five external Git trees without network access.

Immutable evidence

Evidence SHA-256
Phase-0.8 document 3fbe086175a6048176075f447ec1482074928e3b5282db97ea2169395fe1d508
Phase-0.8 manifest 47d7f452f8799979fe99b3e6d56859f03544112725bf7e5b349eba5ed81b3322
Phase-0.8 original test 8a4ad7c70de28ffe3148fd3fd1f68c36a872c53c691c9068e1ff163970863c48
Phase-0.9A manifest 39fd7c70cae998d9d74e7caf1ff3c19f9f76f7de2e5a50bc09baede4ba53e9e9
Phase-0.9B manifest 104c4a667ad17f9827fc7276852c6faeef96effb8e3561a5ebc19a62c7d51634
Phase-0.9B schema efcea3b0001ef5b2da65c372ceb93ee2fec09c9331b2e4cbb6008212504c0918

Phase 0.9B remains a truthful historical blocked audit. It was not rewritten as if Phase 0.9C evidence existed earlier.

Startup and transitive code result

Normal SDK path

crt1.o transitively includes crt, syscall, klog, nid, kernel, rtld, rtld_so, rtld_sprx, rtld_payload, rtld_dlfcn, mdbg, and patch. _start reaches __patch_init before main; credential capabilities/attributes and syscall bounds are written. It also initializes rtld, permits DT_NEEDED processing, relocations, constructors, heap bookkeeping and module loading.

Result: PROVEN_SIDE_EFFECTING, unsuitable for the kernelwrite-free contract.

Freestanding theoretical path

The compiler can suppress CRT/default libraries, and the loader can transfer e_entry and RDI. The reviewed source does not close:

  • stack alignment and saved-RIP continuation;
  • BSS zero-fill, complete relocations, TLS, or register preservation;
  • a callable read/syscall ABI without prohibited patch/runtime setup;
  • monotonic time in the observer;
  • normal return or process exit;
  • error/deadline exit without crash/kill;
  • mapping, descriptor, buffer, loader and manager cleanup; or
  • result copy-out.

Result: BLOCKED_STARTUP_ABI_UNPROVEN and BLOCKED_EXIT_CLEANUP_UNPROVEN.

Output result

Architecture Audit result
D1 caller-owned buffer coherent 4096-byte host contract; no current loader buffer, return finalizer, copy-out, or manager delivery
D2 existing request/response rejected; manager is connect/send/close only
D3 loader-owned status unproven; wait status is discarded and no record propagates
D4 process status rejected; ambiguous, discarded, and too small

The D1 host model validates magic/version, nonce, request ID, two firmware fields, observer version, fixed/actual sizes, status, requested/observed/ unsupported bitmaps, truncation, artifact hash, body/final checksums, deadline, completion, cleanup, zero padding and one-time consumption. No target code implements it.

Result: BLOCKED_NO_BOUNDED_OUTPUT_CHANNEL.

Firmware and side-effect result

SDK kernel_get_fw_version() is source 1 but reads a process-parameter SDK field and is runtime-unobserved. A system-version export name in the SDK stub has no accepted prototype or semantics and is not source 2. Result: BLOCKED_FIRMWARE_SOURCE_INCOMPLETE.

No planned observation is proven free of metadata, atime, audit, cache, counter, service/security, open-bookkeeping, process-accounting, object-lifetime, or race effects. Result: BLOCKED_OBSERVATION_SIDE_EFFECTS_UNBOUNDED.

Target artifact audit disposition

Audit item Result
target source/assembly NOT_CREATED
target compile/link NOT_PERFORMED
ELF headers/program headers/sections NOT_APPLICABLE_NO_ARTIFACT
imports/undefined symbols/DT_NEEDED NOT_APPLICABLE_NO_ARTIFACT
relocations/init/fini/TLS NOT_APPLICABLE_NO_ARTIFACT
linker map NOT_CREATED
target reachable callgraph NOT_CREATED
target disassembly NOT_CREATED
double target build/hash NOT_PERFORMED
lifecycle/install/autoload package NOT_CREATED
execution eligibility false
execution authority false

These are nonexistence results, not evidence that hypothetical bytes would be safe.

Offline verification

The final verification run is recorded as:

Check Result
Phase-0.9A host tests PASS — 41 guardrails, 33 fault types for each of 2 components, and 14 power-loss boundaries
Phase-0.9A hardened-elfldr virtual fault suite PASS — 33 fault results and 14 power-loss results; host simulation only, no hardware evidence, connection, or execution
Phase-0.9A controlled-manager virtual fault suite PASS — 33 fault results and 14 power-loss results; host simulation only, no hardware evidence, connection, or execution
Phase-0.9B validator and host tests PASS — blocked-audit validator and artifact guardrails
Phase-0.9C protocol cases PASS — 21/21
Phase-0.9C feasibility cases PASS — 12/12
full host configure/build/CTest PASS — 22/22
manifests/schema/safety/denylist/secrets/immutable/checksums PASS — all dedicated validators and regression guards
git diff --check PASS — no output

The committed version of this document must contain no pending result.

Decision

The only permitted positive classification required every foundational contract to be proven. Five independent blocker families remain. The exact decision is:

BLOCKED_MULTIPLE_FOUNDATIONAL_CONTRACTS

No automatic Phase 0.9D transition is permitted. Reconsideration requires new public, commit-bound evidence; it does not authorize an experimental target run to discover the missing contracts.