Implement researched Guix package outcome for #457: [Guix packaging] NLarn #710
Labels
No labels
accessibility
bug
category:ai-tool
category:browser
category:command-line-tool
category:compiler-toolchain
category:desktop-application
category:developer-tool
category:editor-extension
category:emulator
category:font
category:game
category:input-accessibility
category:library-framework
category:mud-client
category:multimedia
category:networking-client
category:programming-language
category:roguelike
category:storage-media-tool
category:system-tool
category:terminal-application
complexity:high
complexity:low
complexity:medium
difficulty:blocked
difficulty:easy
difficulty:hard
difficulty:moderate
documentation
duplicate
enhancement
good first issue
gooflow:guix-package-high
gooflow:guix-package-moderate
gooflow:guix-package-quality-gates
gooflow:guix-research-disposition
gooflow:guix-runtime-evidence-refresh
help wanted
invalid
kind:disposition
kind:packaging
needs:license-investigation
priority:quick
question
ready-for-agent
state:available-elsewhere
state:blocked
state:deferred
state:out-of-scope
state:ready
state:research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#710
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
This delivery ticket was created from research issue #457 ([Guix packaging] NLarn).
The host-validated research finding follows:
Canonical maintained source: https://github.com/nlarn/nlarn, release tag NLarn-0.8.0 at immutable commit 1873599a5682e4645e2801f7de6bd11ce54c2dfd; the GitHub tag archive fetched for this brief has SHA-256 8f671fcbcec9d662648707fce4318ae3b2c7c68535c85848b55f8af346dfe735. NLarn is an independently playable C/ncurses rewrite of Larn, not the parent game or a local channel duplicate; no equivalent
nlarnpackage or index entry exists in the inspected channel. Upstream LICENSE, source headers, Makefile, and nlarn.spec identify the project and shipped game data as GPLv3. The Unix build path does not use the declared PDCurses submodule or bundled Fira Mono font; do not enable SDLPDCURSES. The installed closure should be audited as project GPLv3 code/data plus the explicitly marked bundled cJSON MIT code and enumFactory.h CC-BY-SA Stack Overflow adaptation, with LICENSE and matching third-party notices installed. Curses runtime data required by the Makefile/spec are lib/fortune*, lib/maze, lib/nlarn.hlp*, lib/nlarn.msg*, and generated locale catalogs; no sounds or tiles are consumed by this path. Use gnu-build-system with release configuration and inputs gcc-toolchain/make, pkg-config, glib, ncurses (wide curses and panel), zlib, and gettext/msgfmt; link math as upstream does. Remove or justify upstream -Werror only if the authorized Guix build exposes a warning. Package astay/packages/nlarn.scm, patch the named/usr/share/nlarndefault_lib_dir in src/nlarn.c to$out/share/nlarn(or keep the real binary beside a sibling lib directory), and keep all mutable state outside the store; do not enable upstream SETGID system-scoreboard behavior. Upstream runtime uses HOME/.nlarn for config/save data and a highscores file; focused source inspection found no updater, telemetry, runtime download, or network code. The deterministic runtime contract isnlarn --highscores, which exercises the normal Hall of Fame path and exits with stdout markerNLarn Hall of Fame; a fresh HOME makes the missing highscores read-only. Acceptance plan: run lint/build/check offline with no submodules and no opaque binaries; install all notices; in a fresh HOME/XDG directory, use bounded-validation PTY input to select New Game, enter a fixed character name/gender, make a movement, press Ctrl-S to save and exit, relaunch to continue the save, then quit, asserting the save/config files are only in the isolated user directory and there are no store writes; separately run the declared deterministic contract and capture.goocastle/evidence/issue-457.png. The research sandbox had no Guix daemon per phase boundary, so no package build, lint, runtime, or reproducibility proof is claimed here; those are authorized later-phase acceptance gates.Acceptance criteria
Runtime evidence contract
Implementation workflow:
guix-package-quality-gatesReviewed contract file:
.goocastle/runtime-evidence-contracts.jsonRequired proof phase:
safe-package-proof; screenshot phase:runtime-screenshotEvidence adapter:
github-issue-commentCopy this reviewed contract into the named file before running the package proof workflow.
Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-11T15:25:19Z.
Goocastle verified runtime evidence.
Runtime receipt
nlarnsafe-package-proof["node","/opt/goocastle/bin/guix-package-proof.mjs","--package-name","nlarn","--module-path","tay/packages/nlarn.scm","--runtime-json","{"executable":"nlarn","invocation":{"file":"nlarn","args":["--highscores"]},"successMarker":"NLarn Hall of Fame"}"]runtime-screenshot["sh",".goocastle/capture-guix-package-screenshot.sh"]/gnu/store/2bb19ym7w1d1myiqh41m4582asd7r6ax-nlarn-0.8.0/bin/nlarn["/gnu/store/2bb19ym7w1d1myiqh41m4582asd7r6ax-nlarn-0.8.0/bin/nlarn","--highscores"]["nlarn","--highscores"]NLarn Hall of Fame.goocastle/runtime-evidence-contracts.json (issue #710, SHA-256 bad58bc73d30b0718abfe1df2cda36d55aa9baf7f646992b867fe97b0bf93889).goocastle/evidence/issue-710.png385313b018691d8f63d543bc4206789cbc9bc5ee69451057251eea9e5c1d8148a8341e2caa3393e0823c7656a580c1cffd4ae5f260907 bytes / pngImported from GitHub comment. Originally posted by htayj on 2026-09-11T16:39:49Z.
Completed by Goocastle
Imported from GitHub comment. Originally posted by htayj on 2026-09-11T16:39:53Z.