diff --git a/CHANGELOG.md b/CHANGELOG.md
index f538a6c66..2821f471e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## [1.91.82.0] - 2026-10-11
+
+**Plan-review reality rows name their inputs.** The `{{PLAN_REALITY_ROWS}}` prose in plan-eng-review, plan-ceo-review and the autoplan CEO/Eng phases wrote `gstack-plan-reality check --phase
` without saying what `` is, and the completion summary cited a `PLAN_REALITY` line no step produced. The check now reads `` (the review you wrote, or stdin) and says it prints the `PLAN_REALITY:` line the summary cites. Found by the plan-eng-review workflow judge on an unrelated PR (clarity 3 / actionability 3 median, both citing these two references).
+
## [1.91.80.0] - 2026-10-11
**`/eval-plan` prices its default arms out of the box.** `lib/pricing.ts` gains verified rows for `claude-opus-5-5` ($4 / $20 per MTok, cache reads $0.20; Anthropic list prices effective 2026-10-07) and `gpt-6.1-sol` ($2 / $10 per MTok, cached input $0.10; OpenAI model page, standard tier), the two models `gstack-models resolve --role eval-arms` returns under the default `smart` implementation tier. `gstack-eval-plan arms` previously exited `EVAL_PRICE_MISSING` for both; the fail-closed rule is unchanged, only the data was missing.
diff --git a/VERSION b/VERSION
index c7199351f..309d3fc72 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.91.80.0
+1.91.82.0
diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md
index 6018ba410..0277a610a 100644
--- a/agents-digest/gstack-AGENTS.md
+++ b/agents-digest/gstack-AGENTS.md
@@ -1,4 +1,4 @@
-# gstack digest v1.91.80.0 — regenerate/re-copy after upgrading gstack
+# gstack digest v1.91.82.0 — regenerate/re-copy after upgrading gstack
Behavioral rules from gstack (https://github.com/garrytan/gstack), compressed
for agent hosts without a full skill install. The full skills add workflows,
diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md
index eaf9b03c2..a61f41b5a 100644
--- a/autoplan/SKILL.md
+++ b/autoplan/SKILL.md
@@ -875,7 +875,7 @@ Produce missing outputs before the gate; after at most 2 repair attempts, warn
there with each incomplete item.
Reality rows: each phase's `PLAN_REALITY: … verdict=complete` from
-`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase `. A missing applicable row is `incomplete`
+`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase `. A missing applicable row is `incomplete`
in an unattended run, never a warning; interactive runs follow the repair rule above.
---
diff --git a/autoplan/sections/ceo-phase.md b/autoplan/sections/ceo-phase.md
index e517cb61e..6636d153b 100644
--- a/autoplan/sections/ceo-phase.md
+++ b/autoplan/sections/ceo-phase.md
@@ -176,7 +176,7 @@ Sections 1-11 — for EACH section, run the evaluation criteria from the loaded
**Mandatory outputs from Phase 1:**
- Reality rows: the loaded skill's `REALITY:` lines, one per applicable row;
- `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo ` prints `verdict=complete` before the phase closes
+ `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo ` prints `PLAN_REALITY: … verdict=complete` before the phase closes
(unattended: `incomplete` keeps it open).
- "NOT in scope" section with deferred items and rationale
- "What already exists" section mapping sub-problems to existing code
diff --git a/autoplan/sections/eng-phase.md b/autoplan/sections/eng-phase.md
index 118514059..09fecd624 100644
--- a/autoplan/sections/eng-phase.md
+++ b/autoplan/sections/eng-phase.md
@@ -105,7 +105,7 @@ Retain the historical review-log skill ID; add `"host":"claude","outside_provide
1. Step 0 (Scope Challenge): Read actual code referenced by the plan. Map each
sub-problem to existing code. Run the complexity check. Produce concrete findings.
Reality rows: the loaded skill's `REALITY:` lines, one per applicable row;
- `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng ` prints `verdict=complete` before the phase closes
+ `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng ` prints `PLAN_REALITY: … verdict=complete` before the phase closes
(unattended: `incomplete` keeps it open).
2. Step 0.5 (Dual Voices): Present the completed calls above under Codex SAYS
diff --git a/package.json b/package.json
index 476b09ae9..bf5c06e3c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gstack",
- "version": "1.91.80",
+ "version": "1.91.82",
"description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.",
"license": "MIT",
"type": "module",
diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md
index 29d5f7bb5..6373e7540 100644
--- a/plan-ceo-review/SKILL.md
+++ b/plan-ceo-review/SKILL.md
@@ -847,7 +847,7 @@ the existing path is worse.
row it prints (tier 1 always: premise-table, already-done, surface-check, binding-decisions, numbers, deferred-asks, pr-count; tier 2 by detected scope, `--scope `).
Every row cites a file:line receipt; the premise table counts `unverified=`. End with
one line per row, `REALITY: pass|finding|n/a `, then run
-`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo `: a missing applicable row is `incomplete`
+`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo ` (it prints the `PLAN_REALITY:` line): a missing row is `incomplete`
unattended; interactive runs repair twice, then warn at the gate.
### 0C. Dream State Mapping
diff --git a/plan-eng-review/sections/review-sections.md b/plan-eng-review/sections/review-sections.md
index ce465d8a9..cd7d5c511 100644
--- a/plan-eng-review/sections/review-sections.md
+++ b/plan-eng-review/sections/review-sections.md
@@ -427,7 +427,7 @@ changes or write findings into the plan yet.
row it prints (tier 1 always: premise-table, already-done, surface-check, binding-decisions, numbers, deferred-asks, pr-count; tier 2 by detected scope, `--scope `).
Every row cites a file:line receipt; the premise table counts `unverified=`. End with
one line per row, `REALITY: pass|finding|n/a `, then run
-`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng `: a missing applicable row is `incomplete`
+`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng ` (it prints the `PLAN_REALITY:` line): a missing row is `incomplete`
unattended; interactive runs repair twice, then warn at the gate.
### B. Resolve complexity selectors
diff --git a/scripts/resolvers/plan-reality.ts b/scripts/resolvers/plan-reality.ts
index 3eaed14e9..0ac767d20 100644
--- a/scripts/resolvers/plan-reality.ts
+++ b/scripts/resolvers/plan-reality.ts
@@ -47,12 +47,12 @@ ${renderIncidentTable(REALITY_ROWS)}`;
if (mode === 'summary') return `- Reality rows: ___/___ applicable rows emitted (\`PLAN_REALITY\` line), ___ unverified premises`;
if (mode === 'pregate') {
return `Reality rows: each phase's \`PLAN_REALITY: … verdict=complete\` from
-\`${BIN} check --phase \`. A missing applicable row is \`incomplete\`
+\`${BIN} check --phase \`. A missing applicable row is \`incomplete\`
in an unattended run, never a warning; interactive runs follow the repair rule above.`;
}
if (mode === 'autoplan') {
return `Reality rows: the loaded skill's \`REALITY:\` lines, one per applicable row;
- \`${BIN} check --phase ${args?.[1] ?? 'ceo'} \` prints \`verdict=complete\` before the phase closes
+ \`${BIN} check --phase ${args?.[1] ?? 'ceo'} \` prints \`PLAN_REALITY: … verdict=complete\` before the phase closes
(unattended: \`incomplete\` keeps it open).`;
}
const phase = phaseFor(ctx, mode);
@@ -60,6 +60,6 @@ in an unattended run, never a warning; interactive runs follow the repair rule a
row it prints (tier 1 always: ${TIER1_ROW_IDS.join(', ')}; tier 2 by detected scope, \`--scope \`).
Every row cites a file:line receipt; the premise table counts \`unverified=\`. End with
one line per row, \`${REALITY_LINE_SHAPE}\`, then run
-\`${BIN} check --phase ${phase} \`: a missing applicable row is \`incomplete\`
+\`${BIN} check --phase ${phase} \` (it prints the \`PLAN_REALITY:\` line): a missing row is \`incomplete\`
unattended; interactive runs repair twice, then warn at the gate.`;
}