pi/ — agent-development tooling (local, not part of the game build)
This directory is a pi package for the
LLM-agent workflow of this repo — it is not part of the game build
(never add it to CMakeLists.txt). It exists because the 2026-10-09
session forensics on the #150 cull hunt (see docs/dev-process.md §8
and the Tooling workstream row in docs/ROADMAP.md §7) showed the
loss mode is model + discipline, not retrieval.
Install (per machine):
pi install ./pi # local package: agents + compaction-ledger
pi install npm:pi-subagents@0.76.1 # the subagent runtime (pinned; audit: docs/dev/notes/)
.pi/ is gitignored, so the install declarations land in machine-local
settings; the reviewable source of truth is this directory, committed.
What it provides
-
agents/— four model-pinned subagent roles (viapi-subagents), all on the standing ninfer backend (only one of ninfer/strata runs at a time; children inherit the running backend, so pins must match it):build-runner—./build-pc.sh+ capture + golden sweep, reports pass/fail.ninfer-windows/qwen3.8-27b-nvfp4full(fast 4-bit).pairing— D579T-style log pairing (E-rows vs C-rows by x/y/w), names candidate cull rules, read-only.model: inherit— the reasoning step, so it follows the parent session's tier; run the parent on a strong model when doing D579 diagnosis.sweep-watcher— watches long golden-sweep runs, triages new vs regressed frames.ninfer-windows/qwen3.8-27b-nvfp4full.doc-sync— ROADMAP rows, findings-index.csv, findings.md §F index after a verified change.ninfer-windows/qwen3.8-27b-nvfp4full.
Note: NInfer serves one model per launcher —
ninfer-coding.bat(4-bitqwen3.8-27b-nvfp4full) is the standing default; theninfer-quality.batlauncher serves the ≈6-bit groupwise-intqwen3.8-27bas the strong local tier (a launcher restart + new pi session, not a backend switch). If a better/faster artifact appears in the closed NInfer set, promote the labor-role pins to it.Model pins live in each agent file's frontmatter (
model: provider/model) — keep them here, not in untracked settings, so the pins are reviewable, and keep them on the standing backend (ninfer). Planning/diagnosis stays on the parent session's strong model (openrouter/deepseek/deepseek-v4-pro, orstrata-coder-hardwith the local backend switched); only mechanical labor goes to these agents. -
extensions/compaction-ledger/— overrides the compaction summary with an evidence-ledger prompt (every live hypothesis must be taggedrefuted/unvalidated/validated (<artifact>); "diagnosed" without a maintainer A/B or golden sweep is forbidden) and, whenGE_COMPACT_MODELis set (e.g.openrouter/deepseek/deepseek-v4-proorstrata/strata-coder-hard), summarizes with that stronger model instead of the session model. The 01a11ec6 session lost the evening because a mid-session compaction promoted an unvalidated hypothesis to "diagnosed" and the post-compaction turns built on it.
Rules for anything added here: machine paths are forbidden (tree
hygiene), third-party deps are forbidden without a ROADMAP §7 approval
row (like pi-subagents), and src/game is still read-only ground
truth for every agent.