DRIFTLANDS co-op survival on drifting tides — studio progress

Design Re-Review 4: Base Building — 2026-08-27

Document reviewed: design/gdd/base-building.md (1312 lines at review time; 1389 after revision)
Review mode: full, fresh session — 4 specialists + creative-director, scoped to CS-6/CS-7 per the third re-review's "pending fourth re-review of CS-6/CS-7 only"
Re-review: Yes — prior verdict NEEDS REVISION (narrow), 2026-08-27 (base-building-rereview-3-2026-08-27.md)
Specialists consulted: systems-designer, qa-lead, network-programmer, game-designer (all Sonnet)
Senior reviewer: creative-director (Opus)

Verdict: NEEDS REVISION (narrow — 4 blocking surfaces + recommended tail, all applied same day)

Zero mechanism redesign. CS-6 and CS-7 hold on their own surface — the 35–58 band, the placerHasExit mechanism, the FIFO tie-break, AC-14b's base case and AC-20b's mixed batch all re-derive correctly under independent check. What failed is one step outside the edited lines, in the same tables and paragraphs the change-sets touched.

Completeness: 8/8 · Dependency Graph: unchanged, all on disk

Retired-literal sweep before revision (25–57, 13–15, 60×4, 24×4): clean. After revision (gridCellSize ≥ placementReach, "zero-hop", wallCost 3–6): only historical citations inside the corrected cells.

CD-verified arithmetic

Check Result
perimeterSegments 34/35/58/59 at hauls 58 and 1381 (fail) / 3,2 / 4,2 / 5 (fail) — CS-6 holds
"two sessions at slow end for 15–29"58 < 4s ≤ 116 → exact
wallCost at seg 50: 3/4/5/6 → sessions at haul 583 / 4 / 5 / 6 — 5 and 6 fail; marginal range is 3–4
wallCost 2 at haul 138⌈100/138⌉ = 1 — floor is set by the fast end
⌊placementReach/gridCellSize⌋ at equality1, not < 1 — prior EC17 gloss false at its own boundary
workbenchCost ±50%, storageChestCost 4–12 vs bootstrapRatio0.242–0.339, 0.267–0.315 — pass

Prior change-sets — status

Status
CS-6 knob-row bounds 35–58, gate subjectHolds. Blast radius not swept → wallCost row (CS-8), CI-gates "corner" sentence (CS-9)
CS-7 AC-14b/14c, host-exactness, maze boundary, EC17 rowMechanism holds. New EC17 row wrong at its boundary (CS-10); AC-14b companion ambiguous, AC-14c unpinned (CS-11); pin (iii) ambiguous (CS-12); wording tail (CS-13–16)

Required — applied

Recommended — applied

Rejected / downgraded

Downgraded to RECOMMENDED by CD: missing maze-sequence AC (coverage gap, not wrong number); EC22 tier (misclassification, not mechanism); l.807 unsealable room (benign failure). Not reopened: conjunct-over-document; D2 shelter gate-exempt; the asymmetry itself.

Disagreements adjudicated

Process finding [creative-director]

"Fix introduces the defect" recurred a fifth time, in three shapes: (A, new) the fix's own derivation proves an adjacent cell wrong and nobody runs it one row up; (B, new) a new guard row's justification is false at the boundary it polices — and the reviewer's corrective proposal failed the same check; (C, repeat) an AC whose GIVEN the text does not determine. Root cause restated: line-range scoping guarantees the adjacent cell is out of scope. Checklist amended in .claude/skills/design-review/SKILL.md: close over every cell/row/AC downstream of the re-derived constant, and check every new guard (and its proposed fix) at its own boundary.

Fifth re-review scope

CS-8–CS-16 only, with a mandatory closure step: re-run perimeterSessions against every Tuning Knobs row and every CI-gate example sentence; every load-time boundary at its own boundary. Applied once already in this session (clean). If a fifth pass surfaces a sixth instance, the CD's read is that the numeric surface needs a generated source of truth (the gate computing the ranges), which is a decision, not a finding.

Scope Signal

Revision: S. System: M (unchanged).

Files changed

design/gdd/base-building.md, design/gdd/systems-index.md, design/quick-specs/player-movement-2026-08-27.md, .claude/skills/design-review/SKILL.md.