Record the retro boundary and the three core selections - #17
Conversation
…ions Three commitments were being re-derived in conversation instead of read from the register. D-185 through D-187 fix them. D-185 makes the no-vendoring boundary explicit: no third-party emulator, frontend, or core source or binary enters this repository. Upstream components are recorded only as pinned provenance -- repository, observed branch, commit revision, git tree object, archive URL, archive SHA-256, byte length, licence text location, and notice obligations -- and build recipes fetch and verify those artifacts before assembling a signed local package. This records the practice already in force: the retro-2048 manifest already states that no RetroArch or core binary is bundled, and vcg-development-package already assembles from operator-supplied archives checked against pinned digests. D-186 selects the Snes9x libretro port for the personal-use retro lane and records its licence exactly rather than approximately: non-commercial purposes only, freeware for personal use only, and the libretro port stating that under no circumstances will commercial rights be given. Snes9x-derived packages may therefore never declare rights.distribution as redistributable and must carry a LicenseRef stating the non-commercial condition, the component attribution mosaic (JMA GPL/LGPL, snes_ntsc LGPL, xBRZ GPLv3), and the Nintendo trademark notice. The project owner states this is a non-commercial open-source project, which is inside the personal-use grant, and under D-185 no Snes9x code is redistributed here at all. Provenance for the pinned revision was verified independently rather than asserted: three separate downloads of the archive for 21a66f3975388e15d5495d52422415f52c040f86 were byte-identical at SHA-256 5146b4fbdb7062a3d93d5ced27c72d7c811f7278228353786619c0d591b73634, and all 181 archive blobs matched the pinned git tree with no missing, extra, or mode-differing files. D-187 records the continuous-integration platform policy already implemented: real-resource tests on Linux only, every deterministic check on both platforms. Re-registers 91 plan source bindings, since DECISIONS.md is bound by many pre-registration plans. No physical result, threshold, gate, selection, authorization, or qualification field changed. Nothing here qualifies a core, a build, or a Raspberry Pi. D-186 selects a candidate and records its licence; performance, accuracy, and save behaviour on the target remain unmeasured. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
D-188 selects the libretro FCEUmm port for NES and D-189 selects Genesis Plus GX for Mega Drive, Master System, and Game Gear. Both record exact licence terms and independently verified provenance rather than asserted ones. FCEUmm is GPL version 2, with its bundled NTSC filter under LGPL 2.1. It is the only retro core selected so far under a recognised open-source licence, so the NES lane stays usable if project scope ever changes. Genesis Plus GX permits redistribution but states that redistributions may not be sold nor used in a commercial product or activity, requires complete corresponding source for modified redistributions, and carries a component mosaic including Nuked OPN2, an LGPL NTSC filter, libchdr, libFLAC under Xiph BSD terms, minimp3, Tremor, and public-domain LZMA SDK code. Two licence readings were checked by hand rather than by pattern match, because grep gets both wrong. The word noncommercial in the FCEUmm COPYING file is the GPL preamble discussing equivalent-source distribution, not a restriction. The phrase commercial or non-commercial in the Genesis Plus GX licence file belongs to the permissive LZMA SDK public-domain notice, not to the core terms; the actual restriction is a separate clause. Provenance verified by the method the 2048 candidate declares, three independent downloads and a per-blob comparison against the pinned git tree: fceumm b5e3566515c27dc66c9c20572171673126532e06 687/687 blobs genesis-plus-gx ca93fec870378f3bff65931bcd828d5e756cce75 721/721 blobs Both matched with no missing, extra, or mode-differing files. Re-registers 91 plan source bindings, since DECISIONS.md is bound by many pre-registration plans. No physical result, threshold, gate, selection, authorization, or qualification field changed. No core is qualified by this. Nothing has been built, run, or measured on a Raspberry Pi. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughUpdated SHA-256 source-binding digests across 35 benchmark plans. Updated ChangesSource-binding refresh
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with 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.
Inline comments:
In `@docs/DECISIONS.md`:
- Around line 196-199: Update the PR objective’s “no selections changed”
statement to explicitly limit that claim to benchmark qualification fields,
since D-186, D-188, and D-189 select cores. Preserve the documented core
selections and ensure the objective no longer conflicts with DECISIONS.md.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 8f36d843-4764-400f-93fd-5a7ad1fcd7cc
📒 Files selected for processing (37)
benchmarks/camera-angle/fixed-angle-escalation-evidence-plan-v1.jsonbenchmarks/camera-cabling/cross-tier-camera-cable-plan-v1.jsonbenchmarks/camera-geometry/cross-tier-camera-placement-geometry-plan-v1.jsonbenchmarks/camera-service/camera-replacement-recalibration-plan-v1.jsonbenchmarks/camera-state/physical-shutter-camera-state-experience-plan-v1.jsonbenchmarks/controller-only-usability/cross-tier-controller-only-usability-plan-v1.jsonbenchmarks/cross-tier-reference/pi5-x86-product-contract-plan-v1.jsonbenchmarks/csi-fallback/pi5-camera-module-3-wide-csi-fallback-plan-v1.jsonbenchmarks/depth-comparison/oak-d-pro-w-rgb-depth-comparison-plan-v1.jsonbenchmarks/depth-interference/cross-device-ir-interference-safety-plan-v1.jsonbenchmarks/enclosure/pi5-integrated-enclosure-reference-build-plan-v1.jsonbenchmarks/failure-critical-substitutes/cross-tier-failure-critical-substitute-plan-v1.jsonbenchmarks/first-party-motion-adaptation/first-party-motion-adaptation-ranking-plan-v1.jsonbenchmarks/four-player/four-player-qualification-plan-v1.jsonbenchmarks/hailo-recovery/hailo-package-model-recovery-plan-v1.jsonbenchmarks/jetson/jetson-orin-nano-super-tensorrt-plan-v1.jsonbenchmarks/kiosk-compositor/cross-tier-kiosk-compositor-plan-v1.jsonbenchmarks/lens-calibration/cross-tier-lens-distortion-rectification-plan-v1.jsonbenchmarks/libretro/supervised-libretro-frontend-qualification-plan-v1.jsonbenchmarks/orbbec/gemini-335l-linux-target-plan-v1.jsonbenchmarks/realsense/d455-linux-target-plan-v1.jsonbenchmarks/reserved-home/reserved-home-action-plan-v1.jsonbenchmarks/shutdown-reserve/pi5-shutdown-reserve-comparison-plan-v1.jsonbenchmarks/signed-local-package/runtime-neutral-signed-local-package-plan-v1.jsonbenchmarks/steam-input/steamos-steam-input-action-plan-v1.jsonbenchmarks/steam-machine-accountless/steam-machine-accountless-core-plan-v1.jsonbenchmarks/steam-machine-dual-boot/steam-machine-windows-dual-boot-status-v1.jsonbenchmarks/steam-machine-os-comparison/steam-machine-steamos-windows-comparison-plan-v1.jsonbenchmarks/steamos-camera/steamos-uvc-permission-plan-v1.jsonbenchmarks/steamos-content/steamos-update-safe-content-plan-v1.jsonbenchmarks/steamos-shell/steamos-outer-shell-lifecycle-plan-v1.jsonbenchmarks/steamos-workload/steamos-pose-game-workload-plan-v1.jsonbenchmarks/system-economics/complete-system-economics-plan-v1.jsonbenchmarks/tv-visual-tokens/physical-tv-visual-token-plan-v1.jsonbenchmarks/two-player/two-player-qualification-plan-v1.jsonbenchmarks/visual-robustness/cross-tier-visual-robustness-plan-v1.jsondocs/DECISIONS.md
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
- GitHub Check: node / ubuntu-latest
- GitHub Check: native / windows-latest
- GitHub Check: node / windows-latest
- GitHub Check: e2e / ubuntu-latest
🔇 Additional comments (23)
docs/DECISIONS.md (3)
3-7: 🎯 Functional CorrectnessVerify the register metadata from the complete file.
Recompute the decision-ID sequence and confirm that
189 decisions through D-189andLast updated: 2026-08-03match the complete register.
195-199: 🔒 Security & PrivacyLink the required D-185 provenance fields.
D-185 requires the repository, observed branch, commit, git-tree object, archive URL, archive SHA-256, archive byte length, exact licence-text location, and notice obligations. D-186 through D-189 show only part of this information in these rows. If complete records exist elsewhere, link each decision to its authoritative provenance record.
197-197: 🩺 Stability & AvailabilityVerify that CI enforces D-187.
Confirm that real-resource jobs run only on Linux, deterministic jobs remain required on both platforms, and no Windows real-resource check remains required.
benchmarks/camera-geometry/cross-tier-camera-placement-geometry-plan-v1.json (1)
17-17: 🗄️ Data Integrity & IntegrationNo digest changes are required.
All 551 source bindings match their repository files, with no conflicts or missing sources.
> Likely an incorrect or invalid review comment.benchmarks/depth-comparison/oak-d-pro-w-rgb-depth-comparison-plan-v1.json (2)
20-20: LGTM!
40-45: LGTM!benchmarks/four-player/four-player-qualification-plan-v1.json (2)
19-19: LGTM!
44-44: LGTM!benchmarks/enclosure/pi5-integrated-enclosure-reference-build-plan-v1.json (3)
43-48: LGTM!
63-68: LGTM!
78-88: LGTM!benchmarks/failure-critical-substitutes/cross-tier-failure-critical-substitute-plan-v1.json (2)
35-40: LGTM!
70-70: LGTM!benchmarks/orbbec/gemini-335l-linux-target-plan-v1.json (1)
41-41: LGTM!benchmarks/realsense/d455-linux-target-plan-v1.json (1)
41-41: LGTM!benchmarks/steamos-shell/steamos-outer-shell-lifecycle-plan-v1.json (2)
58-58: LGTM!
68-68: LGTM!benchmarks/steamos-workload/steamos-pose-game-workload-plan-v1.json (2)
25-25: LGTM!
35-35: LGTM!benchmarks/system-economics/complete-system-economics-plan-v1.json (2)
40-40: LGTM!
65-65: LGTM!benchmarks/steam-machine-os-comparison/steam-machine-steamos-windows-comparison-plan-v1.json (1)
18-18: 🗄️ Data Integrity & IntegrationNo changes needed.
All listed source digests and downstream bindings match the repository bytes. The object-valued
sourceDigestContractis required by the SteamOS shell validator.benchmarks/signed-local-package/runtime-neutral-signed-local-package-plan-v1.json (1)
15-15: 🗄️ Data Integrity & IntegrationNo action required. All source bindings match their normalized UTF-8 SHA-256 digests.
| | D-186 | Working | Select the Snes9x libretro port as the SNES core for the personal-use retro lane, recording its exact licence terms rather than approximating them: permission to use, copy, modify, and distribute in binary and source form is granted for non-commercial purposes only; Snes9x is freeware for personal use only and commercial users must seek permission first; and the libretro port states that under no circumstances will commercial rights be given. Snes9x-derived packages may therefore never declare `rights.distribution` as `redistributable`, and must carry a `LicenseRef` that states the non-commercial condition, the component attribution mosaic (JMA under GPL/LGPL, snes_ntsc under LGPL, xBRZ under GPLv3), and the Nintendo trademark notice. | The project owner states this is a non-commercial open-source project, which is inside the personal-use grant, and under D-185 no Snes9x code is redistributed by this repository at all: the operator fetches upstream and builds for their own device. Snes9x is also the SNES core most likely to reach full speed on a Raspberry Pi 5, where accuracy-focused alternatives may not. The licence is nonetheless not an OSI-style open-source licence because of its field-of-use restriction, so recording it exactly prevents a later assumption that these packages are freely redistributable. Provenance for revision `21a66f3975388e15d5495d52422415f52c040f86` was independently verified: three separate downloads of the pinned archive were byte-identical at SHA-256 `5146b4fbdb7062a3d93d5ced27c72d7c811f7278228353786619c0d591b73634`, and all 181 archive blobs matched the pinned git tree with no missing, extra, or mode-differing files. | The project scope changes toward commercial distribution, in which case Snes9x becomes ineligible and a GPL-licensed core must be screened instead; or measured Raspberry Pi 5 performance, accuracy, or save behaviour fails and another core is qualified. Retain exact licence recording and the non-redistribution boundary either way. | | ||
| | D-187 | Working | Run continuous-integration tests that require real operating-system resources — child-process supervision, local sockets, and real browsers — on Linux only. Windows continues to run every deterministic check: format, lint, build, typecheck, and the computational test suite. Required status checks cover both platforms for the deterministic jobs and Linux only for the real-resource jobs. | Linux is the product target for both the Raspberry Pi 5 and the ordinary x86-64 reference. Five continuous-integration failures were all on Windows runners, all in real-resource tests, a different test each time, and every one passed on rerun, while none ever caught a defect Linux did not; the one real layout defect in that suite reproduced only under Linux font metrics and was found by the Linux job. A required check that fails spuriously trains reviewers to ignore it, which is worse protection than none. Windows retains real value for deterministic checks: `clippy::large_enum_variant` on `InstalledRuntime` fires only where `PathBuf` is 32 bytes and is invisible on Linux. | Windows becomes a supported appliance target rather than a development host, or a Windows-only defect escapes because a real-resource test no longer runs there; add the job back with an explicit flake budget rather than silently widening timeouts. | | ||
| | D-188 | Working | Select the libretro FCEUmm port as the NES core, recording its licence as GNU GPL version 2 with the bundled NTSC filter library under LGPL version 2.1. FCEUmm is the only retro core selected so far under a recognised open-source licence, so NES packages may declare `rights.distribution` as `redistributable` provided the GPL source-offer obligation is honoured and the LGPL filter attribution is retained. | The project owner requires NES support. FCEUmm is the widely used libretro NES core and, unlike the selected SNES and Mega Drive cores, carries no field-of-use restriction, which keeps the NES lane usable if project scope ever changes. Provenance for revision `b5e3566515c27dc66c9c20572171673126532e06` was verified rather than asserted: three separate downloads of the pinned archive were byte-identical at SHA-256 `1ef34c9ed324f91856d6eca7d923e4f0d33ce85acb4b6a9b62d4a56c46e5ddc1`, and all 687 archive blobs matched the pinned git tree with no missing, extra, or mode-differing files. Licence text was read at source; the word "noncommercial" appearing in the GPL preamble is the licence's own wording about equivalent-source distribution and is not a field-of-use restriction. | Measured Raspberry Pi 5 performance, accuracy, mapper coverage, or save behaviour fails, or the GPL source-offer obligation cannot be met by the recipe boundary in D-185; screen Nestopia or Mesen instead and retain exact licence recording. | | ||
| | D-189 | Working | Select the libretro Genesis Plus GX port as the Mega Drive, Master System, and Game Gear core, recording its licence exactly: redistribution and use are permitted, but "Redistributions may not be sold, nor may they be used in a commercial product or activity", modified redistributions must include complete corresponding source, and the copyright notice and conditions must be reproduced. Genesis Plus GX packages may therefore never declare `rights.distribution` as `redistributable` without the non-commercial condition stated, and must carry the component attribution mosaic, which includes Nuked OPN2 under LGPL, an LGPL NTSC filter, libchdr, libFLAC under the Xiph BSD terms, minimp3, Tremor, and public-domain LZMA SDK code. | The project owner requires Sega support and states the project is non-commercial open source, which is inside this grant, and under D-185 no Genesis Plus GX code is redistributed by this repository. Provenance for revision `ca93fec870378f3bff65931bcd828d5e756cce75` was verified: three separate downloads were byte-identical at SHA-256 `9b00f9b29abb4e9fbe7be01b54e45bb8910935b62810c1d2f4a2b2138237650b`, and all 721 archive blobs matched the pinned git tree. The licence was read at source rather than pattern-matched: a "commercial or non-commercial" phrase in the same file belongs to the permissive LZMA SDK public-domain notice and must not be mistaken for the core's own terms. | Project scope changes toward commercial distribution, making this core ineligible alongside Snes9x; or measured target performance, accuracy, or CD support fails and PicoDrive or BlastEm is screened instead. Retain exact licence recording either way. | |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Scope the “no selections changed” statement in the PR objective.
D-186, D-188, and D-189 add core selections. If the objective refers only to benchmark qualification fields, state that scope explicitly. Otherwise, the objective conflicts with this document.
🤖 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/DECISIONS.md` around lines 196 - 199, Update the PR objective’s “no
selections changed” statement to explicitly limit that claim to benchmark
qualification fields, since D-186, D-188, and D-189 select cores. Preserve the
documented core selections and ensure the objective no longer conflicts with
DECISIONS.md.
Three commitments were being re-derived in conversation instead of read from the register. D-185 through D-189 fix that.
D-185 — never vendor emulator code
No third-party emulator, frontend, or core source or binary enters this repository. Upstream is recorded only as pinned provenance — repository, observed branch, revision, git tree object, archive URL, archive SHA-256, byte length, licence text location, notice obligations — and build recipes fetch and verify those artifacts before assembling a signed local package.
This records the practice already in force: the
retro-2048manifest already states no RetroArch or core binary is bundled, andvcg-development-packagealready assembles from operator-supplied archives checked against pinned digests.D-186 / D-188 / D-189 — the three cores, with licences read at source
Only the NES core is free of a field-of-use restriction. All three are inside their grants for a non-commercial open-source project that never redistributes their code.
Two licence readings needed human eyes, because grep gets both wrong. "noncommercial" in FCEUmm's
COPYINGis the GPL preamble discussing equivalent-source distribution — not a restriction. "commercial or non-commercial" in the Genesis Plus GX licence file belongs to the permissive LZMA SDK public-domain notice; the real restriction is a separate clause. I initially flagged Genesis Plus GX from the pattern match and had to read the file to get it right.Provenance — verified, not asserted
Using the method the 2048 candidate declares (
git-blob-oid-and-tar-mode-comparison, three independent downloads):21a66f39…b5e35665…ca93fec8…All matched the pinned git tree with no missing, extra, or mode-differing files.
D-187 — test platform policy
Records the CI policy already implemented: real-resource tests on Linux only, every deterministic check on both platforms.
Scope
Re-registers 91 plan source bindings (DECISIONS.md is bound by many plans). No physical result, threshold, gate, selection, authorization, or qualification field changed.
No core is qualified by this. Nothing has been built, run, or measured on a Raspberry Pi. These are selections with recorded licences and verified provenance — the inputs to a build, not evidence that one works.
🤖 Generated with Claude Code