Implement researched Guix package outcome for #404: [Guix packaging] Intelligence: Rae Lives #699

Closed
opened 2026-09-09 03:41:36 +00:00 by htayj · 2 comments
htayj commented 2026-09-09 03:41:36 +00:00 (Migrated from github.com)

Context

This delivery ticket was created from research issue #404 ([Guix packaging] Intelligence: Rae Lives).

The host-validated research finding follows:

Canonical upstream is https://github.com/littleglassdiode/irl. Use the immutable current master revision 2085fa6f55abf53ea1a07bb348f99a720763bbbd (2014-03-05), version 0.0.1-0.20140305; the Guix recursive source hash of that tracked tree is 6nzbmi33qsircnv323vzf47kqxbtxknhybyjas5fv2m775d4ckga (git-archive SHA-256 f7ae3a6885fa00c676f9261ed1bde8d3de32ee5ce9ddd63a78eb179173335454). Upstream has an annotated 0.0.1 tag at 6819275b0b08f75315e6adea71d42b653e4aac51, but the selected revision is the later renamed-game tip; no newer release metadata was present. The local channel/audit set has no same-upstream or Rae Lives equivalent, so this is an ordinary delivery. The source is a small C99 ncurses terminal game: ldt.sh compiles every src/.c with gcc -Wall -std=c99 and links -lm -lncurses; there is no Makefile, configure step, language registry, or upstream test target. Implement tay/packages/raelives.scm, module (tay packages raelives), public package name raelives, with gnu-build-system, configure disabled, explicit compilation/linking from src/.c, native-input gcc-toolchain, and ncurses runtime/build input; do not run ldt.sh because its source-tree build stamps and unquoted command construction are not package-safe. Install the binary privately as /libexec/raelives, a /bin/raelives wrapper, and COPYING plus selected project documentation under share/doc/raelives. The only project origin is the repository (git submodule status is empty); all 14 C source/header files carry the same full MIT grant as COPYING, credited to Clayton G. Hobbs, and AUTHORS names Clayton G. Hobbs and TheDarklingWolf. No fonts, tiles, sounds, bundled libraries, registry downloads, updater, telemetry, or runtime network access are present. Do not install testmap: it is an unlicensed-looking fixture for the unfinished load path, and main.c never uses loadlevel; if it is ever shipped, obtain separate provenance first. The game has no implemented save/load (TODO line 1), persists no state, and accepts normal key input with Q to exit. The package wrapper must add an exact --smoke mode that creates a private temporary state/work directory below XDG_STATE_HOME or HOME, sets a fixed TERM and PTY size 24x80, launches the real /libexec/raelives, waits for the Rae/map screen, sends l to exercise a legal movement from the initial map position, verifies a post-move screen and clean Q exit, asserts the work directory has no store path, then prints exactly RAELIVES_RUNTIME_OK on stdout. No direct feasibility build was attempted because this phase is explicitly daemon-disabled; the authoritative build script and closure establish source-buildability, while later Guix build/lint/check and PTY artifact validation remain acceptance work. Planned acceptance: guix lint -L . raelives; guix build -L . --no-grafts raelives and --check; run any available upstream checks (none declared); and invoke the installed wrapper as raelives --smoke from fresh HOME/XDG_STATE_HOME, retaining .goocastle/evidence/issue-404.png and asserting the single-line marker plus no store writes.

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": 699,
      "packageName": "raelives",
      "packageModulePath": "tay/packages/raelives.scm",
      "artifactPath": ".goocastle/evidence/issue-699.png",
      "runtime": {
        "executable": "raelives",
        "invocation": {
          "file": "raelives",
          "args": [
            "--smoke"
          ]
        },
        "successMarker": "RAELIVES_RUNTIME_OK"
      }
    }
  ]
}

Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-09T03:41:36Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:404:1:implementation-ready --> ## Context This delivery ticket was created from research issue #404 ([Guix packaging] Intelligence: Rae Lives). The host-validated research finding follows: Canonical upstream is https://github.com/littleglassdiode/irl. Use the immutable current master revision 2085fa6f55abf53ea1a07bb348f99a720763bbbd (2014-03-05), version 0.0.1-0.20140305; the Guix recursive source hash of that tracked tree is 6nzbmi33qsircnv323vzf47kqxbtxknhybyjas5fv2m775d4ckga (git-archive SHA-256 f7ae3a6885fa00c676f9261ed1bde8d3de32ee5ce9ddd63a78eb179173335454). Upstream has an annotated 0.0.1 tag at 6819275b0b08f75315e6adea71d42b653e4aac51, but the selected revision is the later renamed-game tip; no newer release metadata was present. The local channel/audit set has no same-upstream or Rae Lives equivalent, so this is an ordinary delivery. The source is a small C99 ncurses terminal game: ldt.sh compiles every src/*.c with gcc -Wall -std=c99 and links -lm -lncurses; there is no Makefile, configure step, language registry, or upstream test target. Implement tay/packages/raelives.scm, module (tay packages raelives), public package name raelives, with gnu-build-system, configure disabled, explicit compilation/linking from src/*.c, native-input gcc-toolchain, and ncurses runtime/build input; do not run ldt.sh because its source-tree build stamps and unquoted command construction are not package-safe. Install the binary privately as /libexec/raelives, a /bin/raelives wrapper, and COPYING plus selected project documentation under share/doc/raelives. The only project origin is the repository (git submodule status is empty); all 14 C source/header files carry the same full MIT grant as COPYING, credited to Clayton G. Hobbs, and AUTHORS names Clayton G. Hobbs and TheDarklingWolf. No fonts, tiles, sounds, bundled libraries, registry downloads, updater, telemetry, or runtime network access are present. Do not install testmap: it is an unlicensed-looking fixture for the unfinished load path, and main.c never uses loadlevel; if it is ever shipped, obtain separate provenance first. The game has no implemented save/load (TODO line 1), persists no state, and accepts normal key input with Q to exit. The package wrapper must add an exact --smoke mode that creates a private temporary state/work directory below XDG_STATE_HOME or HOME, sets a fixed TERM and PTY size 24x80, launches the real /libexec/raelives, waits for the Rae/map screen, sends l to exercise a legal movement from the initial map position, verifies a post-move screen and clean Q exit, asserts the work directory has no store path, then prints exactly RAELIVES_RUNTIME_OK on stdout. No direct feasibility build was attempted because this phase is explicitly daemon-disabled; the authoritative build script and closure establish source-buildability, while later Guix build/lint/check and PTY artifact validation remain acceptance work. Planned acceptance: guix lint -L . raelives; guix build -L . --no-grafts raelives and --check; run any available upstream checks (none declared); and invoke the installed wrapper as raelives --smoke from fresh HOME/XDG_STATE_HOME, retaining .goocastle/evidence/issue-404.png and asserting the single-line marker plus no store writes. ## 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": 699, "packageName": "raelives", "packageModulePath": "tay/packages/raelives.scm", "artifactPath": ".goocastle/evidence/issue-699.png", "runtime": { "executable": "raelives", "invocation": { "file": "raelives", "args": [ "--smoke" ] }, "successMarker": "RAELIVES_RUNTIME_OK" } } ] } ``` <!-- goocastle-runtime-evidence-contract-end --> --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/699). Originally posted by [htayj](https://github.com/htayj) on 2026-09-09T03:41:36Z.
htayj commented 2026-09-09 05:57:45 +00:00 (Migrated from github.com)

Goocastle verified runtime evidence.

Runtime screenshot

Runtime receipt
  • Package: raelives
  • Safe package proof phase: safe-package-proof
  • Safe package proof argv: ["node","/opt/goocastle/bin/guix-package-proof.mjs","--package-name","raelives","--module-path","tay/packages/raelives.scm","--runtime-json","{&quot;executable&quot;:&quot;raelives&quot;,&quot;invocation&quot;:{&quot;file&quot;:&quot;raelives&quot;,&quot;args&quot;:[&quot;--smoke&quot;]},&quot;successMarker&quot;:&quot;RAELIVES_RUNTIME_OK&quot;}"]
  • Screenshot phase: runtime-screenshot
  • Screenshot argv: ["sh",".goocastle/capture-guix-package-screenshot.sh"]
  • Runtime executable (Guix store/profile): /gnu/store/5l27wjd5j9cbasqg548a3mw246ap2l60-raelives-0.0.1-0.20140305/bin/raelives
  • Runtime invocation: ["/gnu/store/5l27wjd5j9cbasqg548a3mw246ap2l60-raelives-0.0.1-0.20140305/bin/raelives","--smoke"]
  • Expected runtime invocation: ["raelives","--smoke"]
  • Expected runtime marker: RAELIVES_RUNTIME_OK
  • Per-issue runtime contract: .goocastle/runtime-evidence-contracts.json (issue #699, SHA-256 dba7939a029815e07226fa9c23f9a1a56be183e08d046c3a307707676d763a60)
  • Artifact path: .goocastle/evidence/issue-699.png
  • Artifact SHA-256: ba942cba873a372ad6956073aa272e19ac43f1bef60ac0939c835663b0ef3c81
  • Artifact commit: dc984e1a24132c7e26f87376eca39d4f8bb62d50
  • Artifact size/format: 16145 bytes / png

Imported from GitHub comment. Originally posted by htayj on 2026-09-09T05:57:45Z.

<!-- goocastle-runtime-evidence:sequential-reviewer:699:1:ba942cba873a372ad6956073aa272e19ac43f1bef60ac0939c835663b0ef3c81 --> Goocastle verified runtime evidence. ![Runtime screenshot](https://github.com/htayj/guix-channel/blob/dc984e1a24132c7e26f87376eca39d4f8bb62d50/.goocastle/evidence/issue-699.png?raw=1) <details><summary>Runtime receipt</summary> - Package: <code>raelives</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;raelives&quot;,&quot;--module-path&quot;,&quot;tay/packages/raelives.scm&quot;,&quot;--runtime-json&quot;,&quot;{\&quot;executable\&quot;:\&quot;raelives\&quot;,\&quot;invocation\&quot;:{\&quot;file\&quot;:\&quot;raelives\&quot;,\&quot;args\&quot;:[\&quot;--smoke\&quot;]},\&quot;successMarker\&quot;:\&quot;RAELIVES_RUNTIME_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/5l27wjd5j9cbasqg548a3mw246ap2l60-raelives-0.0.1-0.20140305/bin/raelives</code> - Runtime invocation: <code>[&quot;/gnu/store/5l27wjd5j9cbasqg548a3mw246ap2l60-raelives-0.0.1-0.20140305/bin/raelives&quot;,&quot;--smoke&quot;]</code> - Expected runtime invocation: <code>[&quot;raelives&quot;,&quot;--smoke&quot;]</code> - Expected runtime marker: <code>RAELIVES_RUNTIME_OK</code> - Per-issue runtime contract: <code>.goocastle/runtime-evidence-contracts.json (issue #699, SHA-256 dba7939a029815e07226fa9c23f9a1a56be183e08d046c3a307707676d763a60)</code> - Artifact path: <code>.goocastle/evidence/issue-699.png</code> - Artifact SHA-256: <code>ba942cba873a372ad6956073aa272e19ac43f1bef60ac0939c835663b0ef3c81</code> - Artifact commit: <code>dc984e1a24132c7e26f87376eca39d4f8bb62d50</code> - Artifact size/format: <code>16145 bytes / png</code> </details> --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/699#issuecomment-5596555523). Originally posted by [htayj](https://github.com/htayj) on 2026-09-09T05:57:45Z.
htayj commented 2026-09-09 05:57:49 +00:00 (Migrated from github.com)

Completed by Goocastle


Imported from GitHub comment. Originally posted by htayj on 2026-09-09T05:57:49Z.

Completed by Goocastle --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/699#issuecomment-5596556040). Originally posted by [htayj](https://github.com/htayj) on 2026-09-09T05:57:49Z.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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#699
No description provided.