Implement researched Guix package outcome for #480: [Guix packaging] RapidBrogue #714

Closed
opened 2026-09-12 00:50:28 +00:00 by htayj · 3 comments
htayj commented 2026-09-12 00:50:28 +00:00 (Migrated from github.com)

Context

This delivery ticket was created from research issue #480 ([Guix packaging] RapidBrogue).

The host-validated research finding follows:

RapidBrogue has a concrete source-buildable Guix outcome as a separately justified variant, distinct from the channel's existing parent Brogue CE packages (tay/packages/brogue.scm and tay/packages/brogue-lite.scm); no package or exact flend/RapidBrogue upstream match was found in the local package audit. Canonical source is https://github.com/flend/RapidBrogue at the immutable stable tag rapid_brogue-v1.4.0, dereferenced commit 02e6715fd81c4c9da1546943700da7b2b3ed482a (2023-03-11); the recursive source hash computed with guix hash -rx is 1j8qs94zgdf0rrn5j99r97q20xg27iivl5m27wnlga0iknzb9rhh. README/CHANGELOG identify the ten-level Rapid variant and v1.4.0; BUILD.md and Makefile specify an ordinary offline C/Make build. Use tay/packages/rapidbrogue.scm with gnu-build-system, native gcc-toolchain and make, and ncurses as the terminal runtime/build input; invoke make with RELEASE=YES, TERMINAL=YES, GRAPHICS=NO, WEBBROGUE=NO, RAPIDBROGUE=YES, and DATADIR set to the output data directory. The terminal configuration excludes SDL2 and avoids installing the graphical icon/tile assets; install keymap.txt and upstream docs/license under share, retaining the source's explicit root AGPL-3.0 text and the separate bin/assets/LICENSE.txt CC BY-SA 4.0 tile notice as provenance (the omitted graphical assets are not part of the installed closure). The root LICENSE.txt is the GNU AGPL version 3; no git submodules or language registries are present, and the tracked source tree has no font, sound, map, vendored, or other bundled dependency origin beyond the noted assets. No updater, telemetry, or runtime download behavior was found; the selected terminal build has no network path (the only socket code is optional web-platform.c and is excluded by WEBBROGUE=NO). The game writes mutable scores, saves, and recordings relative to its working directory, so the wrapper must set a per-user state directory (XDG_STATE_HOME/rapidbrogue or HOME/.local/state/rapidbrogue), copy/use keymap data without writing to the store, set TERMINFO_DIRS for ncurses, and pass --data-dir to the immutable package data. Provide normal executable rapidbrogue plus package-owned --guix-smoke: run the private binary through a fixed 100x34 PTY with exact child args -t -s 1 -n --data-dir , send one legal movement after the dungeon screen appears, quit and confirm, verify the recording/save-side effects stay below the isolated state tree, then print the single-line marker RAPIDBROGUE_GUIX_SMOKE_OK. This is a real gameplay lifecycle contract, not metadata output. The research host has no Guix daemon and the trusted boundary forbids guix shell/daemon-backed build or runtime proof here; later delivery must run guix lint, offline no-grafts build/check, upstream tests if available, and the isolated smoke screenshot at .goocastle/evidence/issue-480.png.

Acceptance criteria

  • Implement the viable package change identified in the host-validated research finding.
  • Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding.
  • Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure.

Runtime evidence contract

Implementation workflow: guix-package-quality-gates
Reviewed contract file: .goocastle/runtime-evidence-contracts.json
Required proof phase: safe-package-proof; screenshot phase: runtime-screenshot
Evidence adapter: github-issue-comment
Copy this reviewed contract into the named file before running the package proof workflow.

{
  "version": 1,
  "contracts": [
    {
      "issueNumber": 714,
      "packageName": "rapidbrogue",
      "packageModulePath": "tay/packages/rapidbrogue.scm",
      "artifactPath": ".goocastle/evidence/issue-714.png",
      "runtime": {
        "executable": "rapidbrogue",
        "invocation": {
          "file": "rapidbrogue",
          "args": [
            "--guix-smoke"
          ]
        },
        "successMarker": "RAPIDBROGUE_GUIX_SMOKE_OK"
      }
    }
  ]
}

Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-12T00:50:28Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:480:1:implementation-ready --> ## Context This delivery ticket was created from research issue #480 ([Guix packaging] RapidBrogue). The host-validated research finding follows: RapidBrogue has a concrete source-buildable Guix outcome as a separately justified variant, distinct from the channel's existing parent Brogue CE packages (tay/packages/brogue.scm and tay/packages/brogue-lite.scm); no package or exact flend/RapidBrogue upstream match was found in the local package audit. Canonical source is https://github.com/flend/RapidBrogue at the immutable stable tag rapid_brogue-v1.4.0, dereferenced commit 02e6715fd81c4c9da1546943700da7b2b3ed482a (2023-03-11); the recursive source hash computed with guix hash -rx is 1j8qs94zgdf0rrn5j99r97q20xg27iivl5m27wnlga0iknzb9rhh. README/CHANGELOG identify the ten-level Rapid variant and v1.4.0; BUILD.md and Makefile specify an ordinary offline C/Make build. Use tay/packages/rapidbrogue.scm with gnu-build-system, native gcc-toolchain and make, and ncurses as the terminal runtime/build input; invoke make with RELEASE=YES, TERMINAL=YES, GRAPHICS=NO, WEBBROGUE=NO, RAPIDBROGUE=YES, and DATADIR set to the output data directory. The terminal configuration excludes SDL2 and avoids installing the graphical icon/tile assets; install keymap.txt and upstream docs/license under share, retaining the source's explicit root AGPL-3.0 text and the separate bin/assets/LICENSE.txt CC BY-SA 4.0 tile notice as provenance (the omitted graphical assets are not part of the installed closure). The root LICENSE.txt is the GNU AGPL version 3; no git submodules or language registries are present, and the tracked source tree has no font, sound, map, vendored, or other bundled dependency origin beyond the noted assets. No updater, telemetry, or runtime download behavior was found; the selected terminal build has no network path (the only socket code is optional web-platform.c and is excluded by WEBBROGUE=NO). The game writes mutable scores, saves, and recordings relative to its working directory, so the wrapper must set a per-user state directory (XDG_STATE_HOME/rapidbrogue or HOME/.local/state/rapidbrogue), copy/use keymap data without writing to the store, set TERMINFO_DIRS for ncurses, and pass --data-dir to the immutable package data. Provide normal executable rapidbrogue plus package-owned --guix-smoke: run the private binary through a fixed 100x34 PTY with exact child args -t -s 1 -n --data-dir <immutable-data>, send one legal movement after the dungeon screen appears, quit and confirm, verify the recording/save-side effects stay below the isolated state tree, then print the single-line marker RAPIDBROGUE_GUIX_SMOKE_OK. This is a real gameplay lifecycle contract, not metadata output. The research host has no Guix daemon and the trusted boundary forbids guix shell/daemon-backed build or runtime proof here; later delivery must run guix lint, offline no-grafts build/check, upstream tests if available, and the isolated smoke screenshot at .goocastle/evidence/issue-480.png. ## Acceptance criteria - Implement the viable package change identified in the host-validated research finding. - Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding. - Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure. <!-- goocastle-runtime-evidence-contract --> ## Runtime evidence contract Implementation workflow: `guix-package-quality-gates` Reviewed contract file: `.goocastle/runtime-evidence-contracts.json` Required proof phase: `safe-package-proof`; screenshot phase: `runtime-screenshot` Evidence adapter: `github-issue-comment` Copy this reviewed contract into the named file before running the package proof workflow. ```json { "version": 1, "contracts": [ { "issueNumber": 714, "packageName": "rapidbrogue", "packageModulePath": "tay/packages/rapidbrogue.scm", "artifactPath": ".goocastle/evidence/issue-714.png", "runtime": { "executable": "rapidbrogue", "invocation": { "file": "rapidbrogue", "args": [ "--guix-smoke" ] }, "successMarker": "RAPIDBROGUE_GUIX_SMOKE_OK" } } ] } ``` <!-- goocastle-runtime-evidence-contract-end --> --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/714). Originally posted by [htayj](https://github.com/htayj) on 2026-09-12T00:50:28Z.
htayj commented 2026-09-12 01:29:56 +00:00 (Migrated from github.com)

Goocastle verified runtime evidence.

Runtime screenshot

Runtime receipt
  • Package: rapidbrogue
  • Safe package proof phase: safe-package-proof
  • Safe package proof argv: ["node","/opt/goocastle/bin/guix-package-proof.mjs","--package-name","rapidbrogue","--module-path","tay/packages/rapidbrogue.scm","--runtime-json","{&quot;executable&quot;:&quot;rapidbrogue&quot;,&quot;invocation&quot;:{&quot;file&quot;:&quot;rapidbrogue&quot;,&quot;args&quot;:[&quot;--guix-smoke&quot;]},&quot;successMarker&quot;:&quot;RAPIDBROGUE_GUIX_SMOKE_OK&quot;}"]
  • Screenshot phase: runtime-screenshot
  • Screenshot argv: ["sh",".goocastle/capture-guix-package-screenshot.sh"]
  • Runtime executable (Guix store/profile): /gnu/store/j78bpkcibrplza2xybkn9qxafipmi6pf-rapidbrogue-1.4.0/bin/rapidbrogue
  • Runtime invocation: ["/gnu/store/j78bpkcibrplza2xybkn9qxafipmi6pf-rapidbrogue-1.4.0/bin/rapidbrogue","--guix-smoke"]
  • Expected runtime invocation: ["rapidbrogue","--guix-smoke"]
  • Expected runtime marker: RAPIDBROGUE_GUIX_SMOKE_OK
  • Per-issue runtime contract: .goocastle/runtime-evidence-contracts.json (issue #714, SHA-256 ca51d95a857dd3f5976990e365bd2bc0ee7fb62c5eeab3ef8561ddbb88af00b5)
  • Artifact path: .goocastle/evidence/issue-714.png
  • Artifact SHA-256: 6b4049d68d08cbca92d7014ec4962d311ef11355a85d5b8ca568bc94a201bd32
  • Artifact commit: c7d4eaaa2fb1b0c0f8ddf6f4c4e77c73b9be2f08
  • Artifact size/format: 31989 bytes / png

Imported from GitHub comment. Originally posted by htayj on 2026-09-12T01:29:56Z.

<!-- goocastle-runtime-evidence:sequential-reviewer:714:1:6b4049d68d08cbca92d7014ec4962d311ef11355a85d5b8ca568bc94a201bd32 --> Goocastle verified runtime evidence. ![Runtime screenshot](https://github.com/htayj/guix-channel/blob/c7d4eaaa2fb1b0c0f8ddf6f4c4e77c73b9be2f08/.goocastle/evidence/issue-714.png?raw=1) <details><summary>Runtime receipt</summary> - Package: <code>rapidbrogue</code> - Safe package proof phase: <code>safe-package-proof</code> - Safe package proof argv: <code>[&quot;node&quot;,&quot;/opt/goocastle/bin/guix-package-proof.mjs&quot;,&quot;--package-name&quot;,&quot;rapidbrogue&quot;,&quot;--module-path&quot;,&quot;tay/packages/rapidbrogue.scm&quot;,&quot;--runtime-json&quot;,&quot;{\&quot;executable\&quot;:\&quot;rapidbrogue\&quot;,\&quot;invocation\&quot;:{\&quot;file\&quot;:\&quot;rapidbrogue\&quot;,\&quot;args\&quot;:[\&quot;--guix-smoke\&quot;]},\&quot;successMarker\&quot;:\&quot;RAPIDBROGUE_GUIX_SMOKE_OK\&quot;}&quot;]</code> - Screenshot phase: <code>runtime-screenshot</code> - Screenshot argv: <code>[&quot;sh&quot;,&quot;.goocastle/capture-guix-package-screenshot.sh&quot;]</code> - Runtime executable (Guix store/profile): <code>/gnu/store/j78bpkcibrplza2xybkn9qxafipmi6pf-rapidbrogue-1.4.0/bin/rapidbrogue</code> - Runtime invocation: <code>[&quot;/gnu/store/j78bpkcibrplza2xybkn9qxafipmi6pf-rapidbrogue-1.4.0/bin/rapidbrogue&quot;,&quot;--guix-smoke&quot;]</code> - Expected runtime invocation: <code>[&quot;rapidbrogue&quot;,&quot;--guix-smoke&quot;]</code> - Expected runtime marker: <code>RAPIDBROGUE_GUIX_SMOKE_OK</code> - Per-issue runtime contract: <code>.goocastle/runtime-evidence-contracts.json (issue #714, SHA-256 ca51d95a857dd3f5976990e365bd2bc0ee7fb62c5eeab3ef8561ddbb88af00b5)</code> - Artifact path: <code>.goocastle/evidence/issue-714.png</code> - Artifact SHA-256: <code>6b4049d68d08cbca92d7014ec4962d311ef11355a85d5b8ca568bc94a201bd32</code> - Artifact commit: <code>c7d4eaaa2fb1b0c0f8ddf6f4c4e77c73b9be2f08</code> - Artifact size/format: <code>31989 bytes / png</code> </details> --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/714#issuecomment-5642543102). Originally posted by [htayj](https://github.com/htayj) on 2026-09-12T01:29:56Z.
htayj commented 2026-09-12 01:30:10 +00:00 (Migrated from github.com)

Completed by Goocastle


Imported from GitHub comment. Originally posted by htayj on 2026-09-12T01:30:10Z.

Completed by Goocastle --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/714#issuecomment-5642544280). Originally posted by [htayj](https://github.com/htayj) on 2026-09-12T01:30:10Z.
Owner

Delivered signed/authenticated commit70c369222934ce1789ab72f5639f827ac74b3250. Restored full original SDL text/tiles/hybrid assets plus ncurses frontend, removed fake package smoke option/runtime scaffolding and retired obsolete issue714 contract. Canonical source pin and AGPL/GPL/CC-BY-SA notices preserved. Final output /gnu/store/10dlxiymqhm57x592gvjwkv2gb3jqn3s-rapidbrogue-1.4.0 source build --check/offline lint passed. Integrated isolated real SDL and terminal gameplay/save/resume passed both seed1 depth1 turns3 to5, preserved native event prefix/load marker and additional rest events. Store NAR unchanged. Final native PNG714 hybrid screenshot inspected Str12 Armor3 Depth1 and actual hybrid message/map; text/tiles captures retained. Legacy compiler warnings disclosed, not suppressed. No Goocastle execution, fullcampaign/GPU proof or profile deployment claimed.

Delivered signed/authenticated commit70c369222934ce1789ab72f5639f827ac74b3250. Restored full original SDL text/tiles/hybrid assets plus ncurses frontend, removed fake package smoke option/runtime scaffolding and retired obsolete issue714 contract. Canonical source pin and AGPL/GPL/CC-BY-SA notices preserved. Final output /gnu/store/10dlxiymqhm57x592gvjwkv2gb3jqn3s-rapidbrogue-1.4.0 source build --check/offline lint passed. Integrated isolated real SDL and terminal gameplay/save/resume passed both seed1 depth1 turns3 to5, preserved native event prefix/load marker and additional rest events. Store NAR unchanged. Final native PNG714 hybrid screenshot inspected Str12 Armor3 Depth1 and actual hybrid message/map; text/tiles captures retained. Legacy compiler warnings disclosed, not suppressed. No Goocastle execution, fullcampaign/GPU proof or profile deployment claimed.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#714
No description provided.