Files
Sylpheed/README.md
Sylpheed port agent 97383fb9aa port: write the runbook P5's gate needs, and correct a misreport of a corrected row
P5's gate is 'a human clicks through it' and no document told a human how. The
commands existed in boot.gd's header and scattered through a twelve-thousand-line
DECISIONS.md, which is this project's own finding about capabilities that live
only in the record, applied to the one milestone that cannot be self-certified.

docs/port/RUNNING.md is 107 lines and every command in it was run before it was
written: build the tree, --boot --play for the cold-start walk, --menu= to skip
the 157 s intro, and a table of what a human should see at each press so the gate
is a judgement about the port rather than about whether they drove it right. It
does not claim P5 is met; it removes the excuse that the gate was hard to attempt.

Three sections exist because a reader would otherwise report the container as a
defect: what is knowingly missing (four of five destinations measured but in other
archives, each printing what it would have opened; NEW GAME's skipped chain as a
stated gap), what this container distorts (720p decodes +6.7-6.9% slow, the dummy
audio driver means you hear nothing, the exit leak line is engine-side at 8 to 8),
and how mod overrides report themselves.

The Decoder reported BLOCKED.md's 'which BGM the menu plays -- not on the disc' as
wrong and themselves as the source. The row has been struck and corrected for
days, and I am telling them rather than silently fixing a live row -- their own
asymmetry, that a wrongly-superseded row removes a live question from both views.

The correction already contains the diagnosis they have just made. It says the
negative is bounded -- the TABLES name no screen -- cites li r5 1103 and the
byte-for-byte wave match, and ends: a row here must quote the reach of a negative,
because a negative summarised without its bound reads as a bigger negative than it
is. Their message reports arriving at the same thing independently. Fourth
instance of the connection failure and the sharpest yet: the three before were an
answer sitting unread, this one was an answer sitting ADDRESSED.

Their method note inverts my own v1-to-v3 story and is the transferable part: my
'a report with a standing false positive is one nobody reads' nearly made them
filter a 40-candidate sweep. Instead they measured what the false positives were
-- guessed infrastructural nouns, 5 of 40; the real category was 'not on the disc'
used as a classification legend -- and reading those found the one that was not.
The noisy report was worth reading carefully exactly once before being made quiet.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
2026-08-31 02:25:19 +00:00

68 lines
3.0 KiB
Markdown

# 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
* [`docs/re/INDEX.md`](docs/re/INDEX.md) — what is decoded
* [`docs/re/REFUTED.md`](docs/re/REFUTED.md) — what has been tested and died
* [`docs/re/METHOD.md`](docs/re/METHOD.md) — traps this project has already paid for
* [`docs/game/navigation.md`](docs/game/navigation.md) — how the game is navigated
* [`docs/port/MODDING.md`](docs/port/MODDING.md) — why the asset tree looks the way it does
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.