Correct Diabaig runtime evidence to show a dungeon gameplay frame #675

Closed
opened 2026-09-02 20:55:43 +00:00 by htayj · 3 comments
htayj commented 2026-09-02 20:55:43 +00:00 (Migrated from github.com)

Context

Goocastle delivered diabaig in #674, including a safe PTY proof and screenshot. The final committed evidence artifact shows the interactive class-selection screen rather than the meaningful dungeon gameplay frame required by the research disposition for #329.

The packaged tay/packages/diabaig-smoke.py drives a real new-game, movement, inventory, save/load, and quit flow. Its current raw_frame capture begins from a cumulative startup buffer, so terminal rendering can retain the class-selection screen even after the smoke run reaches a dungeon.

Acceptance criteria

  • Research the smallest provenance-preserving correction that makes .goocastle/evidence show an actual dungeon gameplay frame with the player glyph and live game state.
  • Preserve the existing isolated real-package PTY, save/load, cleanup, store-integrity, and DIABAIG_RUNTIME_OK assertions.
  • If viable, create a Goocastle delivery ticket with a reviewed runtime-evidence contract and an explicit visual acceptance criterion; otherwise record an evidence-backed terminal disposition.

Evidence

  • Current closed delivery: #674.
  • The existing package proof passed, but the final screenshot should not be treated as satisfying the stronger dungeon-frame criterion.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-09-02T20:55:43Z.

## Context Goocastle delivered `diabaig` in #674, including a safe PTY proof and screenshot. The final committed evidence artifact shows the interactive class-selection screen rather than the meaningful dungeon gameplay frame required by the research disposition for #329. The packaged `tay/packages/diabaig-smoke.py` drives a real new-game, movement, inventory, save/load, and quit flow. Its current `raw_frame` capture begins from a cumulative startup buffer, so terminal rendering can retain the class-selection screen even after the smoke run reaches a dungeon. ## Acceptance criteria - Research the smallest provenance-preserving correction that makes `.goocastle/evidence` show an actual dungeon gameplay frame with the player glyph and live game state. - Preserve the existing isolated real-package PTY, save/load, cleanup, store-integrity, and `DIABAIG_RUNTIME_OK` assertions. - If viable, create a Goocastle delivery ticket with a reviewed runtime-evidence contract and an explicit visual acceptance criterion; otherwise record an evidence-backed terminal disposition. ## Evidence - Current closed delivery: #674. - The existing package proof passed, but the final screenshot should not be treated as satisfying the stronger dungeon-frame criterion. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/675). Originally posted by [htayj](https://github.com/htayj) on 2026-09-02T20:55:43Z.
htayj commented 2026-09-02 21:09:06 +00:00 (Migrated from github.com)

Goocastle recorded disposition: blocked.

Blocked by the duplicate-delivery rule: the local channel already contains the intended canonical project as package module tay/packages/diabaig.scm (package diabaig), introduced by commit bf8b2c670e, and the closed delivery is issue #674 as recorded by the runtime contract in .goocastle/runtime-evidence-contracts.json. The delivered artifact .goocastle/evidence/issue-674.png was visually inspected and shows the class-selection screen, not dungeon gameplay; the package-owned PTY driver tay/packages/diabaig-smoke.py captures a cumulative startup buffer, while tests/diabaig-smoke.sh asserts floor: and @ in the raw capture. The smallest provenance-preserving correction would retain the real isolated PTY/save-load/cleanup flow and capture a fresh post-class gameplay redraw (clear the startup buffer before the dungeon-state frame, then render that frame), with visual acceptance requiring the player @ plus live floor: and hp: state and no class-selection prompt. The canonical upstream is https://github.com/conornally/diabaig at fixed revision b90d35847070d3de27d4656b3316e0e932884b25 (version 1.0.1); that exact checkout has an MIT License, no Git submodules, and Makefile metadata for GCC, xxd, ncurses, and libm, so the source is legally redistributable and source-buildable in principle. Issue #675 requests correction of an already delivered equivalent, not a materially distinct upstream update or separately justified variant, so a second delivery ticket is unsafe. Unblock only by reopening/amending #674 or specifying a materially distinct upstream revision/version or separately justified variant requiring a new package outcome. The research host has no Guix daemon and its capability boundary forbids guix shell, so no package proof is claimed; build assessment is from authoritative source metadata.


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

<!-- goocastle-disposition:sequential-reviewer:675:1:blocked --> Goocastle recorded disposition: blocked. Blocked by the duplicate-delivery rule: the local channel already contains the intended canonical project as package module tay/packages/diabaig.scm (package diabaig), introduced by commit bf8b2c670e7cba97f2cf9bed61a2d208731706ca, and the closed delivery is issue #674 as recorded by the runtime contract in .goocastle/runtime-evidence-contracts.json. The delivered artifact .goocastle/evidence/issue-674.png was visually inspected and shows the class-selection screen, not dungeon gameplay; the package-owned PTY driver tay/packages/diabaig-smoke.py captures a cumulative startup buffer, while tests/diabaig-smoke.sh asserts floor: and @ in the raw capture. The smallest provenance-preserving correction would retain the real isolated PTY/save-load/cleanup flow and capture a fresh post-class gameplay redraw (clear the startup buffer before the dungeon-state frame, then render that frame), with visual acceptance requiring the player @ plus live floor: and hp: state and no class-selection prompt. The canonical upstream is https://github.com/conornally/diabaig at fixed revision b90d35847070d3de27d4656b3316e0e932884b25 (version 1.0.1); that exact checkout has an MIT License, no Git submodules, and Makefile metadata for GCC, xxd, ncurses, and libm, so the source is legally redistributable and source-buildable in principle. Issue #675 requests correction of an already delivered equivalent, not a materially distinct upstream update or separately justified variant, so a second delivery ticket is unsafe. Unblock only by reopening/amending #674 or specifying a materially distinct upstream revision/version or separately justified variant requiring a new package outcome. The research host has no Guix daemon and its capability boundary forbids guix shell, so no package proof is claimed; build assessment is from authoritative source metadata. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/675#issuecomment-5516434861). Originally posted by [htayj](https://github.com/htayj) on 2026-09-02T21:09:06Z.
htayj commented 2026-09-02 21:12:51 +00:00 (Migrated from github.com)

The remediation is now tracked as #676 and will run through guix-package-quality-gates. It corrects the package-owned capture path and requires a fresh, visually inspected dungeon gameplay artifact; #675 remains the terminal research record.


Imported from GitHub comment. Originally posted by htayj on 2026-09-02T21:12:51Z.

The remediation is now tracked as #676 and will run through guix-package-quality-gates. It corrects the package-owned capture path and requires a fresh, visually inspected dungeon gameplay artifact; #675 remains the terminal research record. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/675#issuecomment-5516485866). Originally posted by [htayj](https://github.com/htayj) on 2026-09-02T21:12:51Z.
Owner

Implemented and published in signed, Guix-authenticated commit 3281b08243 using OMP orchestration.

The smoke now preserves the unmodified 80×34 PTY dungeon redraw plus the actual movement update. Removed the lossy row/cursor rewriting; a real xterm replay shows exactly one player @, full dungeon and controls, floor:1 and hp:500/500, and no class-selection menu. The shell proof uses coreutils timeout and an unprivileged network namespace directly, with isolated HOME/XDG, scratch cleanup and unchanged NAR/read-only store assertions.

Verified 2026-09-29:

  • guix build -L guix --no-grafts --no-offload --cores=2 --max-jobs=1 diabaig
  • same command with --check: reproducible
  • guix lint -L guix --no-network --exclude=cve,refresh,archival diabaig: no Diabaig findings (an unrelated in-progress module warning was reported)
  • tests/diabaig-smoke.sh /gnu/store/jqa5ivlkpfdnrfym4ryri380vwzsj12i-diabaig-1.0.1: DIABAIG_RUNTIME_OK; real new-game/move/inventory/save/load/quit and store-integrity assertions passed
  • Independent OMP code review: no findings.

__omp_shell("Verified dungeon gameplay frame")

PNG SHA256: f853dcf4e6fda476a11b911ce697edae2a2185ac0770d53238a0e4caf641dfaa.
Raw PTY SHA256: 0383f8f477f5d026cd1f373de52b83eedfdcfc40a26cae4a352d204e41dae2fc.
The final proof/capture used OMP calls, real xterm/Xvfb and ImageMagick, not Goocastle. Disclosure: an implementation subagent initially violated the no-Goocastle instruction by invoking its old bounded-validation helper; that run is not the proof of record and the dependency was removed before the independently executed final gates. No live user terminal/profile or host services changed.

Implemented and published in signed, Guix-authenticated commit 3281b08243b434b4e71814534959e34ef47de75d using OMP orchestration. The smoke now preserves the unmodified 80×34 PTY dungeon redraw plus the actual movement update. Removed the lossy row/cursor rewriting; a real xterm replay shows exactly one player @, full dungeon and controls, floor:1 and hp:500/500, and no class-selection menu. The shell proof uses coreutils timeout and an unprivileged network namespace directly, with isolated HOME/XDG, scratch cleanup and unchanged NAR/read-only store assertions. Verified 2026-09-29: - `guix build -L guix --no-grafts --no-offload --cores=2 --max-jobs=1 diabaig` - same command with `--check`: reproducible - `guix lint -L guix --no-network --exclude=cve,refresh,archival diabaig`: no Diabaig findings (an unrelated in-progress module warning was reported) - `tests/diabaig-smoke.sh /gnu/store/jqa5ivlkpfdnrfym4ryri380vwzsj12i-diabaig-1.0.1`: `DIABAIG_RUNTIME_OK`; real new-game/move/inventory/save/load/quit and store-integrity assertions passed - Independent OMP code review: no findings. __omp_shell("[Verified dungeon gameplay frame](https://192.168.7.121/tay/guix-channel/raw/commit/3281b08243b434b4e71814534959e34ef47de75d/.goocastle/evidence/issue-675.png)") PNG SHA256: `f853dcf4e6fda476a11b911ce697edae2a2185ac0770d53238a0e4caf641dfaa`. Raw PTY SHA256: `0383f8f477f5d026cd1f373de52b83eedfdcfc40a26cae4a352d204e41dae2fc`. The final proof/capture used OMP calls, real xterm/Xvfb and ImageMagick, not Goocastle. Disclosure: an implementation subagent initially violated the no-Goocastle instruction by invoking its old bounded-validation helper; that run is not the proof of record and the dependency was removed before the independently executed final gates. No live user terminal/profile or host services changed.
tay closed this issue 2026-09-29 21:58:59 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#675
No description provided.