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

52 lines
3.1 KiB
Markdown

# 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`](../../docs/re/structures/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`](../../docs/re/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`](../../docs/re/guest-frame-rate-resolved.md), its withdrawal, and [`clock-is-frame-based-one-unit-per-present.md`](../../docs/re/clock-is-frame-based-one-unit-per-present.md) |
## Applying
```bash
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.