Implement researched Guix package outcome for #384: [Guix packaging] Gruesome #690

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

Context

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

The host-validated research finding follows:

Canonical upstream is the author's official Games of Grey archive directory, http://www.gamesofgrey.com/games/gruesome/; its latest release is gruesome0.0.3.zip (version 0.0.3, SHA-256 2fd4eed45954a6a3893aa39958871ef9c3a9d23ad87b98dab014c13dfb1388f). No canonical VCS repository, newer release, or same-upstream package/audit entry was found in this channel. The fixed archive contains source.pas, readme.txt, history.txt, license.txt, and a prebuilt Windows .exe; package only source.pas and documentation and never install the opaque .exe. license.txt is the complete GNU GPL Version 3, and source.pas identifies Darren Grey and the same license. There are no fonts, tiles, sounds, maps, submodules, registries, network/updater code, save files, or runtime downloads; focused source inspection finds only the standard Free Pascal crt unit and console I/O. Delivery: create tay/packages/gruesome.scm with gnu-build-system, no configure/check phases, native input fpc, and build source.pas with fpc -O2 -g-; install the real executable and upstream notices under share/doc/gruesome. Add a bash/expect launcher: normal invocation execs the real binary, while --smoke starts it in a PTY, supplies a deterministic name, begins the game, sends one '.' turn, then Q and the final acknowledgement key, verifies clean exit, and prints GRUESOME-SMOKE: gameplay-turn-ok. The wrapper's expect runtime input must be retained. Later acceptance must run upstream's compile-only check (no upstream test suite), guix lint, offline no-grafts build/check, and a fresh HOME/XDG smoke through bounded validation with no writable store paths, asserting that marker and the screenshot at .goocastle/evidence/issue-384.png; inspect the installed GPL notice and prove no archive .exe or store writes are present. Research did not claim a build because the host Guix daemon is intentionally unavailable.

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": 690,
      "packageName": "gruesome",
      "packageModulePath": "tay/packages/gruesome.scm",
      "artifactPath": ".goocastle/evidence/issue-690.png",
      "runtime": {
        "executable": "gruesome",
        "invocation": {
          "file": "gruesome",
          "args": [
            "--smoke"
          ]
        },
        "successMarker": "GRUESOME-SMOKE: gameplay-turn-ok"
      }
    }
  ]
}

Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-05T08:12:16Z.

<!-- goocastle-implementation-ticket:sequential-reviewer:384:1:implementation-ready --> ## Context This delivery ticket was created from research issue #384 ([Guix packaging] Gruesome). The host-validated research finding follows: Canonical upstream is the author's official Games of Grey archive directory, http://www.gamesofgrey.com/games/gruesome/; its latest release is gruesome0.0.3.zip (version 0.0.3, SHA-256 2fd4eed45954a6a3893aa39958871ef9c3a9d23ad87b98dab014c13dfb1388f). No canonical VCS repository, newer release, or same-upstream package/audit entry was found in this channel. The fixed archive contains source.pas, readme.txt, history.txt, license.txt, and a prebuilt Windows .exe; package only source.pas and documentation and never install the opaque .exe. license.txt is the complete GNU GPL Version 3, and source.pas identifies Darren Grey and the same license. There are no fonts, tiles, sounds, maps, submodules, registries, network/updater code, save files, or runtime downloads; focused source inspection finds only the standard Free Pascal crt unit and console I/O. Delivery: create tay/packages/gruesome.scm with gnu-build-system, no configure/check phases, native input fpc, and build source.pas with fpc -O2 -g-; install the real executable and upstream notices under share/doc/gruesome. Add a bash/expect launcher: normal invocation execs the real binary, while --smoke starts it in a PTY, supplies a deterministic name, begins the game, sends one '.' turn, then Q and the final acknowledgement key, verifies clean exit, and prints GRUESOME-SMOKE: gameplay-turn-ok. The wrapper's expect runtime input must be retained. Later acceptance must run upstream's compile-only check (no upstream test suite), guix lint, offline no-grafts build/check, and a fresh HOME/XDG smoke through bounded validation with no writable store paths, asserting that marker and the screenshot at .goocastle/evidence/issue-384.png; inspect the installed GPL notice and prove no archive .exe or store writes are present. Research did not claim a build because the host Guix daemon is intentionally unavailable. ## 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": 690, "packageName": "gruesome", "packageModulePath": "tay/packages/gruesome.scm", "artifactPath": ".goocastle/evidence/issue-690.png", "runtime": { "executable": "gruesome", "invocation": { "file": "gruesome", "args": [ "--smoke" ] }, "successMarker": "GRUESOME-SMOKE: gameplay-turn-ok" } } ] } ``` <!-- goocastle-runtime-evidence-contract-end --> --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/690). Originally posted by [htayj](https://github.com/htayj) on 2026-09-05T08:12:16Z.
htayj commented 2026-09-05 09:10:56 +00:00 (Migrated from github.com)

Goocastle blocked this ticket after the bounded repair budget was exhausted for the required command gate.
The failure receipt and task branch provenance remain preserved; inspect the branch and repair the failing gate before retrying.

Bounded failure evidence:
Failed command: node /opt/goocastle/bin/guix-package-proof.mjs '--package-name' gruesome '--module-path' tay/packages/gruesome.scm '--runtime-json' '{"executable":"gruesome","invocation":{"file":"gruesome","args":["--smoke"]},"successMarker":"GRUESOME-SMOKE: gameplay-turn-ok"}'
Exit status: 1
Final failure lines:
[stderr] Cannot start runtime evidence phase "safe-package-proof": task worktree contains uncommitted changes after agent phase "edge-case-audit"; scheduling bounded implementation/audit repair before retrying


Imported from GitHub comment. Originally posted by htayj on 2026-09-05T09:10:56Z.

<!-- goocastle-repair-blocked:690:safe-package-proof --> Goocastle blocked this ticket after the bounded repair budget was exhausted for the required command gate. The failure receipt and task branch provenance remain preserved; inspect the branch and repair the failing gate before retrying. Bounded failure evidence: Failed command: node /opt/goocastle/bin/guix-package-proof.mjs '--package-name' gruesome '--module-path' tay/packages/gruesome.scm '--runtime-json' '{"executable":"gruesome","invocation":{"file":"gruesome","args":["--smoke"]},"successMarker":"GRUESOME-SMOKE: gameplay-turn-ok"}' Exit status: 1 Final failure lines: [stderr] Cannot start runtime evidence phase "safe-package-proof": task worktree contains uncommitted changes after agent phase "edge-case-audit"; scheduling bounded implementation/audit repair before retrying --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/690#issuecomment-5550798830). Originally posted by [htayj](https://github.com/htayj) on 2026-09-05T09:10:56Z.
htayj commented 2026-09-06 06:56:32 +00:00 (Migrated from github.com)

Goocastle verified runtime evidence.

Runtime screenshot

Runtime receipt
  • Package: gruesome
  • Safe package proof phase: safe-package-proof
  • Safe package proof argv: ["node","/opt/goocastle/bin/guix-package-proof.mjs","--package-name","gruesome","--module-path","tay/packages/gruesome.scm","--runtime-json","{&quot;executable&quot;:&quot;gruesome&quot;,&quot;invocation&quot;:{&quot;file&quot;:&quot;gruesome&quot;,&quot;args&quot;:[&quot;--smoke&quot;]},&quot;successMarker&quot;:&quot;GRUESOME-SMOKE: gameplay-turn-ok&quot;}"]
  • Screenshot phase: runtime-screenshot
  • Screenshot argv: ["sh",".goocastle/capture-guix-package-screenshot.sh"]
  • Runtime executable (Guix store/profile): /gnu/store/i5gxy52plaq7a8qhs1i72k1fksyksk40-gruesome-0.0.3/bin/gruesome
  • Runtime invocation: ["/gnu/store/i5gxy52plaq7a8qhs1i72k1fksyksk40-gruesome-0.0.3/bin/gruesome","--smoke"]
  • Expected runtime invocation: ["gruesome","--smoke"]
  • Expected runtime marker: GRUESOME-SMOKE: gameplay-turn-ok
  • Per-issue runtime contract: .goocastle/runtime-evidence-contracts.json (issue #690, SHA-256 eeb633ca59b2b9d21aec67f620dc0d3081a613ef3960e7f38c25f49d8f8d8b5a)
  • Artifact path: .goocastle/evidence/issue-690.png
  • Artifact SHA-256: 4c7668aa5be750eb36a0b3bd4497cb827ba64e6978e9a13a647be4716cd21d59
  • Artifact commit: 211f4888b7be9a93690462abac31f713c8e219a5
  • Artifact size/format: 16178 bytes / png

Imported from GitHub comment. Originally posted by htayj on 2026-09-06T06:56:32Z.

<!-- goocastle-runtime-evidence:sequential-reviewer:690:1:4c7668aa5be750eb36a0b3bd4497cb827ba64e6978e9a13a647be4716cd21d59 --> Goocastle verified runtime evidence. ![Runtime screenshot](https://github.com/htayj/guix-channel/blob/211f4888b7be9a93690462abac31f713c8e219a5/.goocastle/evidence/issue-690.png?raw=1) <details><summary>Runtime receipt</summary> - Package: <code>gruesome</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;gruesome&quot;,&quot;--module-path&quot;,&quot;tay/packages/gruesome.scm&quot;,&quot;--runtime-json&quot;,&quot;{\&quot;executable\&quot;:\&quot;gruesome\&quot;,\&quot;invocation\&quot;:{\&quot;file\&quot;:\&quot;gruesome\&quot;,\&quot;args\&quot;:[\&quot;--smoke\&quot;]},\&quot;successMarker\&quot;:\&quot;GRUESOME-SMOKE: gameplay-turn-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/i5gxy52plaq7a8qhs1i72k1fksyksk40-gruesome-0.0.3/bin/gruesome</code> - Runtime invocation: <code>[&quot;/gnu/store/i5gxy52plaq7a8qhs1i72k1fksyksk40-gruesome-0.0.3/bin/gruesome&quot;,&quot;--smoke&quot;]</code> - Expected runtime invocation: <code>[&quot;gruesome&quot;,&quot;--smoke&quot;]</code> - Expected runtime marker: <code>GRUESOME-SMOKE: gameplay-turn-ok</code> - Per-issue runtime contract: <code>.goocastle/runtime-evidence-contracts.json (issue #690, SHA-256 eeb633ca59b2b9d21aec67f620dc0d3081a613ef3960e7f38c25f49d8f8d8b5a)</code> - Artifact path: <code>.goocastle/evidence/issue-690.png</code> - Artifact SHA-256: <code>4c7668aa5be750eb36a0b3bd4497cb827ba64e6978e9a13a647be4716cd21d59</code> - Artifact commit: <code>211f4888b7be9a93690462abac31f713c8e219a5</code> - Artifact size/format: <code>16178 bytes / png</code> </details> --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/690#issuecomment-5557589078). Originally posted by [htayj](https://github.com/htayj) on 2026-09-06T06:56:32Z.
htayj commented 2026-09-06 06:56:36 +00:00 (Migrated from github.com)

Completed by Goocastle


Imported from GitHub comment. Originally posted by htayj on 2026-09-06T06:56:36Z.

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