DRIFTLANDS co-op survival on drifting tides — studio progress

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

Document reviewed: design/gdd/base-building.md (1389 lines at review time; 1450 after revision)
Review mode: full, fresh session — 4 specialists + creative-director, scoped to CS-8–CS-16 per the fourth re-review, with the CD's 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)
Re-review: Yes — prior verdict NEEDS REVISION (narrow), 2026-08-27 (base-building-rereview-4-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 — one blocking surface + recommended/nice tail, all applied same day as CS-18)

The numeric surface is clean for the first time in five passes. 24 main-review cells and 29 systems-designer cells — both knob rows and all four too-low/too-high cells, every CI-gate example sentence, the Formulas perimeter check (shelter 25, old anchor 60, the 2–4 band), the bootstrap sub-ranges, and every Edge Case 17 boundary at equality — all PASS. Harvesting's lowEndPartyHaul 165 / mixedHaulTimberPerSessionLow 58 / High 138 verified by name at harvesting-system.md:278-280.

What failed is a graph-semantics defect pinned in prose and cross-referenced from three places, not arithmetic.

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

Closure table (main review)

Cell Arithmetic Result
wallCost 3 / 4 at 58 and 1383,2 / 4,2PASS
wallCost too-low 2100/138 → 1; 100/58 → 2PASS
wallCost too-high 5; CS-9 corner 6250/58 → 5; 300/58 → 6PASS
perimeterSegments 35 / 583,2 / 4,2PASS
floor 4s > 138 → 35; ceiling 4s ≤ 232 → 58exactPASS
too-low 34; too-high 59; "15–29 at slow end"1; 5; 58 < 4s ≤ 116PASS
Formulas: 200 timber 2–4; shelter 25 → 1; anchor 60 → 5exactPASS
bootstrap 48/165 ≈ 0.29; +50% corner 0.436exactPASS
workbench ±50% 0.242–0.339; chest 4–12 0.267–0.315in bandPASS
EC17 reach < 2g ⇔ ⌊reach/g⌋ ≤ 1; AC-64b 0.5/1.0/1.99/2.0holds ∀ g > 0PASS (row since retired)
Reason-string order vs F1 conjunct orderidenticalPASS

Required — applied (CS-18)

Recommended — applied

Nice — applied

EC23 CS-16 sentence scoped to the outside placer (inside still "no way out") [main; qa-lead]; "passes 4 sessions" → "exceeds" in both too-high cells [systems-designer]; AC-14d other-seven-conjuncts clause [qa-lead]; EC22 CS-14 "no placer exclusion" justified by Rule 5's zero-prediction ghost [network-programmer]; tier ladder labelled reviewer taxonomy [game-designer]; wallCost row annotated gate-derived (CD rejected demoting it) [game-designer]; AC-46 "does not assert the spatial fit check" [game-designer, downgraded]; EC17 "every displaced player" — moot with the row.

Rejected / downgraded

Disagreements adjudicated

Dispute Ruling
BFS reading: game-designer ("text already pins clear-cells-only; correct design") vs systems/qa/main ("AC-14c only passes under expand-through-blocked")Both right on their half. Clear-cells-only is the design; AC-14c was unreachable under it. The game-designer never walked the AC.
CD's ≥2-hop replacement rationale vs main reviewMain review: under clear-cells-only depth > 1 is unreachable; the bound is retired, not re-justified. User decided.
Replication orderingMain review.
Teleport() assertionWording → ADR input.
EC23 shape capMain review (misread of placerHasExit's subject).

Process finding [creative-director; main review]

The closure step closed the numeric class — keep it as a standing checklist item; do not build a number generator. The defect migrated to algorithmic semantics: CS-11 pinned coordinates to disambiguate a tie-break without checking whether the traversal rule admitted the configuration, and the CD's own corrective rationale then failed the same reachability walk. Root cause: a pinned GIVEN is a reachability claim against a rule stated elsewhere, and nobody was required to execute it. Two closures: (1) algorithmic rules carry a reference implementation in the GDD (done for Edge Case 21); (2) .claude/skills/design-review/SKILL.md gains the bullet "execute every pinned GIVEN against the governing rule or its reference block before accepting it."

Sixth re-review scope

None. CD gates the revision inline; the mechanism change (BFS → ring check) is the CD's stated condition-1 case and was decided by the user with the CD's reasoning in hand. Next: /consistency-check design/gdd/base-building.md (peer docs cite Edge Case 21's search only by name; the player-movement quick-spec's Rule 6 wording still matches).

Scope Signal

Revision: S. System: M (unchanged).

Files changed

design/gdd/base-building.md, design/gdd/systems-index.md, .claude/skills/design-review/SKILL.md, production/session-state/active.md, this file.