The cooperative first playable source prototype is implemented and verified on Windows. The owner explicitly requires shared multiplayer and restart persistence. The priority is environmental extraction → portable container → transport/unload → refine → physical component → recycle/reuse. Do not reopen this scope question. See acceptance evidence and launch instructions.
This is a bounded development prototype, not the full long-term game or a Steam distribution release. Terrain excavation follows this loop. Civ13-informed civilization progression remains a later update.
- Workspace:
D:\GitHub\Frontier Systems; integration branchdev-master. - Godot console:
D:\Godot_v4.7.2-stable_win64.exe\Godot_v4.7.2-stable_win64_console.exe. - Read
AGENTS.md, the milestone and adapter contract before editing authority boundaries. - Preserve uncommitted work; the owner authorizes committing/pushing each completed milestone to origin/dev-master before reporting it. Inspect Git status before assuming ownership of changes.
- Windows runtime support is mandatory: no ReactPHP child processes, pcntl or POSIX orchestration. PHP packages remain PSR-4 and strict_types=1.
- First-party code and procedural assets are MIT. No SS13/Civ13 source/assets were imported. Reference authorization does not provide MIT redistribution rights; Baystation source must not be supplied to AI.
Physical floor walls add owned-plate placement/removal, conserved v7 records, shared crew dismantling, prototype keepouts, client static colliders and server swept-wall movement validation. Legacy aggregate walls remain separate. Room sealing, atmosphere topology and arbitrary surfaces remain pending. Concurrent milestone assignments cover placement feedback, checkpoint recovery and terrain domain ownership in separate chats/worktrees.
Construction coverage and next adapters: every current inventory definition has a fabrication route or equivalent, including new backpacks, pouches, crowbars and shovels. All equipment can be hand-assembled near the workbench from its raw bills without printer energy. Trusted storage outputs create real child containers. Tool bindings v2 migrate old snapshot fingerprints. CI includes coverage checks to catch future spawn-only items. World fixtures still need spatial construction adapters.
The first solid-stock autolathe is implemented. See autolathe contracts, playable route and continuation. It uses an independently replaceable head, conserved frame hopper, physical plates/empty parts, trusted design fabrication, canister recovery and existing grid/inventory/tool owners. Fabrication is currently a single command transaction; timed queues and additional materials remain later work. Catalog v2 is additive; original workshop fingerprints migrate on restore.
src/core/production/: finite 25 kg resource fixture, recipe catalog, energy, timed reservations, chemical vessel bounds, extraction/cargo, factory/recycler transactions and bounded retained receipts. Production owns all resource payload mass.src/core/inventory/: physical canisters/plates, owned graph, prospective payload-mass validation and derived load caches. Payload is counted once; stable item identity carries it through transfer/drop/pickup.src/adapters/network/: WebSocket host, server-minted authenticated contexts, scoped observations, read-only client production projection and asynchronous checkpoint intent. Socket writes happen outside fixed ticks. Two invite slots map to persistent crew bodies.src/adapters/persistence/: alternating checksummed checkpoints, startup restore and worker-thread disk I/O. Capture detached snapshots outside tick callbacks; workers never mutate canonical state.src/app/first_playable_bootstrap.gdandscenes/first_playable.tscn: dedicated host mode or graphical remote client. Legacy main.tscn is still the standalone laboratory.src/presentation/production/: source picking, readable recipe controls and seven-stage session guide. Batch-completion notifications are volatile presentation events, not durable rewards/provenance.tools/launch-first-playable.ps1: ignored cryptographic invite keys, named save directories and explicit source-scene launch.data/production/catalog.v1.json, production schemas and adapter documentation codify contracts. Existing inventory fixture is preserved; shared.production seeds carriers only in new worlds.
Real two-client acceptance passes: invite isolation, competing extraction, overcapacity/missing-input/power rejection, outage pause/cancellation, refining, physical component creation/recycling, physical-item restore, worker save confirmation, corrupt-slot recovery, active-batch restart and retained retry. The graphical route completes with local physics and authenticated guide commands using Forward+/D3D12 and Compatibility/OpenGL. Six focused inventory/health/control regression suites passed. Exact commands and limits are in acceptance evidence.
- Collect human two-player usability feedback and profile this active route before changing tick rates. Recipe ticks currently mean different wall-clock durations at 60/72/90 Hz; migrate/retune deliberately.
- Expand durable-storage guarantees if required: transactional/journal persistence and identity binding. Current saves are periodic/manual checkpoints, not per-command durability.
- Integrate existing GodotSteam identity/lobby adapter behind transport contracts before Steam distribution; preserve offline community-host mode.
- Add sustained extraction/tools, carrier construction, terrain excavation and spatial blueprint transactions after the current loop.
- Improve movement collision authority, prediction, reconnect UX and server load limits before wider/public play.
- Run Linux CI, standalone export and optional Quest 3 checks when those environments are available. Do not substitute Windows evidence for them.
Platform chat/voice, DiscordPHP/TwitchPHP integration, full survival/medicine, LLM station automation, ships and civilization progression remain staged roadmap work. Existing foundations are not evidence that these complete features already ship.
Two fixed invite bodies; host binds loopback and remote access needs a TLS proxy. Client collision is local; server enforces region/speed and command reach. Guide progress is session-only. Autosaves every five seconds; sudden termination can lose newer actions. Catalog fingerprint and tick timebase must match saved state. No standalone executable export or public deployment was made. No commit or push was performed for this milestone session.
Production state_revision represents command/material/configuration transactions and output completion; remaining_ticks changes alone do not advance it. Preserve this distinction so network controls can pause/cancel active batches without becoming stale every frame.
PlayerInventoryPanel adds scoped storage browsing, equipment/hand controls, inspection, tray actions and active extractor use. The host opts into inventory observation v3, while local APIs retain v2 by default. New cooperative fixtures seed backpacks/extractors; loaded saves are untouched. The window defaults to 1920×1080 and uses a draggable tabbed sidebar and existing theme controller. See ../architecture/player-inventory-ui.md for contracts and limits. Only editor import/script parsing were performed for this update; prior gameplay acceptance evidence predates it. Next verification should cover both crews, nested mass/capacity/cycle rejection, wrong-hand/tool rejection, tool extraction, restart retention and resized layouts.
PlayerInputSettings (PlayerControls autoload) owns named InputMap defaults, bounded local preferences and cursor capture ownership. Left Alt temporarily exposes the cursor; settings and focus loss release navigation. PlayerControlsPanel supports keys/chords, mouse, controller button/axis rebinding, sensitivity and defaults. Cooperative shortcuts and core UI navigation are configurable. Desktop cameras and world selection no longer depend on hard-coded physical keys/buttons. See ../architecture/player-controls.md. Only editor import and script parsing were performed; interactive verification remains pending. OpenXR action-map settings are separate future work.
Equipment fabrication/salvage is complete for the bounded cooperative source build: trusted EquipmentBlueprintCatalog, canister/extractor blueprints, atomic factory inventory preparation, production snapshot/observation v3 and separate structural mass. V1/v2 saves migrate without granting items. Manufactured carriers/tools can be nested, transferred, used, checkpointed and salvaged; starter equipment is not salvaged through this path. See equipment-fabrication-milestone.md and ../architecture/equipment-fabrication.md.
The domain test, expanded real two-client acceptance, graphical fabrication/load/backpack inspection route (Forward+ and Compatibility) and six regression suites passed on Windows. Prior UI/controls notes describe earlier verification scope; current evidence additionally covers the manufacturing UI and nesting, not interactive Alt/controller rebinding. Next implement sustained extraction reservations/tool wear, then terrain excavation. Public release, Linux execution evidence, Steam identity and exports remain pending. Commit ec3e320 is the previous baseline; these milestone changes remain uncommitted unless separately requested.
Owner clarified that all tools need independently reusable, repairable, replaceable and upgradable parts; routine wear should be low for space-tier gear. src/core/tools now supplies ToolComponentCatalog, ToolPartState and ToolAssemblyLedger with material grades, mount interfaces, prerequisite capabilities, retained detached parts, integer/remainder wear, damage and maintenance plans. Default profiles cover extractor, shovel and crowbar; a controller enables automation/scanning only when required functions exist. See ../architecture/modular-tool-components.md and data/tools/catalog.v1.json.
This is an independent domain foundation, not a registered live simulation subsystem. Current tool items and world snapshots are unchanged. Only editor import/script parsing and JSON/diff checks were performed. Next wire an authenticated component owner, physical detached-part inventory and an atomic material-preserving migration of 1.5 kg extractor structure into its frame/head/drive. Do not duplicate aggregate structural mass or allow client repair plans to bypass energy/ownership checks. Then implement sustained extraction with wear applied per completed work cycle, not per tick.
The owner requested committing/pushing the current changes and checking GitHub CI. tool_components_test.gd was added to the Windows/Ubuntu workflow and passes locally; it covers independent part replacement, mounted ownership, capability dependencies, low/fractional wear, damage/maintenance and restore. Earlier import-only notes describe the previous verification scope. Live component integration remains pending.
The gameplay and component changes were committed and pushed to origin/dev-master (equipment/components commit 4659c4d; earlier cooperative baseline ec3e320). Subsequent CI fixes select scalar executable paths, wait for Windows GUI Godot processes, assert oversized HTTP header rejection before transmitting a body, and initialize missing Godot class metadata for standalone profiling checks. The optional phpDocumentor PHAR distributor is disabled during Windows dependency installation because its GPG import fails there; signed documentation generation remains enabled on Linux, while Windows formatting/unit/PHAR checks remain enabled. Local full Godot workflow scripts, PHP formatting/unit/PHAR and profiling integration (including missing class cache and GUI executable) passed. See the GitHub CI workflow for current remote evidence. The modular tool domain remains separate from live inventory integration.
ToolSimulationSystem is now the canonical component-condition owner (priority 250). Tools are linked to physical inventory through trusted inventory-bindings.v1.json; components partition the existing starter shell or manufactured structural material, never additional mass. Production prepares and commits completed-extraction wear and paid workstation maintenance alongside its resource/energy transaction. Inventory active-tool checks derive capabilities from operational parts. Missing legacy tool owners migrate saved scalar condition without resetting broken gear. Modern tool snapshots, inventory associations and conserved material cross-links validate before restore. Scoped host observations and bounded client validation drive component inspection/maintenance in Inventory.
See tool-maintenance-milestone.md for evidence and player instructions. Earlier statements that components were domain-only describe the old baseline. Next implement detached physical parts and atomic material-preserving fit/replace/upgrade transactions, then sustained extraction reservations. Whole-tool fabrication/salvage already synchronizes parts but does not grant loose part inventory. The existing crowbar door lab still uses a synthetic adapter. The latest published pre-integration baseline is b310d6e, with all 13 GitHub jobs green at https://github.com/Valgorithms/Frontier-Systems/actions/runs/38083044658; new work needs its own CI run after publication.
The owner now authorizes committing/pushing each milestone progress update to origin/dev-master; this is recorded in AGENTS.md. Live maintenance commit 17ac8c5 was pushed and its GitHub CI passed (run 38087208944).
Physical parts, manufacturing/recycling and fit/detach/replace/grade/module upgrades are implemented for manufactured extractors. Production snapshot/observation v4 adds conserved loose_parts; tool observation v2 adds slots, loose parts and part blueprint quotes. Tool ledger/snapshot v1 remain unchanged. Modular blueprints derive from trusted zero-base-mass inventory bindings; pinned ordinary structures remain fixed. Canonical component material stock must equal installed structure or loose physical item payload exactly. Detached items retain part IDs/condition/remainders; whole-tool salvage returns current upgraded material. Fully stripped tools restore without respawning defaults. Starter tool shells remain maintenance-only until a deliberate provenance migration.
See tool-parts-milestone.md for instructions/contracts/evidence and the remaining limits. tool_parts_runtime_test.gd, existing regression scripts, expanded two-client tray transfer/disk-checkpoint/recycle acceptance and graphical inventory manufacture/head replacement/controller fitting passed locally on Windows. Next implement sustained extraction reservations and interruption/restart recovery, then terrain excavation. Capability availability from controllers does not implement scanning, automation or LLM execution by itself.
Production v5 adds a ToolExtractionWork binding to the fixture's single job slot. Source matter is reserved up front; output, energy and component wear commit per completed 1 kg/60 tick cycle. Capacity, tool/hand, carrier ownership, reach, consciousness and power loss pause work. Restore pauses safely, requiring explicit resume; owner cancellation releases only unprocessed source matter. Network bindings are scoped through tool_extraction; public job summaries omit identities. See sustained-extraction-milestone.md for bounds and evidence. Next implement privacy-aware event logging via DiscordPHP's Monolog instance, then terrain excavation. Use per-machine queues and account/session binding in later production expansions.
Sustained extraction commit 1fb3108 was pushed; its GitHub CI passed. The next slice adds WorldEventOutbox (opt-in idle HTTP, bounded queue, no canonical mutation) and packages/event-logging (PSR-4, Monolog 3, React promises). DiscordPhpEventBridge attaches to an existing DiscordPHP getLogger/getLoop rather than creating another client/logger. Default policy separates public events/chat, scoped private chat and staff-only LLM traces/command outcomes; native guild text-channel permission checks reject unapproved access. Typed events are consumed before legacy unclassified exporters. Queues, deadlines, retries, retained deduplication and failure counters are bounded; unknown kinds/downgrades/credential fields reject.
See event-logging-milestone.md and ../../packages/event-logging/README.md for setup/API/evidence and honest delivery limits. No real Discord sends were made; configure guild/channel IDs and approved roles/users/private scopes, attach after a complete ready cache and set host URL/token. Larger model traces, durable audit retention and production multi-host authentication need further work. Chat/LLM event hooks are ready but are not proof those gameplay systems are complete. Next return to terrain excavation.
Production v6 embeds a catalog-pinned MachineryWorkshop record. Physical frames, modules, cables and portable one-canister sockets are backed by conserved iron bills. Hand assembly bootstraps solar generators, printers, refineries, routers and finite-source extractors. Expander modules enable larger prints and additional sockets. Deployed machines run independent canister-fed batches with per-tick energy use, output capacity checks and explicit restart resume. Generator/local buffers and shared cable budgets supply a deterministic bounded grid. The Construction tab queues authenticated intents; settled procedural presentation uses one static body per frame and no cable rigid bodies.
See modular-resource-machinery-milestone.md for construction instructions, owner contracts, version migration, units, tests and remaining placement/engineering limits. The existing workbench remains a bootstrap path. Machinery physical output appears in the frame storage and requires retrieval/fitting; it is not automatically operational. Material provenance and nested cargo mass are counted once. No new raw matter is granted to old saves.
The owner prioritizes this construction/resource loop before terrain excavation and away missions. Next improve placement feedback/collision authority and ship-relative attachment adapters; do not imply arbitrary normals/rotation, rigid-body manipulation, fuel generators or full automation already exist. Multiplayer acceptance includes shared generator control and durable assembly checkpoint recovery.
See ci-cd.md for the discovered/timeout-bounded headless suite, all-package Composer metadata checks, pinned Actions, reports/artifact retention, aggregate CI required gate, Windows/Linux development exports and manual promotion of exact verified artifacts into a draft prerelease. Export feature tags start the cooperative scene. Branch protection and environment reviewer rules are repository settings; workflow code does not configure those settings. Do not claim exported-host smoke checks establish graphical/Steam/VR acceptance.
Expanded deployed printers manufacture existing trusted equipment blueprints and synchronize ToolSimulationSystem component provenance atomically. Portable chemistry adds a separate 10 g electrolysis recipe that fits separate 2 L gas receivers; bulk recipes retain their old meanings and pause safely under pressure limits. Procedural models now show machine roles, fitted canister contents, output and live energy/status using cached static assemblies. Construction selects machines by clicking and suppresses duplicate generic machine trays/overlapping resource labels. See modular-resource-machinery-milestone.md and reports/resource-workshop/workshop.png. Reproduce via tools/godot/capture_resource_workshop.gd; the capture first executes the complete finite-material integration and then prints through the actual remote client UI. New chemistry/presentation regressions are automatically discovered by CI. The bounded resource-workshop loop is covered; do not claim future terrain/ship placement, fuel generators, continuous print animation or production-release gates are finished.