The 289 findings are C-faithful gameplay literals (probability rolls, damage spreads, screen coordinates); naming them would invent constants the C never had and hurt greppability against the reference sources.
1.9 KiB
Project Memory
Working notes for agents on this repo. Read this alongside TODO.md (which holds the step queue and workflow) before starting work.
Error handling
Panicking on bad/unexpected errors is allowed and preferred over
threading unlikely error returns through game code — e.g. write-side
Close/encode failures where continuing would mean corrupt state. The
game already unwinds C's exit() calls via a gameEnd panic recovered in
Run. Return errors where a caller genuinely handles them (save-file
prompts, restore validation). Reserve deliberate _ = discards for
true best-effort paths (scorefile writes, signal-time autosave), always
with a comment saying why.
Linting
The .golangci.yml is the house standard and may only be modified with sneak's explicit permission. To disable a linter, ask, explaining what the linter does; he approves specific exceptions, which are recorded in the config's "Repo-specific exceptions" block with the approval date. Approved so far: paralleltest (2026-07-06); testpackage, exhaustive, and mnd (2026-07-07). Complexity linters (cyclop, gocognit, nestif) stay enabled and red until refactor step 7 fixes the findings, per sneak 2026-07-07. Line-level //nolint with a reason is used sparingly for C-faithfulness (e.g. the authentic "missle" message spellings) and provably-safe gosec conversions; each needs a justifying comment.
Faithfulness
Behavior must not change during the idiomatic-Go refactor unless a TODO step says so. The 80x24 seed-compatible gameplay, message text (including original typos), RNG call order, and C quirks (documented in tests like TestHoldScrollGreedyMonsterQuirk) are contract. Doc comments keep their "(file.c func_name)" breadcrumbs.
Debugging
Write real, committed test files with t.Logf output and run plain
go test -v; no throwaway scratch scripts. Successful debug probes
become regression tests.