Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

- **`C10.04` attempted and withdrawn: it is blocked by the same exclusion that unblocked `C5.15`.**
A Mode 5 scene with `MOSAIC = $01` was written against the control the working rules require — the
same canvas with mosaic off — and hashed **identically to it on both references**
(`0xf7ed8ab9ecd95d85` either way).

The reason is structural. A 2x1 mosaic pair merges an *even* column with its *odd* neighbour, and
`HiResEven` samples only the even columns, so the merge is invisible to the hash **by
construction**. `C10.04` therefore sits with `C5.06`/`C5.07`: its subject lives in the mainscreen
half, which the references diverge on by 33-35% pairwise and which rule 4 forbids blessing. No
variant of `HiResEven` can help — any rule including the odd columns inherits the disagreement.

Recorded rather than silently dropped, because the *attempt* is the finding: this is the
unshowable-scene trap in its documented form, and **the control scene is the only thing that
distinguishes "the references agree" from "nothing happened"**. Its doc comment said in advance
what an equal hash would mean, which is why the trap cost one run instead of a blessed golden that
proved nothing.

- **`C5.15` is now blessed coverage: excluding the one undefined pixel made the rest of Mode 5
agree.** The retraction below establishes that the first hi-res pixel of a line is a genuine
reference disagreement on a value ares flags as *not confirmed on hardware*. Hashing it would have
Expand Down
25 changes: 25 additions & 0 deletions docs/adr/0013-accuracysnes-framebuffer-oracle.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,28 @@ The method note is the durable part. Two references agreeing is not "the referen
project counts ares and bsnes as **one** reference precisely because lineage matters, and here the
lineage that disagreed was the one not consulted. Read the third source *before* publishing a defect
claim, not after.

### `C10.04` is blocked by the same exclusion that unblocked `C5.15`

Comment on lines +244 to +245

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct the recorded status of C5.15.

Both new entries say that the exclusion “unblocked C5.15”, but the recorded final status says that C5.15 remains unblessed. Replace this wording with a statement that describes the extraction rule as an attempted follow-up, not as completed coverage.

  • docs/adr/0013-accuracysnes-framebuffer-oracle.md#L244-L245: remove the claim that the exclusion unblocked C5.15.
  • CHANGELOG.md#L14-L14: use the same unblessed C5.15 status as the ADR.

Based on learnings, contested or reference-disputed scenes must remain recorded but unscored and must not be blessed without resolved evidence. As per path instructions, documentation is the specification and must match the recorded validation status.

📍 Affects 2 files
  • docs/adr/0013-accuracysnes-framebuffer-oracle.md#L244-L245 (this comment)
  • CHANGELOG.md#L14-L14
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/adr/0013-accuracysnes-framebuffer-oracle.md` around lines 244 - 245,
Correct the recorded C5.15 status in
docs/adr/0013-accuracysnes-framebuffer-oracle.md lines 244-245 by describing the
extraction rule as an attempted follow-up, not completed coverage; remove the
claim that the exclusion unblocked C5.15. Update CHANGELOG.md line 14 to use the
same unblessed C5.15 status, preserving the rule that contested or disputed
scenes remain recorded but unscored until evidence is resolved.

Sources: Path instructions, Learnings

Attempted 2026-08-02 and **withdrawn**, because the attempt is worth more written down than the
scene would have been.

`C10.04` says a mosaic of **1** is the identity at 256 pixels but a **2x1 pair of half-pixels** in
true hi-res. A Mode 5 scene with `MOSAIC = $01` was written against exactly the control the working
rules ask for — the same canvas with mosaic off — and it hashed **identically to that control on
both references**: `0xf7ed8ab9ecd95d85` either way.

The reason is structural, not a bug in the scene. A 2x1 mosaic pair merges an *even* column with its
*odd* neighbour, and `HiResEven` samples **only the even columns**. The merge is therefore invisible
to the hash by construction: the extraction discards precisely the columns the assertion is about.

So `C10.04` sits with `C5.06`/`C5.07` — its subject lives in the **mainscreen** half, which is the
half the three references diverge on by 33-35% pairwise and which rule 4 therefore forbids blessing.
`HiResEven` does not unblock it, and no variant of `HiResEven` can: any rule that includes the odd
columns inherits the disagreement.

This is the *unshowable scene* trap (`CLAUDE.md`) in its exact documented form — "a scene can arrange
a state no picture can show; an unshowable scene hashes stably and every emulator agrees with it."
The control scene is what caught it, and its doc comment said in advance what an equal hash would
mean. **Write the control first; it is the only thing that distinguishes "the references agree" from
"nothing happened".**
Loading