Implement researched Guix package outcome for #332: [Guix packaging] DoomRL #680

Closed
opened 2026-09-03 01:55:08 +00:00 by htayj · 1 comment
htayj commented 2026-09-03 01:55:08 +00:00 (Migrated from github.com)

Context

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

The host-validated research finding follows:

Package the rebranded DoomRL as drl from the canonical repository https://github.com/chaosforgeorg/drl at immutable release tag 0_10_11 (peeled commit 90b797888be2550454b2b4b7d0df6aa9ef5b71ac; bin/version.txt and the core Lua metadata identify 0.10.11). The repository has no Git submodules. Its separately fetched build dependency is https://github.com/ChaosForge/fpcvalkyrie at immutable release tag 0_10_11 (peeled commit f89735a741a968997656c2d48a003ec569db7f22); its revision-local LICENSE is MIT, while DRL's revision-local LICENSE is GPL-2.0. The source build metadata requires Free Pascal (upstream documents FPC 3.2.2), Lua 5.1 specifically, the Valkyrie source tree, make, and Linux ncurses; the Guix module should use fpc, lua-5.1, ncurses/tinfo, and normal build/wrapper inputs rather than any bundled binary. The source is therefore source-buildable in principle, but no package proof is claimed: the trusted phase boundary forbade guix shell, the Guix daemon socket is absent, and compiler/runtime probes were not treated as upstream failures. The current Guix source audit and the local channel contain no drl, doomrl, or ChaosForge equivalent, so this is an ordinary distinct delivery rather than a duplicate. Use the text console core module only (bin/data/drl, module drl), and omit drlhq/drllq audio modules and all ext/* ELF/DLL files. Upstream documents -console/-nosound; the tracked audio directories contain only readmes, and credits identify music/sounds as permission-based external material without a redistribution license, so no audio or proprietary FMOD/Steam/SDL binary may enter the closure. The tracked graphics license is CC BY-SA 4.0; omit graphical PNG/font assets from the console output unless each selected asset is separately covered and its notice is installed. Retain the GPL notice for the installed DRL code, Lua/maps/help data, the fpcvalkyrie MIT notice, and notices for every Guix runtime/build dependency actually shipped. Provide a launcher named drl around the compiled real executable. Its --guix-smoke mode must create fresh HOME/XDG and writable cwd/write/score paths outside the store, pass fixed store -datapath and -config plus -console -nosound -module drl, run through a bounded PTY, and feed a fixed sequence that starts a new game, accepts a deterministic default, makes a movement, saves, quits, relaunches/restores, and checks the save artifact and visible game-state output; it must assert no store writes and print the single-line marker DRL_GOOCASTLE_RUNTIME_OK. Do not invoke the optional Steam Workshop/publish path, and no updater, telemetry, or required runtime download was found. Acceptance is: preflight package load/lint has no package-specific findings; daemon-backed guix build -L . --no-grafts drl and --check succeed offline; upstream build/tests run if present; the isolated drl --guix-smoke contract produces .goocastle/evidence/issue-332.png, proves gameplay plus save/load and fresh mutable paths, and installed notices cover the selected closure/assets.

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": 680,
      "packageName": "drl",
      "artifactPath": ".goocastle/evidence/issue-680.png",
      "runtime": {
        "executable": "drl",
        "invocation": {
          "file": "drl",
          "args": [
            "--guix-smoke"
          ]
        },
        "successMarker": "DRL_GOOCASTLE_RUNTIME_OK"
      }
    }
  ]
}

Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-03T01:55:08Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:332:1:implementation-ready --> ## Context This delivery ticket was created from research issue #332 ([Guix packaging] DoomRL). The host-validated research finding follows: Package the rebranded DoomRL as `drl` from the canonical repository https://github.com/chaosforgeorg/drl at immutable release tag `0_10_11` (peeled commit `90b797888be2550454b2b4b7d0df6aa9ef5b71ac`; `bin/version.txt` and the core Lua metadata identify 0.10.11). The repository has no Git submodules. Its separately fetched build dependency is https://github.com/ChaosForge/fpcvalkyrie at immutable release tag `0_10_11` (peeled commit `f89735a741a968997656c2d48a003ec569db7f22`); its revision-local LICENSE is MIT, while DRL's revision-local LICENSE is GPL-2.0. The source build metadata requires Free Pascal (upstream documents FPC 3.2.2), Lua 5.1 specifically, the Valkyrie source tree, make, and Linux ncurses; the Guix module should use `fpc`, `lua-5.1`, `ncurses`/tinfo, and normal build/wrapper inputs rather than any bundled binary. The source is therefore source-buildable in principle, but no package proof is claimed: the trusted phase boundary forbade `guix shell`, the Guix daemon socket is absent, and compiler/runtime probes were not treated as upstream failures. The current Guix source audit and the local channel contain no `drl`, `doomrl`, or ChaosForge equivalent, so this is an ordinary distinct delivery rather than a duplicate. Use the text console core module only (`bin/data/drl`, module `drl`), and omit `drlhq`/`drllq` audio modules and all `ext/*` ELF/DLL files. Upstream documents `-console`/`-nosound`; the tracked audio directories contain only readmes, and credits identify music/sounds as permission-based external material without a redistribution license, so no audio or proprietary FMOD/Steam/SDL binary may enter the closure. The tracked graphics license is CC BY-SA 4.0; omit graphical PNG/font assets from the console output unless each selected asset is separately covered and its notice is installed. Retain the GPL notice for the installed DRL code, Lua/maps/help data, the fpcvalkyrie MIT notice, and notices for every Guix runtime/build dependency actually shipped. Provide a launcher named `drl` around the compiled real executable. Its `--guix-smoke` mode must create fresh HOME/XDG and writable cwd/write/score paths outside the store, pass fixed store `-datapath` and `-config` plus `-console -nosound -module drl`, run through a bounded PTY, and feed a fixed sequence that starts a new game, accepts a deterministic default, makes a movement, saves, quits, relaunches/restores, and checks the save artifact and visible game-state output; it must assert no store writes and print the single-line marker `DRL_GOOCASTLE_RUNTIME_OK`. Do not invoke the optional Steam Workshop/publish path, and no updater, telemetry, or required runtime download was found. Acceptance is: preflight package load/lint has no package-specific findings; daemon-backed `guix build -L . --no-grafts drl` and `--check` succeed offline; upstream build/tests run if present; the isolated `drl --guix-smoke` contract produces `.goocastle/evidence/issue-332.png`, proves gameplay plus save/load and fresh mutable paths, and installed notices cover the selected closure/assets. ## 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": 680, "packageName": "drl", "artifactPath": ".goocastle/evidence/issue-680.png", "runtime": { "executable": "drl", "invocation": { "file": "drl", "args": [ "--guix-smoke" ] }, "successMarker": "DRL_GOOCASTLE_RUNTIME_OK" } } ] } ``` <!-- goocastle-runtime-evidence-contract-end --> --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/680). Originally posted by [htayj](https://github.com/htayj) on 2026-09-03T01:55:08Z.
htayj commented 2026-09-03 07:06:06 +00:00 (Migrated from github.com)

Delivered in f7d1781. Verified: guix build --check -L . --no-grafts drl, offline Guix lint, isolated runtime proof emits DRL_GOOCASTLE_RUNTIME_OK, and reviewed packaged terminal screenshot is committed at .goocastle/evidence/issue-680.png.


Imported from GitHub comment. Originally posted by htayj on 2026-09-03T07:06:06Z.

Delivered in f7d1781. Verified: `guix build --check -L . --no-grafts drl`, offline Guix lint, isolated runtime proof emits `DRL_GOOCASTLE_RUNTIME_OK`, and reviewed packaged terminal screenshot is committed at `.goocastle/evidence/issue-680.png`. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/680#issuecomment-5521925023). Originally posted by [htayj](https://github.com/htayj) on 2026-09-03T07:06:06Z.
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#680
No description provided.