Files
sylph-decoder 3f114a28af tools: export ALL FOUR container-only Canary commits, not just my own
Applying my own lesson to my own corpus rather than only stating it. I
exported the content-hash patch and stopped; auditing the docs for
"/canary sha" citations found three pages naming d90d14e02, and checking
/canary's history found the exposure is four commits deep, not one.

Bounded by measurement rather than guess: branch -r --contains puts
590912722 on origin/sylpheed-re and finds no remote for anything after it,
so the container-only stack is exactly these four.

  0f920e645  blend= per draw          <- the ENTIRE blend decode rests on this
  fa1e4c221  vertex dump 8 -> 64      <- at 8 the log silently dropped four
                                         quads of the EXTRAS 24-index batch
  d90d14e02  RT state, resolves, PS constants
  ab3203f79  h= content hash

The sharpest case is 0f920e645. Without it a draw log records no blend
state at all, so ui-blend-mode-decoded.md's 35-element oracle -- which
overturned a REFUTED entry and deleted the port's authored blend map --
could not be re-derived by anyone who cloned this repository.

The failure mode is silent: the recipe LOOKS complete and only fails for
someone on a different machine, long after its author could say what the
flag did.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jc4pciRArGHfxGGhEbwp5t
2026-09-01 19:59:14 +00:00
..

The Canary commits that exist only in this container

/canary is a separate checkout on branch sylpheed-re. Four commits on it are not on any remote, and several committed findings cannot be reproduced without them. This directory is their durable copy, because /work is pushed and /canary is not.

Bounded by measurement, not by guess: git -C /canary branch -r --contains puts 590912722 on origin/sylpheed-re and finds no remote for any commit after it. So the container-only stack is exactly these four.

patch canary sha what it adds findings that need it
0001 0f920e645 blend=RB_BLENDCONTROL0 per draw ui-blend-mode-decoded.md — the entire blend decode, and the additive path in ui_layout that follows from it
0002 fa1e4c221 vertex dump raised 8 → 64 the EXTRAS 24-index batch: at 8 vertices the log printed two quads of six and silently dropped four, which is why ptframe4/pteff21/22/23 looked absent
0003 d90d14e02 render-target state, resolves, PS constants ui-splash-draw-pass.md — "is there a post-process pass at all?" is a question about render targets, and the log could not see one
0004 ab3203f79 h= — a content hash per sampled texture guest-frame-rate-resolved.md, its withdrawal, and clock-is-frame-based-one-unit-per-present.md

Applying

git -C /canary am /work/tools/canary-patches/*.patch
ln -sfn /canary /work/xenia-canary          # the build REQUIRES this symlink
cmake --build /sylph-home/re/canary-build --config Release --parallel 2 --target xenia_canary
rm /work/xenia-canary

⚠️ Without the symlink the build fails with The source directory "/work/xenia-canary" does not exist from a cmake --regenerate-during-build step, which does not obviously point at a missing symlink.

⚠️ --parallel 2, not 4: this container has been OOM-killed before.

Why this directory exists

A finding whose reproduce recipe names a /canary sha is not reproducible. Three corpus pages cite canary sylpheed-re d90d14e02 as though it were a public reference; it is reachable from nowhere but this box. The failure is silent — the recipe looks complete, and only fails for someone who tries it on a different machine, long after the person who wrote it could explain what the flag did.

📌 The sharpest case is 0001. Without it a draw log records no blend state at all, so ui-blend-mode-decoded.md's 35-element oracle — the thing that overturned a REFUTED entry and deleted the port's authored blend map — could not be re-derived by anyone who cloned this repository.

📌 And 0004 is the one whose absence actively misleads rather than merely blocking: without a content hash a draw log records only texture base addresses, and a triple buffer rotating once per present is indistinguishable from one decode per present. That confusion cost two withdrawn positions on units/second in a single day.