Sylpheed port agent 8477242656 port: a check that measures CHANGE, run against the defect it was written for
Closes the two items the play-test left after the fix landed.

1. tools/port/verify-motion, wired into check-all with its control.

It films a REAL boot -- no --time, no pinning -- and hands it to
tools/motion-census. The window is the DECLARED build-in (publisher t=0..45,
0.75 s at 60 units/s), so it asks about the interval the disc says is animating
and nothing else.

🔴 BOTH SIDES MEASURED, not one measured and one assumed. I reverted the single
operator in pose_at, ran this check against the defect, and restored it:

  broken (ASSIGNS the settle instant)   40 %   and it FAILED
  fixed  (clamps to it)                 86 %   and it passed

The bar of 60 sits mid-gap: 20 points above the defect, 26 below the fix.

🔴 AND MY FIRST VERSION OF THAT BAR WAS JUSTIFIED BY A NUMBER I HAD NOT
MEASURED. It claimed "~40 points of clearance on both sides"; with a 1.0 s
window the real clearance was 5 points, because that window includes 0.25 s of
legitimate hold and dilutes the signal. A bar defended by an unmeasured number
is this whole check's own defect, one level up. Corrected with the measurements
and the sequence stated.

The control runs FIRST and is not optional: motion-census --selftest drives a
fade, a switch and a frozen film through the same loader and floor. If it cannot
separate those three, every number the check reports is decoration. Then the
--control mode builds a frozen film from the port's own pixels -- one real boot
frame repeated -- and requires it to FAIL. It scores 0 %.

One defect in the check itself, caught by running it: `ls | head` under
`set -o pipefail` exits 141 before asserting anything, and a check that dies
before checking looks a lot like a check that passed.

2. BLOCKED.md H2 corrected from  to 🟡, against myself.

The MECHANISM half stands -- no post-process pass, the blur is a baked companion
texture. The BEHAVIOUR half was false and the row asserted it: I wrote "the port
draws all seven quads -- verified by a frozen sweep". True, and it did not mean
what I used it for. A frozen sweep drives the clock BY HAND. It proves the
renderer can draw pose N and says nothing about the poses being drawn in
sequence while running.

All three of my instruments passed the defect -- frozen sweep, a 0.01 % settled
comparison (a frozen screen matches a settled reference PERFECTLY), and an
achieved-fps counter (identical pixels 25x/s score like animating). Every one
measured throughput or a pose; none measured CHANGE. Same shape as
InputEventAction bypassing the input map.

Not settled: the ~1.0-1.2 menu residual; findings 3 and 4's remaining halves.
Both were explicitly deferred by the human until this was fixed, and it now is.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018AHUQvXGyNcKonSEWsgWcX
2026-09-02 16:00:57 +00:00

Sylpheed

A clean-room reverse engineering and port project for Project Sylpheed: Arc of Deception (Xbox 360, 2007).

Three things live here, in one repository so that a change spanning them lands as one commit:

The decoders crates/sylpheed-formats — the disc's formats, read and verified disc-wide
The port port/ — a Godot 4 project, plus crates/sylpheed-export which converts a disc into the open asset tree it reads
The corpus docs/re/ — what has been reverse engineered, with its evidence, its retractions and its dead ends

You need your own copy of the game. No game content is in this repository and none ever will be. The exporter reads the disc you supply.

The oracle is the real game

sylpheed-cli and the Explorer are tools for verifying our decoding. They are hypotheses under test and they have been wrong. When something must be checked against the truth, the truth is the game running in Xenia Canary, captured — not any renderer of ours.

This is stated first because getting it backwards is the most expensive mistake this project has made.

Layout

crates/
  sylpheed-formats/   the decoders. Disc-wide verified; the corpus is its spec
  sylpheed-cli/       headless tools -- render a screen, dump a table, probe audio
  sylpheed-viewer/    the Explorer: a human's window onto the disc. STATIC data only
  sylpheed-export/    disc -> the open, moddable asset tree
port/                 the Godot 4 project. Reads open formats ONLY
authored/             decisions that are NOT on the disc, each with its reason
data/
  base/               generated by the exporter. Gitignored, never hand-edited
  mods/               drop-in overrides. Yours
docs/
  re/                 the corpus: findings, refutations, method traps
  game/               how the game is navigated -- menus, modals, flight
  port/               the port's mission, its handoff contract, modding rules
                      -- and RUNNING.md, which is how you actually start it
  agents/             how the agent team works together
tools/                capture harnesses, probes, the share tool
exchange/             transient inter-agent files. NOT in git
docker/               the agent containers

Where to start

Xenia Canary is a separate repository: it is a fork tracking upstream, and it carries our instrumentation.

Conventions

Confidence is per claim, never per document: CONFIRMED · 🟡 PROBABLE · HYPOTHESIS · REFUTED. A withdrawn result is kept with its reasoning rather than deleted — that is why the numbers here can be trusted.

Description
No description provided
Readme MIT 820 MiB
Languages
Rust 57.6%
Python 27.7%
Shell 10.6%
GDScript 3.5%
Dockerfile 0.4%
Other 0.1%