DRIFTLANDS co-op survival on drifting tides — studio progress

Crafting & Gear Identity

Status: Designed + Reviewed — independent /design-review 2026-08-26: NEEDS REVISION, all findings applied same day (design/reviews/crafting-system-review-2026-08-26.md)
Author: Jeroen + agent panel
Last Updated: 2026-08-26
Creative Director Review (CD-GDD-ALIGN): CONCERNS (resolved) 2026-08-26 — all 3 conditions + 4 advisories applied same day (C1 OQ8 falsification criterion + pre-agreed exit; C2 aggregation ban + AC-13b; C3 provenance trigger made mechanical; A1 world-fact copy; A2 MVP-unfalsifiable note; A3 mark MVP floor; A4 Base-Building outlet note). Durability ruling approved on merits: "a wear-state presentation layer with a homecoming beat," not the mechanic the specialists rejected.
Implements Pillar: Pillar 3 — Made by Our Hands (primary: the only path from materials to power); Pillar 5 — Four Freedoms (gear-carried identity, no classes); serves Expression (#3) and Fantasy (#5) aesthetics

Overview

Crafting is how a haul becomes an era: carry materials to a station at home — workbench for cloth-tier goods, forge for the metal tiers to come — pick a known recipe, and make the thing. Every sword, shirt, and wall segment in Driftlands was made by one of the party from materials someone hauled home before the land that bore them left (Pillar 3 — there are no drops, no vendors, and ruins teach you how to make things, never hand you the thing). Because character stats are flat by design, gear is the entire power and identity system: what you wear and wield is what you are, and anything anyone crafts can be handed to anyone else — a new friend fights at parity the moment someone tosses them the group's spare sword (Pillar 5, binding). Beneath the act sits the project's item layer: Crafting owns item definitions and recipes as data — including the values consumed through other systems' hooks (Combat's DamageModifier/DamageReduction, Harvesting's HarvestModifier, capped ≤ 2.0) — while Inventory owns the stacks they live in. MVP ships the cloth tier only: a small recipe set that stands the base up fast and proves the chain; bronze opens Tier 1, with leather and iron completing the ladder — each era unlocked by the right lands docking, not by grind.

Player Fantasy

Crafting's fantasy is the maker's signature — *"that's my sword you're holding."* The payoff isn't the item; it's being known for it. The anchor moment: three sessions after the forge first lights, a new friend joins mid-session and gets handed a spare sword from the rack without ceremony. She swings it, fells a Rusher, and asks "who made this?" — and someone says "that's Alex's — he's basically our smith now." Nobody assigned Alex that. Nobody can take it from him except by out-forging him. The sword changed hands at full parity (Pillar 5); the name attached to it didn't move — and that is the actual reward. Where combat's mastery is silent and individual, and harvesting's bet is loud and shared in the moment, the maker's recognition is retrospective and asynchronous: it accrues later, off-screen, in the fact that people keep asking for your work by name.

*(MVP honesty clause, review 2026-08-26: this anchor moment is a Tier 1+ target. A 3-recipe cloth tier where everyone knows every recipe and every craft takes the same 2 seconds cannot produce specialization — there is nothing yet to be known for. MVP validates the mechanical skeleton the fantasy will stand on — marks, atomic commits, instance permanence (Rules 1, 5, 7) — the fantasy itself arrives with Tier 1's recipe volume and era gates.)*

Its biggest single scene is the era-turner: the first bronze ingot out of the forge — not a stat ticking up but a physical thing someone is holding, made from tin that drifted in on a land three weeks gone and copper someone nearly died prying from a Bulwark-guarded vein. The group's gear silhouette changes that night, someone screenshots it, and "our bronze age" becomes a phrase said unprompted (concept, Fantasy #5). The tier gate's friction is part of the meaning: you can hold the knowledge from a ruin and still wait at cloth because the right land hasn't docked — the wait is what the ingot is made of.

Its necessary shadow is the forge session: a quiet evening at the anvil while three friends push inland without you. Specialization must always remain a choice being re-made, never an obligation — the night Alex has to smith is the night the fantasy curdles into unpaid labor. And the payoff register is understated, matching the house voice: the ingot is a fact stated plainly, never a fanfare. Outcomes are deterministic — the drama lives in provenance and the decision to make, never in surprise.

**Tone and design tests this fantasy imposes (binding on future crafting features):**

Reference anchor: Valheim's material eras as chapters of group history — with one deliberate divergence: eras here arrive on the tide (the right land docking), not by walking to the next biome; anticipation replaces expedition as the gate.

Detailed Design

Core Rules

States and Transitions

This system has deliberately fewer states than its siblings — a single-phase timed action gated once at commit; no re-sampled mid-phase gates, no lifecycle counters.

From Event To Notes
Idle/Move (at station, in range)craft input, gates provisionally passCraftingnothing debited yet
CraftingcraftTimeSeconds elapsedIdle/Moveatomic commit: consume + produce + mark, all-or-nothing
Craftingmovement / cancel inputIdle/Movetrue no-op — materials never touched

Repair is an instant station action, not a state. Stations hold no state machine (present/absent is Base Building's fact; no occupancy lock per Rule 8).

Feedback authority split (house pattern):

Effect Timing
Craft stance/animation, station VFX loop, tool sounds during the beatInstant — client-predicted (outcome-independent)
Materials consumed, item produced, instance + mark written, durability changes, repair completionHost-confirmed broadcast only

Interactions with Other Systems

System Crafting consumes Crafting provides Interface owner
InventoryAtomic Remove(inputs from CARRY + in-range STORAGE) + Add(output) at commit (Rule 6 shape)Final maxStack values; the instanceTag opaque pass-through (adopted in Inventory Rule 2, 2026-08-27)Inventory owns stacks/atomicity; Crafting owns definitions
CombatSwing-landed / damage-absorbed events per equipped instance (durability accounting, host-side)DamageModifier/DamageReduction values per tier (Combat owns the hook signatures)Combat owns hooks; Crafting owns values
HarvestingTool-swing events (Tier 1, durability)HarvestModifier values — hard ceiling ≤ 2.0, load-enforced by HarvestingHarvesting owns hook + ceiling; Crafting owns values beneath it
Base Building— (peer)Material item definitions; optionally the RecipeDef data shapeBB owns structures/costs/placement entirely (Rule 10)
Land Dock/UndockKnownLandTemplates registry (era gate (b)) — read-only—LDU owns the registry — quick-spec ✅ 2026-08-27 (append at first φ activation, seeded start, no removal ever)
Tide SchedulercycleIndex (asked, timestamp only — never gating; crafting lives off the tide's clock at home)—Scheduler owns time
SaveReconcile for KnownRecipes (union)InstanceMetadata table — permanent, never stale-dropped (unlike harvest diffs: a maker's mark has no expiry)Quick-spec ✅ 2026-08-26 — adopts the union + orphan rules; two-class rule confirms permanence
Enemy AI— none —— none —No interaction: crafting happens only at home, which is hostile-free by definition (stated so it doesn't read as an omission)
UI/HUD—Recipe list + known-but-uncraftable reason strings; maker's-mark display data; durability/wear readUI owns presentation 📌 /ux-design

Formulas

Crafting math is deterministic and data-driven — no RNG anywhere (house rule). Where modifier math occurs downstream (combat F1/F2, harvesting F1), those systems own the computation and the pinned AwayFromZero rounding; Crafting only supplies values.

Baseline recipe table (cloth tier, MVP)

Recipe Station Inputs Output Notes
Cloth SwordWorkbench6 fiber + 8 timber1 (gear)The MVP weapon; timber-weighted (haft), zero sinew — reachable from shore+mid alone
Cloth GarbWorkbench10 fiber1 (gear)Baseline armor, pure shore fiber — a first-session friend gears up from the beach (new-friend test, literal)
Cloth Garb, ReinforcedWorkbench8 fiber + 3 sinew1 (gear)The deep-band reward: sinew gates the best cloth armor, never the baseline — DamageReduction 0.10 per-item override (F2; ruled 2026-08-27, cross-GDD review D1 — without it this recipe was mechanically identical to Cloth Garb)

Structures (workbench, walls, storage) are not here — Base Building owns them (Core Rule 10). No rope intermediate at cloth tier (hand-tended ceiling; multi-step chains are Tier 2's CD-gated territory). **The cloth recipe set is deliberately small (CD A4): the home-facing player's ongoing outlet at MVP is Base Building, not recipe volume — filler recipes would violate the no-treadmill anti-pillar and the hand-tended ceiling.** *(⚑ This outlet claim is unverified until Base Building's GDD exists — Open Question 9, review 2026-08-26.)*

First-session check (party-scoped, review 2026-08-26): sword + baseline garb = 16 fiber + 8 timber = 24 units, against harvesting's low-end casual session haul of ~165 — which is explicitly a **2-player combined** figure (harvesting F3); no solo low-end haul is derived anywhere, so this check validates the party's first session, not an individual's. The party's first weapon and armor land comfortably inside session one with materials to spare. The "new-friend gears up from the beach" scene is priced separately by Cloth Garb alone: 10 fiber ≈ two shore nodes (9 units each), which holds solo — on the docked land's shore band; the home island has no nodes (harvesting Rule 11, cross-GDD W3). *(The pre-sword fight is defined: combat's unarmed strike does 14 — cross-GDD review D2, 2026-08-27 — so a fresh group can clear the mid-band timber the workbench needs before anyone owns a sword.)* Too high breaks the first-session guarantee; too low (< ~10 units) makes the sword a rounding error of the trip rather than its product — the mark should cost something visible. *(Clarified 2026-08-26: "the base kit's materials" in the Overview means the session-one harvestable shore+mid materials — no starting-inventory or pre-placed-structure system exists anywhere. Base Building's bootstrap check owns the combined workbench+storage+sword+garb session-one gate.)*

F1. craftLegality

`canCraft = recipeKnown AND stationPresentExact(tier) AND worldHasOffered(inputs) AND CanRemove(inputs, CARRY ∪ STORAGE-in-range) AND CanAdd(output)`

Variables:

Variable Symbol Type Range Description
Recipe knownrecipeKnownbool—Group-level KnownRecipes set (Rule 2); always true for cloth at MVP
Station presentstationPresentExactbool—Base Building's fact (BB F3 — two named predicates): crafting invokes the Exact predicate; repair (Rule 9) invokes stationPresentAtLeast (naming aligned 2026-08-27, cross-GDD W6)
World has offeredworldHasOfferedbool—Every input's source template ∈ KnownLandTemplates (Rule 3, clause (b))
Inputs affordableCanRemovebool—Inventory's atomic check over CARRY + in-range STORAGE
Output fitsCanAddbool—Inventory's check; gear is stack-of-1

Output Range: boolean; evaluated provisionally at craft-start, re-sampled authoritatively at commit (end of the beat). Failure at either point = honest no-op. Example: cloth sword, workbench built, fiber×6 + timber×8 reachable, bag has a free slot → canCraft = true.

F2. Tier hook ladder (provisional — Tier 1 locks; each era has an identity)

Tier DamageModifier DamageReduction HarvestModifier Era identity
Cloth (MVP, locked)1.00.01.0The floor — baseline is cloth
Bronze1.40.121.3The offense breakthrough (the era-turner must matter in a fight)
Leather1.40.221.3The defense breakthrough (no leather swords; armor-focused)
Iron2.20.351.8Both — matches combat's provisional endpoints exactly

Constraint checks: iron 2.2/0.35 = combat's provisional values ✓; every HarvestModifier ≤ 2.0 hard ceiling ✓ with headroom (1.8 leaves Tier 2 somewhere to go). Too high at bronze: the compression threshold sits far below the old "> ~1.5" guess (corrected, review 2026-08-26) — at the provisional 1.4 itself, round(28×1.4)=39 already flattens Rusher (45–65 HP) and Spacer (55–75) to flat 2-hit kills and turns Bulwark's engineered 112-HP 4-hit boundary into 3 (combat F1's exact "variance dies" failure mode). Even 1.2 (→ 34) still flattens Rusher — the variance-preserving value may sit at or below the 1.1 floor, meaning Tier 1 may have to **trade variance against era-turner punch knowingly (Open Question 1 owns that decision). Too low** (≤ 1.1) makes the era-turner mechanically weightless — bronze reads as reskinned cloth.

Per-item overrides (added 2026-08-27, cross-GDD review D1): the tier row is the default for every GearDef of that tier; a GearDef may carry an explicit hook override that replaces the tier value for that item only. MVP's single override: **Cloth Garb, Reinforced — DamageReduction 0.10** (combat's TTD check: Bulwark's top hit 26 → 23, mistake budget 4 → 5; Rusher 16 → 14, 7 → 8). Without it the recipe was identical to Cloth Garb and the deep band — sinew, Bulwark-guarded, in no structure — had no MVP payoff at all. Overrides are validated against the same ceilings as tier values (Edge Case 16) and **must not exceed the next tier's value** or the ladder stops being monotonic — bronze's provisional 0.12 sits just above 0.10 and must not drop below it (folded into Open Question 1). The dull state (F3) returns an overridden item to the tier baseline (0.0), not to its override.

F3. durabilityDrain

durability_new = max(0, durability_old − 1) per qualifying use (weapon: landed swing; armor: hit absorbed; tool @Tier 1: harvest swing) — and `effectiveModifier = (durability > 0) ? itemValue : baselineValue, where itemValue` is the tier value or the item's F2 per-item override (cross-GDD D1)

Variables:

Variable Symbol Type Range Description
Durability pooldurabilityPoolint300 (default; per-item data; ≥ 10 enforced at load — Edge Case 16)Uses before dulling; sized so repair is an occasional homecoming beat, never a per-trip nag
Drain per use—int1 (fixed)One qualifying use = one point; no partial or scaled drain
Effective modifiereffectiveModifierfloattier value or baselineBinary, never gradual — a decay curve would be invisible stats; sharp/dull with visible wear states is legible
Repair——free, instant, at tier stationRestores pool to full; no material cost, ever (user ruling)

Output Range: [0, durabilityPool]; at MVP the dull state changes nothing (cloth = baseline) — wear states and the repair habit only. Example: bronze sword, pool 300: after 300 landed swings it swings on at cloth-equivalent 1.0 until a free workbench/forge repair restores 1.4. Theoretical drain floor (sanity note, review 2026-08-26): at combat's 0.25 s swing cycle, 300 landed swings is ≥ 75 s of pure attack-phase time — in practice several sessions of real fighting once misses, spacing, and travel are counted. Real-world cadence is unknowable pre-playtest (Open Question 2); this floor exists so a wildly wrong pool value is caught on paper first, the way tide and harvesting pin their own theoretical bounds.

F4. maxStack (finalized)

Fiber, timber, sinew: 20 locked (per-item registry placeholders resolved; the generic max_stack_cloth constant is superseded by these per-item entries — no scarcity-signaling reason to diverge; sinew's scarcity lives in node placement, not stack size).

Edge Cases

Commit races

Disconnects

The instance table

Durability

15b. Disconnect during repair is structurally impossible: repair is a single instant atomic host action, not a state — either it fired (durability full) or it never happened; there is no mid-repair window to disconnect inside (closure, QA gap fix).

Config validation (load-time, fail loudly)

Condition Outcome
Recipe inputs/output references an unregistered itemIdloud reject
Empty inputs[] or missing outputloud reject (a free-item recipe is a bug or an exploit)
craftTimeSeconds ≤ 0loud reject (instant craft breaks the hand-tended beat)
craftTimeSeconds above craftTimeWarnCeilingloud warning (a deliberately long high-tier craft isn't structurally broken — harvesting Edge Case 9's warn/reject split)
Hook ceilings, validated at Crafting's own load (the authoring source): HarvestModifier > 2.0 / DamageModifier ≤ 0 / DamageReduction ≥ 1.0loud reject
Duplicate recipeIdloud reject
Unknown station enum valueloud reject
output ∈ inputs (self-referencing recipe)loud reject (no legitimate shape below Tier 2's chain design)
durabilityPool < 10loud reject (floor — pool 1 would dull on the first swing)
outputCount ≤ 0 or any inputs[].count ≤ 0loud reject (an item-destroying or free-fraction recipe is the same exploit family as the free-item row — review 2026-08-26)
stationRange ≤ 0loud reject (a zero/negative draw radius makes every craft unaffordable — config corruption, fail loudly)

Era gating

Reconcile / persistence

Scope closures

Dependencies

Upstream (Crafting depends on):

System Hard/Soft Interface consumed Status
Inventory & HaulingHardAtomic Remove/Add over CARRY + in-range STORAGE at commit (Rule 6 shape); the instanceTag opaque pass-through — adopted in Inventory Rule 2, 2026-08-27Quick-spec ✅
CombatHard (event source)SwingLanded / DamageAbsorbed events per equipped instance (durability accounting) — combat's Dependencies table provides them as of 2026-08-27 (cross-GDD W2)GDD Reviewed
HarvestingHard (Tier 1 event source)HarvestSwingLanded events for tool durability — harvesting's Dependencies table provides them as of 2026-08-27 (Tier 1 emitter; cross-GDD W2). ⚑ Review 2026-08-26 (M3): Reinforced Garb's "deep-band reward" pricing (AC-55) is unverifiable until harvesting states the sinew-vs-rare-fiber split among its 6 deep-band nodes — flagged to harvesting's fix-passGDD Reviewed
Land Dock/UndockHardKnownLandTemplates registry (era gate — Rule 3, clause (b)) — both flagged constraints honored: starting templates seeded pre-known (Edge Case 17 → LDU Rule 3), sole-source authoring rule mechanized as a load-time loud warning (Edge Case 18 → LDU Rule 4)Quick-spec ✅ 2026-08-27 (design/quick-specs/land-dock-undock-2026-08-27.md)
Save & PersistenceHardInstanceMetadata table (permanent, never stale-dropped), KnownRecipes (union reconcile)Quick-spec ✅ 2026-08-26 (design/quick-specs/save-persistence-2026-08-26.md)
Tide SchedulerSoftcycleIndex timestamp (asked) — never gatingGDD Reviewed
Art bibleConstraint sourceThe maker's-mark visual tell, wear states, and per-tier gear silhouettes ("the group's silhouette changes that night")Approved. ⚑ Art-bible fix-pass item: mark + wear-state + tier-silhouette grammar

Downstream (systems that depend on Crafting):

Dependent Hard/Soft Interface provided
CombatHardDamageModifier/DamageReduction values per tier (F2)
HarvestingHardHarvestModifier values, ≤ 2.0 always (validated at Crafting's own load, Edge Case 16)
Base BuildingPeerMaterial item definitions; optionally the RecipeDef data shape (Rule 10)
UI/HUDSoftRecipe list + world-fact reason strings, maker's-mark display data, wear-state read

Bidirectional-consistency obligations: Combat and Harvesting must gain the durability-event rows in their next fix-pass (flagged); Inventory's quick-spec must record the instanceTag extension decision; LDU and Save quick-specs, when authored, must honor the constraints named above and list Crafting as a dependent. Base Building is a peer both ways — neither doc gates on the other.

Forward references owned elsewhere: craft-commit RPC shape, instance-counter issuance/replication, metadata replication → **netcode ADR. Structure costs and stationRange placement semantics → Base Building. Storage formats → Save quick-spec**.

Tuning Knobs

Not tuning knobs (rules, locked by this GDD): free repair (no material cost, ever), group-level recipe knowledge, no queues/batches/automation, gear indestructibility, binary dulling (never gradual), no bag-upgrade item, commit-at-end-of-beat, mark permanence, no craft statistics. Changing any is a design change requiring GDD revision + CD gate.

Knob Default Safe range Too low Too high Interacts with
craftTimeSeconds (cloth recipes)2.0 s1.0–4.0Menu-click feel — the hand-tended beat diesEvery craft becomes a chore; the 15th item dragsPer-recipe data; craftTimeWarnCeiling
craftTimeWarnCeiling10 s5–30Tuning experiments naggedSilent chore-crafts shipEdge Case 16's warn row
stationRange3 u2–6Stand-on-the-exact-tile fiddlinessCrafting (and storage draw) from across the baseThe storage-draw radius is this same value — one knob, deliberately. This GDD owns the knob (ownership pinned 2026-08-27, BB design-review); Base Building consumes it in two semantics at once — its F1 placement cost-draw radius (placement-spot-centred) and F3 station reach (asker-centred). Retuning for crafting reach also retunes BB's placement material-draw — re-check BB's F1 examples and CI gates alongside
durabilityPool (per item; cloth default)300100–1000 (≥ 10 load floor)Repair becomes a per-trip nagRepair never happens; the homecoming rhythm diesDrain fixed at 1/use — pool is the only durability lever
Recipe costsFormulas table±50% per recipeFirst-session guarantee breaks (> ~50 combined)Sword becomes a rounding error (< ~10)Re-run the first-session check after any change; harvesting yield rates
Tier hook valuesF2 ladderbronze DM 1.2–1.5; ladder monotonic per hookEra-turner weightlessCombat TTK compression; harvest ceiling breachRe-run combat's TTK check + the ≤ 2.0 validation after any change

Knob-interaction warnings: recipe costs and harvesting's yield rates form one balance system — the first-session check is the shared invariant. The hook ladder is combat's and harvesting's balance wearing crafting's data — never retune it without re-running their checks. All values live in assets/data/crafting.json, validated per Edge Case 16.

Visual/Audio Requirements

Crafting's visual contract is owned by the art bible; this section states what crafting imposes and cites rather than restates.

The maker's mark is load-bearing scope, not polish (binding): the entire headline fantasy is delivered by this visual system — if it ships thin, nothing else holds the fantasy up. Requirements: the mark (crafter name + "forged N tides ago" + tier) must be readable from the item in every inspection context — tooltip, storage rack, equipped-gear examine — without asking anyone. A per-crafter visual tell at close zoom (a sigil, a stitch accent, derived stably from the crafter name) is desirable; **⚑ art-bible fix-pass item: the mark's visual grammar needs a section, alongside wear states and gear-tier silhouettes. MVP floor (CD A3): crafter name + forged-cycle + tier readable as text in all three inspection contexts (AC-13). The per-crafter visual tell at close zoom is Tier 1 scope but is the fantasy's full delivery — if it slips past Tier 1, revisit whether Fantasy #5 is actually being served.**

Tier silhouettes deliver the era-turner: the art bible's shape-hardening-by-gear-tier rule (its own key decision — structures never harden, gear does) is precisely the mechanism behind "the group's gear silhouette changes that night." Cloth reads soft and rounded; each tier hardens edges. Combat sprites are never tide-tinted, so gear reads identically under every tide state.

Wear states are binary, like the mechanic: a dulled item shows exactly one "worn" silhouette variant (frayed edge accents, shape-only, no gradients — §6.2), matching binary dulling — never a decay gradient the eye must estimate.

The craft beat: station work-loop pose and VFX during craftTimeSeconds (client-predicted); commit lands with a single understated completion beat — a thunk and the item, never a fanfare (the ingot is a fact stated plainly). Era-first crafts get their weight from animation/VFX treatment, never from added duration.

Audio: craft-loop sounds predicted; the completion thunk host-confirmed with the commit; per-material work sounds (weaving vs. hammering) desirable, not MVP-blocking.

Silhouette-first test for crafting assets (pass/fail): at solid black, 64–96 px (§5.4): station identity legible; a station never reads as a threat or a node; gear tier legible on an equipped player by shape hardening alone; the worn variant distinguishable from the fresh one at inspection zoom.

📌 *Asset Spec note: after this GDD is approved, run /asset-spec system:crafting-system.*

UI Requirements

Crafting contributes: the recipe list (every known recipe always visible; known-but-uncraftable entries greyed with **world-fact reason strings** — "no land has offered copper yet" — never "locked", never grind prompts); maker's-mark display in tooltip/rack/examine (name, forged-cycle, tier — and **no craft counts, no leaderboards, anywhere, ever**, Rule 5 restated as a UI ban); a glanceable wear indicator on equipped gear (non-modal accent); and craft-beat progress (a filling motion at the station; cancel-on-move communicated by the stance breaking, never an error dialog; the progress fill vanishes with the stance break — no drain-back animation, no confirmation, matching the true-no-op rule). Reason strings are per-cause (Rule 3's three strings — station / world / affordability — never one generic grey). Copy follows the world-facts tone rule throughout. **Aggregation ban (CD C2): the mark is readable per-item only — no UI may aggregate, sort, group, filter, or count gear by crafterName. A rack sorted by maker is a leaderboard assembled at the presentation layer; Rule 5's ban is on the fact, not merely the field.**

📌 UX Flag — Crafting: this system has UI requirements. In Pre-Production, run /ux-design for the station/recipe/rack screens before writing epics; crafting stories referencing UI must cite design/ux/, not this GDD.

Acceptance Criteria

[UNIT] = EditMode NUnit over pure logic (legality gate F1, durability math F3, config validation, reconcile rules) — the craft pipeline (Rule 7, F1–F4) must be designed pure/DI-testable, no live NGO session required. [INTEGRATION] = NGO runtime, Multiplayer Play Mode + Network Simulator — reserved for commit races under live timing, disconnect handling, and metadata replication. [MANUAL] = human feel/readability judgment, never automated — but scoped to a concrete, checkable claim. All criteria use locked baseline values (cloth tier, MVP) unless the vector specifies otherwise.

Recipes as Data (Rule 1)

Group-Level Recipe Knowledge (Rule 2)

Era Gating as World Offer (Rule 3, F1)

Two Item Classes (Rule 4)

The Maker's Mark (Rule 5)

Provenance Deferral (Rule 6)

Craft Flow — Commit Atomicity (Rule 7)

No Queues, No Occupancy Lock (Rule 8)

Durability (Rule 9, F3)

Structures, Bag Items, Equipping (Rules 10–12)

Instance Table Integrity (Edge Cases 7–11)

Disconnects (Edge Cases 4–6)

Config Validation (load-time, fail loudly — Edge Case 16)

Era Gating — Bootstrap & Supply (Edge Cases 17–18)

Reconcile / Persistence (Edge Cases 19–20)

Formulas — Worked Values & Design-Time Checks (F1–F4)

Provisional-values note: F2's bronze/leather values are provisional — AC-56/AC-57 test only the locked constraints (the 2–4-hit TTK band, the ≤ 2.0 harvest ceiling), never the provisional numbers themselves. Retuning bronze/ leather must not require touching these criteria.

Minimum smoke set (run first)

Four are [UNIT]; AC-19 is [INTEGRATION] but runs headless in Multiplayer Play Mode — together under a minute as a pre-QA-handoff gate, matching the sibling smoke-set shape.

Deliberately not criteria (and why)

Coverage note: Core Rules 1–12 and F1–F4 each have ≥ 1 criterion (Rule 1→AC-1; 2→AC-2–3; 3/F1→AC-4–6; 4→AC-7–8; 5→AC-9–13; 6→AC-14; 7→AC-15–20; 8→AC-21–22; 9/F3→AC-23–30; 10→AC-31; 11→AC-32; 12→AC-33; F2→AC-56–57; F4→AC-59). Every row of Edge Case 16's validation table has a dedicated criterion (AC-40–47c). Edge Case 3 is a closure covered by AC-17's re-sample claim; Edge Cases 21–22 are stated scope closures with no pass/fail surface — not criteria by design; Edge Case 15b (repair disconnect) is structurally impossible and carries no criterion.

Open Questions

# Question Owner Target
1Final Tier 1 ladder lock (bronze/leather/iron values; confirm leather-between-bronze-and-iron ordering; and (c, cross-GDD D1 2026-08-27) bronze's DamageReduction must stay ≥ Reinforced Garb's 0.10 per-item override or the ladder stops being monotonic). **Must resolve (review 2026-08-26): (a) the TTK-variance-vs-era-punch trade — bronze 1.4 already flattens Rusher/Spacer to flat 2-hit and breaks Bulwark's 4-hit boundary, and the variance-preserving value may sit at/below the 1.1 weightless floor: a trade to make knowingly, not a tuning accident; (b) leather's DR checked against all three archetype top damages after rounding — at 0.22 vs bronze 0.12, Bulwark's top hit (26) rounds both tiers to the same 5-mistake budget, so "defense breakthrough" must survive rounding where it matters most**Crafting Tier 1 pass + playtestTier 1
2durabilityPool 300 vs real session lengths — does repair land as an occasional homecoming beat or a nag? (Zero bite at MVP; rhythm only measurable at Tier 1)PlaytestTier 1
3Provenance craft-time summary mechanism + the smelting chain design it rides on (CD gate required for chains — hand-tended ceiling)Tier 1 crafting passTier 1
4~~instanceTag additive extension — Inventory quick-spec sign-off~~ RESOLVED 2026-08-27 — Inventory Rule 2 now defines ItemStack = (itemId, count, instanceTag?), opaque and never merged (cross-GDD review C2)~~Inventory fix-pass~~ ResolvedDone
5~~Durability-event provider rows in Combat + Harvesting~~ RESOLVED 2026-08-27 — combat provides SwingLanded/DamageAbsorbed (host-confirmed only), harvesting provides HarvestSwingLanded (Tier 1) (cross-GDD W2)~~Their fix-passes~~ ResolvedDone
6~~KnownLandTemplates registry contract: seeded starting templates + sole-source authoring rule~~ RESOLVED 2026-08-27 — LDU quick-spec Rules 3–4 adopt both constraints (append-at-φ, seeded start, no removal; sole-source mechanized as loud load warning)~~Land Dock/Undock quick-spec~~ ResolvedDone
7Maker's-mark visual grammar (per-crafter tell derivation, mark placement)Art-bible fix-pass + /asset-specPre-Production
8Free-repair durability was chosen over both specialists' no-durability recommendation. Falsification criterion (CD C1): at Tier 1 playtest, if any player reports returning home primarily to repair (rather than repairing while home for other reasons), or reports carrying/crafting spare gear to avoid dulling, the mechanic has become hands-friction and fails Pillar 4. Pre-agreed response if falsified: raise durabilityPool first (the only lever); if a pool raise big enough to fix it makes dulling unobservable, cut durability entirely — F3 deletes cleanly (effectiveModifier collapses to tierValue; only the event-provider rows in Combat/Harvesting go unused). MVP playtest cannot answer this (zero bite by construction).Tier 1 playtestTier 1
9~~The "crafting runs dry by design; Base Building is the home-facing outlet" claim (CD A4) is unverified~~ RESOLVED 2026-08-26 — ruled in the negative by the Base Building GDD's MVP honesty clause (its Player Fantasy section): MVP base building is a finite stand-it-up project, not a session-to-session outlet. The home-facing dead zone after base-up is real and accepted at MVP; the ongoing-outlet role belongs to Tier 1+ building scope. CD A4's outlet claim holds only for the base-up sessions themselves.~~Base Building GDD author + producer~~ Resolved~~Base Building GDD (next)~~ Done
10Does the gearing-up burst (~6–10 crafts × 2.0 s locked stance, back-to-back in session one) still read as hand-tended, or does "no queues" produce a queue-shaped experience anyway (stand-and-wait ×10)? Lever is craftTimeSeconds (1.0 floor) (review 2026-08-26, M1)PlaytestFirst friend playtest