Implement researched Guix package outcome for #397: [Guix packaging] Hunger Games #695

Closed
opened 2026-09-08 18:31:09 +00:00 by htayj · 6 comments
htayj commented 2026-09-08 18:31:09 +00:00 (Migrated from github.com)

Context

This delivery ticket was created from research issue #397 ([Guix packaging] Hunger Games).

The host-validated research finding follows:

Canonical upstream is https://github.com/CruiserOne/Daedalus at fixed tag v3.5, commit 32af46ddf22e53c9bfd7bd7eacca1e249c60a5e8 (Guix recursive source hash already used by the local Daedalus-derived packages: 0fdzx2zzqbd3p99yljksmbh0s3mbzzmq2dq42a9yz5rfkn9gjy2r). The fixed checkout's README identifies it as the official Daedalus 3.5 release copied from dae35zip.zip; its Makefile documents an offline Unix build with g++ and -lm, and no submodules or language registries are present. util.h must select the Unix command-line build by disabling WIN/PC (and the existing LP64 dword/allocator fixes used by the sibling packages should be retained). license.htm is the complete GPL version 2 text; the upstream documentation's LICENSE section grants Daedalus and its routines under GPLv2-or-later, while the Makefile requires preserving credits/notices. The shipped Hunger origin is the same fixed repository: hunger.ds and source/hunger.bmp are present and covered by that distribution license evidence. Do not fetch or install the separate DAE35HGS.EXE or its hunger/*.wav bundle: the authoritative Hunger Games page says those optional bitmap/sound extras are only in that Windows download, while the script embeds an arena and remains playable without those unredistributed sounds. No equivalent hunger-games package exists in the local channel. tay/packages/dragonslayer.scm and tay/packages/grippy-socks.scm are sibling Daedalus-script variants at the same revision, not duplicates; Hunger Games is separately justified by its distinct script and gameplay. Add tay/packages/hunger-games.scm as a gnu-build-system package named hunger-games, using git-fetch at the revision above, native gcc-toolchain, and bash-minimal/coreutils-minimal for a deterministic launcher; install the rebuilt engine privately, hunger.ds plus hunger.bmp under share/hunger-games, and the complete upstream license/README/documentation under share/doc/hunger-games. The wrapper must keep normal mutable state below XDG_STATE_HOME/hunger-games (or HOME/.local/state/hunger-games), perform no downloads/store writes, and offer exactly hunger-games --smoke; that mode must invoke the rebuilt engine on the installed script from its data directory, execute one normal movement after script load, and emit HUNGER_GAMES_SMOKE_OK on stdout. Acceptance: run the package lint, offline no-grafts build and --check in the authorized Guix phase, run any upstream test target if added (the upstream Makefile has none), then run the fresh-HOME/XDG smoke proof using executable hunger-games, args [--smoke], screenshot .goocastle/evidence/issue-397.png, assert the single-line marker, and verify the store is unchanged. Research did not claim a build proof because this phase has no Guix daemon.

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": 695,
      "packageName": "hunger-games",
      "packageModulePath": "tay/packages/hunger-games.scm",
      "artifactPath": ".goocastle/evidence/issue-695.png",
      "runtime": {
        "executable": "hunger-games",
        "invocation": {
          "file": "hunger-games",
          "args": [
            "--smoke"
          ]
        },
        "successMarker": "HUNGER_GAMES_SMOKE_OK",n        "minimumScreenshotBytes": 16384
      }
    }
  ]
}

Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-08T18:31:09Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:397:1:implementation-ready --> ## Context This delivery ticket was created from research issue #397 ([Guix packaging] Hunger Games). The host-validated research finding follows: Canonical upstream is https://github.com/CruiserOne/Daedalus at fixed tag v3.5, commit 32af46ddf22e53c9bfd7bd7eacca1e249c60a5e8 (Guix recursive source hash already used by the local Daedalus-derived packages: 0fdzx2zzqbd3p99yljksmbh0s3mbzzmq2dq42a9yz5rfkn9gjy2r). The fixed checkout's README identifies it as the official Daedalus 3.5 release copied from dae35zip.zip; its Makefile documents an offline Unix build with g++ and -lm, and no submodules or language registries are present. util.h must select the Unix command-line build by disabling WIN/PC (and the existing LP64 dword/allocator fixes used by the sibling packages should be retained). license.htm is the complete GPL version 2 text; the upstream documentation's LICENSE section grants Daedalus and its routines under GPLv2-or-later, while the Makefile requires preserving credits/notices. The shipped Hunger origin is the same fixed repository: hunger.ds and source/hunger.bmp are present and covered by that distribution license evidence. Do not fetch or install the separate DAE35HGS.EXE or its hunger/*.wav bundle: the authoritative Hunger Games page says those optional bitmap/sound extras are only in that Windows download, while the script embeds an arena and remains playable without those unredistributed sounds. No equivalent hunger-games package exists in the local channel. tay/packages/dragonslayer.scm and tay/packages/grippy-socks.scm are sibling Daedalus-script variants at the same revision, not duplicates; Hunger Games is separately justified by its distinct script and gameplay. Add tay/packages/hunger-games.scm as a gnu-build-system package named hunger-games, using git-fetch at the revision above, native gcc-toolchain, and bash-minimal/coreutils-minimal for a deterministic launcher; install the rebuilt engine privately, hunger.ds plus hunger.bmp under share/hunger-games, and the complete upstream license/README/documentation under share/doc/hunger-games. The wrapper must keep normal mutable state below XDG_STATE_HOME/hunger-games (or HOME/.local/state/hunger-games), perform no downloads/store writes, and offer exactly `hunger-games --smoke`; that mode must invoke the rebuilt engine on the installed script from its data directory, execute one normal movement after script load, and emit HUNGER_GAMES_SMOKE_OK on stdout. Acceptance: run the package lint, offline no-grafts build and --check in the authorized Guix phase, run any upstream test target if added (the upstream Makefile has none), then run the fresh-HOME/XDG smoke proof using executable hunger-games, args [--smoke], screenshot .goocastle/evidence/issue-397.png, assert the single-line marker, and verify the store is unchanged. Research did not claim a build proof because this phase has no Guix daemon. ## 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": 695, "packageName": "hunger-games", "packageModulePath": "tay/packages/hunger-games.scm", "artifactPath": ".goocastle/evidence/issue-695.png", "runtime": { "executable": "hunger-games", "invocation": { "file": "hunger-games", "args": [ "--smoke" ] }, "successMarker": "HUNGER_GAMES_SMOKE_OK",n "minimumScreenshotBytes": 16384 } } ] } ``` <!-- goocastle-runtime-evidence-contract-end --> --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/695). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T18:31:09Z.
htayj commented 2026-09-08 22:15:03 +00:00 (Migrated from github.com)

Goocastle verified runtime evidence.

Runtime screenshot

Runtime receipt
  • Package: hunger-games
  • Safe package proof phase: safe-package-proof
  • Safe package proof argv: ["node","/opt/goocastle/bin/guix-package-proof.mjs","--package-name","hunger-games","--module-path","tay/packages/hunger-games.scm","--runtime-json","{&quot;executable&quot;:&quot;hunger-games&quot;,&quot;invocation&quot;:{&quot;file&quot;:&quot;hunger-games&quot;,&quot;args&quot;:[&quot;--smoke&quot;]},&quot;successMarker&quot;:&quot;HUNGER_GAMES_SMOKE_OK&quot;}"]
  • Screenshot phase: runtime-screenshot
  • Screenshot argv: ["sh",".goocastle/capture-guix-package-screenshot.sh"]
  • Runtime executable (Guix store/profile): /gnu/store/y9g681933wm1a2bmyfh7rl1v8bc8hsng-hunger-games-3.5/bin/hunger-games
  • Runtime invocation: ["/gnu/store/y9g681933wm1a2bmyfh7rl1v8bc8hsng-hunger-games-3.5/bin/hunger-games","--smoke"]
  • Expected runtime invocation: ["hunger-games","--smoke"]
  • Expected runtime marker: HUNGER_GAMES_SMOKE_OK
  • Per-issue runtime contract: .goocastle/runtime-evidence-contracts.json (issue #695, SHA-256 0f1f9cda9ef0b999da5ce2e09157b62940ea04de402b74b7db62a95b102de9fd)
  • Artifact path: .goocastle/evidence/issue-695.png
  • Artifact SHA-256: 17621d702e2a92193ecf72f3efb895319f10ae9cb23cd0c20ad2772f30d71b61
  • Artifact commit: 9f6874a39ee1c324f653a2e754bb1a8e4665b635
  • Artifact size/format: 6200 bytes / png

Imported from GitHub comment. Originally posted by htayj on 2026-09-08T22:15:03Z.

<!-- goocastle-runtime-evidence:sequential-reviewer:695:1:17621d702e2a92193ecf72f3efb895319f10ae9cb23cd0c20ad2772f30d71b61 --> Goocastle verified runtime evidence. ![Runtime screenshot](https://github.com/htayj/guix-channel/blob/9f6874a39ee1c324f653a2e754bb1a8e4665b635/.goocastle/evidence/issue-695.png?raw=1) <details><summary>Runtime receipt</summary> - Package: <code>hunger-games</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;hunger-games&quot;,&quot;--module-path&quot;,&quot;tay/packages/hunger-games.scm&quot;,&quot;--runtime-json&quot;,&quot;{\&quot;executable\&quot;:\&quot;hunger-games\&quot;,\&quot;invocation\&quot;:{\&quot;file\&quot;:\&quot;hunger-games\&quot;,\&quot;args\&quot;:[\&quot;--smoke\&quot;]},\&quot;successMarker\&quot;:\&quot;HUNGER_GAMES_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/y9g681933wm1a2bmyfh7rl1v8bc8hsng-hunger-games-3.5/bin/hunger-games</code> - Runtime invocation: <code>[&quot;/gnu/store/y9g681933wm1a2bmyfh7rl1v8bc8hsng-hunger-games-3.5/bin/hunger-games&quot;,&quot;--smoke&quot;]</code> - Expected runtime invocation: <code>[&quot;hunger-games&quot;,&quot;--smoke&quot;]</code> - Expected runtime marker: <code>HUNGER_GAMES_SMOKE_OK</code> - Per-issue runtime contract: <code>.goocastle/runtime-evidence-contracts.json (issue #695, SHA-256 0f1f9cda9ef0b999da5ce2e09157b62940ea04de402b74b7db62a95b102de9fd)</code> - Artifact path: <code>.goocastle/evidence/issue-695.png</code> - Artifact SHA-256: <code>17621d702e2a92193ecf72f3efb895319f10ae9cb23cd0c20ad2772f30d71b61</code> - Artifact commit: <code>9f6874a39ee1c324f653a2e754bb1a8e4665b635</code> - Artifact size/format: <code>6200 bytes / png</code> </details> --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/695#issuecomment-5592595420). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T22:15:03Z.
htayj commented 2026-09-08 22:15:07 +00:00 (Migrated from github.com)

Completed by Goocastle


Imported from GitHub comment. Originally posted by htayj on 2026-09-08T22:15:07Z.

Completed by Goocastle --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/695#issuecomment-5592596002). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T22:15:07Z.
htayj commented 2026-09-08 22:39:44 +00:00 (Migrated from github.com)

Reopened: the package builds and smoke proof pass, but the committed runtime image only shows HUNGER_GAMES_SMOKE_OK. A valid closure needs a screenshot of the installed game visibly running; Goocastle is being fixed to enforce that evidence boundary.


Imported from GitHub comment. Originally posted by htayj on 2026-09-08T22:39:44Z.

Reopened: the package builds and smoke proof pass, but the committed runtime image only shows HUNGER_GAMES_SMOKE_OK. A valid closure needs a screenshot of the installed game visibly running; Goocastle is being fixed to enforce that evidence boundary. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/695#issuecomment-5592852151). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T22:39:44Z.
htayj commented 2026-09-08 22:42:15 +00:00 (Migrated from github.com)

Updated the reviewed runtime contract to require a substantive screenshot payload. The reopened delivery must now recapture visible Hunger Games gameplay rather than a marker-only terminal image.


Imported from GitHub comment. Originally posted by htayj on 2026-09-08T22:42:15Z.

Updated the reviewed runtime contract to require a substantive screenshot payload. The reopened delivery must now recapture visible Hunger Games gameplay rather than a marker-only terminal image. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/695#issuecomment-5592879949). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T22:42:15Z.
htayj commented 2026-09-08 22:56:38 +00:00 (Migrated from github.com)

Goocastle verified runtime evidence.

Runtime screenshot

Runtime receipt
  • Package: hunger-games
  • Safe package proof phase: safe-package-proof
  • Safe package proof argv: ["node","/opt/goocastle/bin/guix-package-proof.mjs","--package-name","hunger-games","--module-path","tay/packages/hunger-games.scm","--runtime-json","{&quot;executable&quot;:&quot;hunger-games&quot;,&quot;invocation&quot;:{&quot;file&quot;:&quot;hunger-games&quot;,&quot;args&quot;:[&quot;--smoke&quot;]},&quot;successMarker&quot;:&quot;HUNGER_GAMES_SMOKE_OK&quot;,&quot;minimumScreenshotBytes&quot;:16384}"]
  • Screenshot phase: runtime-screenshot
  • Screenshot argv: ["sh",".goocastle/capture-guix-package-screenshot.sh"]
  • Runtime executable (Guix store/profile): /gnu/store/sw7gc72370s1fyy586iydk9xnm16ds5w-hunger-games-3.5/bin/hunger-games
  • Runtime invocation: ["/gnu/store/sw7gc72370s1fyy586iydk9xnm16ds5w-hunger-games-3.5/bin/hunger-games","--smoke"]
  • Expected runtime invocation: ["hunger-games","--smoke"]
  • Expected runtime marker: HUNGER_GAMES_SMOKE_OK
  • Per-issue runtime contract: .goocastle/runtime-evidence-contracts.json (issue #695, SHA-256 ca65da9b37bb7d4bf6cd78b9060e344845ed2209e232248f24b0afec5ff7620b)
  • Artifact path: .goocastle/evidence/issue-695.png
  • Artifact SHA-256: e79eacf1fc20a8126a3ece262a762395d2f69c770e93dbbc9ec2a175d0270e2b
  • Artifact commit: ae7b4b7dfac4d7f85901d11b1fa80f26b1b40fc3
  • Artifact size/format: 53567 bytes / png

Imported from GitHub comment. Originally posted by htayj on 2026-09-08T22:56:38Z.

<!-- goocastle-runtime-evidence:sequential-reviewer:695:3:e79eacf1fc20a8126a3ece262a762395d2f69c770e93dbbc9ec2a175d0270e2b --> Goocastle verified runtime evidence. ![Runtime screenshot](https://github.com/htayj/guix-channel/blob/ae7b4b7dfac4d7f85901d11b1fa80f26b1b40fc3/.goocastle/evidence/issue-695.png?raw=1) <details><summary>Runtime receipt</summary> - Package: <code>hunger-games</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;hunger-games&quot;,&quot;--module-path&quot;,&quot;tay/packages/hunger-games.scm&quot;,&quot;--runtime-json&quot;,&quot;{\&quot;executable\&quot;:\&quot;hunger-games\&quot;,\&quot;invocation\&quot;:{\&quot;file\&quot;:\&quot;hunger-games\&quot;,\&quot;args\&quot;:[\&quot;--smoke\&quot;]},\&quot;successMarker\&quot;:\&quot;HUNGER_GAMES_SMOKE_OK\&quot;,\&quot;minimumScreenshotBytes\&quot;:16384}&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/sw7gc72370s1fyy586iydk9xnm16ds5w-hunger-games-3.5/bin/hunger-games</code> - Runtime invocation: <code>[&quot;/gnu/store/sw7gc72370s1fyy586iydk9xnm16ds5w-hunger-games-3.5/bin/hunger-games&quot;,&quot;--smoke&quot;]</code> - Expected runtime invocation: <code>[&quot;hunger-games&quot;,&quot;--smoke&quot;]</code> - Expected runtime marker: <code>HUNGER_GAMES_SMOKE_OK</code> - Per-issue runtime contract: <code>.goocastle/runtime-evidence-contracts.json (issue #695, SHA-256 ca65da9b37bb7d4bf6cd78b9060e344845ed2209e232248f24b0afec5ff7620b)</code> - Artifact path: <code>.goocastle/evidence/issue-695.png</code> - Artifact SHA-256: <code>e79eacf1fc20a8126a3ece262a762395d2f69c770e93dbbc9ec2a175d0270e2b</code> - Artifact commit: <code>ae7b4b7dfac4d7f85901d11b1fa80f26b1b40fc3</code> - Artifact size/format: <code>53567 bytes / png</code> </details> --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/695#issuecomment-5593011934). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T22:56:38Z.
htayj commented 2026-09-08 22:56:42 +00:00 (Migrated from github.com)

Completed by Goocastle


Imported from GitHub comment. Originally posted by htayj on 2026-09-08T22:56:42Z.

Completed by Goocastle --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/695#issuecomment-5593012464). Originally posted by [htayj](https://github.com/htayj) on 2026-09-08T22:56:42Z.
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#695
No description provided.