A script scanned every tracked doc, rule, skill, agent, hook and source file for tooling/ paths that no longer exist, skipping historical records (sprints, discussions, workshops, governance, generated wiki pages). It found 62. The ones that tell a reader what to RUN now name the reach verb: - The atlas skill still sent agents to tooling/atlas, atlas-verify, atlas-update-field and atlas-commit-and-sync — about forty lines, all retired in T-1285. They now name the `reach atlas` verbs, and the skill records that commit-and-sync STAGES by default (--commit to commit) and takes --corridor as an option. - The clerk agent named tooling/clerk-review (now `reach dev clerk`). The Si and clerk briefings sent those agents to the retired tooling/db/decision and sqlite-query CLIs and to decisions/*.md paths that moved to governance/ in the pql migration. They now name pql. - The ticket-cli rule documented `pql decisions read`, which does not exist; `show` already includes the body. - The culture authoring guide and the RON sources name `reach validate ron`, with the same arguments as before. - The 41 Blender payloads' usage lines ran the retired tooling/blender wrapper, and the docstrings still cited pre-carve-out paths. They now read `reach blender run <payload>`. - Doc comments in server/, client/, wiki TOMLs and the domain modules. What is left is deliberate: "Formerly …" provenance, dated plans and findings docs, the retired-pipeline doc, and a build-artefact path. project.yaml 0.4.14 (mirrored to the client). Comment-only, but four touched files are in the canvas-version registry (trait_catalog_reader.rs, since T-1289, canvas_sources.py itself, and two client files). The gate is path-based and has no override. The previous push was rejected on exactly this. Three of the edits are stamped ledger sources, so systems.db is regenerated and the stamp is fresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
118 lines
6.9 KiB
YAML
118 lines
6.9 KiB
YAML
name: The Settled Reach
|
|
# Version scheme: 0.{phase}.{n} — phase = active Development Cascade phase (D-166).
|
|
# Phase 4 (deterministic world generation) is active.
|
|
# 0.4.1-tagged step canvases carried lake_margin_q's flat absolute-ceiling
|
|
# semantics (pre-per-basin-normalization) and were written to real disk
|
|
# caches during T-1188 eyeball runs — 0.4.2 forces those entries to miss.
|
|
# 0.4.2-tagged Global/Region-rung step canvases sampled the coastline
|
|
# position raw (no coast_warp_px) — T-1160 applies the warp at orbital
|
|
# sampling, changing orbital-rung canvas bytes (elev_q/temperature_dc/
|
|
# moisture_q shift near coasts) — 0.4.3 forces those cached entries to miss.
|
|
# 0.4.3-tagged canvases predate the D-255 extent inversion (a rung now fixes
|
|
# the canvas EXTENT and the gridunit spacing falls out, rather than the
|
|
# reverse). District/Quarter/Block/Chunk kept the same 960x540 cell counts
|
|
# through that change, so their cache keys are byte-identical while a District
|
|
# canvas now covers 3.6 km of ground instead of 1,966 km — a warm cache would
|
|
# silently serve pre-inversion canvases. 0.4.4 forces those entries to miss.
|
|
# 0.4.4-tagged GLOBAL canvases are all 2x1 — `serve_step_canvas_request` was
|
|
# still zeroing Global's wire extent (a pre-extent-inversion sentinel), so
|
|
# every Global request resolved to a two-cell canvas regardless of viewport.
|
|
# Those entries were also cached under a key that ignored extent, so they
|
|
# answered every later request forever. 0.4.5 forces them to miss.
|
|
# 0.4.5-tagged canvases carry pre-T-1237 river courses: one course per D8 HOP
|
|
# rather than one per river (build_paths walks whole headwater->mouth rivers
|
|
# now). The hop-shaped entries survived that fix because it changed only server
|
|
# and client code, never this version — so Ferrath Global replayed 375 fragments
|
|
# with a 106 km longest run, all of them below D-261's read-as-a-line floor, and
|
|
# drew NOTHING, while a cold cache on the same build produced 73 whole rivers
|
|
# with a 1,644 km trunk and drew 18. Diagnosed as T-1239. 0.4.6 forces them to
|
|
# miss.
|
|
#
|
|
# THE PATTERN, now four bumps deep: a change to how a canvas is GENERATED is
|
|
# only half the change — the other half is this line. Nothing enforces the
|
|
# pairing, so a canvas-generation commit that leaves this version alone ships a
|
|
# silent regression that reproduces only on machines with a warm cache. The
|
|
# capture harness no longer hides it (tests/run-visual isolates user:// per run,
|
|
# T-1239), but a real player's cache is still governed by this number alone.
|
|
# 0.4.7 carries NO canvas-generation change — it is the gate that enforces the
|
|
# pairing described above, arriving (T-1242). tooling/canvas_sources.py lists the
|
|
# paths, tooling/check-canvas-version rejects a push that touches them without
|
|
# moving this line, and the registry includes ITSELF so that narrowing it and
|
|
# changing a canvas file in one push still demands a bump. That self-inclusion is
|
|
# why this bump exists: adding the registry trips its own rule. The version is
|
|
# spent rather than special-cased, because "this change is obviously harmless" is
|
|
# the reasoning that produced all five regressions above.
|
|
# 0.4.8 also carries NO canvas-generation change: a test-only edit to
|
|
# composition.rs (its conservation assertion was a tautology) tripped the T-1242
|
|
# gate, because that gate is path-based and cannot tell test code from generator
|
|
# code. Second no-op bump in two days — the false-positive rate is real, and is
|
|
# the price of the ruling that a false negative costs a week. Revisit if it
|
|
# becomes noise; do NOT add an override to dodge it.
|
|
# 0.4.9 is a REQUIRED bump, not a gate formality (T-1213). The disk cache stores
|
|
# the DECODED canvas, and the decode was silently dropping the `relief_q` plane —
|
|
# so every 0.4.8-and-earlier entry physically lacks the field, and would keep
|
|
# rendering the deep rungs as a flat wash even against a build that reads it.
|
|
# This is the first bump in the series where a warm cache is wrong about CONTENT
|
|
# rather than merely stale.
|
|
# 0.4.10 changes how a canvas is PAINTED, not how it is derived, so cached
|
|
# entries are still valid content — but the client step_canvas cluster is in the
|
|
# T-1242 registry and the rule is bump-when-touched, so it moves. Cheap: one
|
|
# round of misses against a map that now reads as terrain.
|
|
# 0.4.11 — per-class cover marks (copse, thicket, rocky outcrop). Paint again,
|
|
# not derivation; bumped because the client step_canvas cluster is in the T-1242
|
|
# registry.
|
|
# 0.4.12 changes DERIVED BYTES, not paint (T-1240): Region canvases now truncate
|
|
# every octave the rung cannot reconstruct, so a 0.4.11 Region entry holds a
|
|
# relief field this build would never produce. Warm caches are genuinely wrong
|
|
# here, not merely stale.
|
|
# 0.4.13 — stipple contrast (T-1194). Paint only; bumped because the client
|
|
# step_canvas cluster is in the T-1242 registry.
|
|
# 0.4.14 carries NO canvas-generation change: comment-only edits (retired tool
|
|
# paths renamed to their reach verbs, T-1289/T-1253) touched
|
|
# server/src/atlas/trait_catalog_reader.rs, canvas_sources.py itself, and two
|
|
# client files in the registry. Path-based gate, spent rather than dodged.
|
|
version: 0.4.14
|
|
repository: settled-reach
|
|
|
|
|
|
description: >
|
|
Top-down life-sim set in an original science fiction universe. Asymmetric
|
|
information and occlusion-based perception from a single-character
|
|
perspective, with a Rimworld-style storyteller. Systems interactions like
|
|
The Sims, combat and visuals like single-character Rimworld, world
|
|
generation inheriting from Dwarf Fortress and NMS, economy inspired by
|
|
X4/EVE. Every system is interactable but ignorable — the world is alive
|
|
for any given run.
|
|
|
|
setting: >
|
|
The Settled Reach — a network of star systems connected by Founder Gates.
|
|
Neural lattice technology enables soft immortality, forking, and
|
|
re-embodiment.
|
|
|
|
development: >
|
|
Built outside-in along the six-phase Development Cascade (D-166): wiki
|
|
content and star map, economics layer, planetary maps and atlas,
|
|
deterministic world generation (active), player control and in-world
|
|
rendering, room-level detail.
|
|
|
|
architecture:
|
|
client: Godot 4 (GDScript)
|
|
server: Rust with bevy_ecs (simulation server)
|
|
transport: subprocess/IPC via TCP with MessagePack serialization
|
|
protocol: length-prefixed MessagePack frames (4-byte big-endian)
|
|
determinism: ChaCha20 seeded RNG, deterministic tick processing
|
|
|
|
simulation:
|
|
tick_rate: 10 ticks per game-minute
|
|
time_model: 4 day phases (Morning, Afternoon, Evening, Night)
|
|
grid: dual-scale (0.5m simulation tiles, 1m visual tiles)
|
|
visibility: symmetric shadowcasting + forward/peripheral/blind vision cone
|
|
knowledge: per-entity knowledge graphs with confidence decay
|
|
|
|
content:
|
|
format: YAML with JSON Schema validation
|
|
structure: campaigns/systems/stations/districts hierarchy
|
|
npcs: 10-axis model (7 essential + 3 supporting) with CombatCapability
|
|
dialogue: tagged line pools with 4-layer relational filtering
|
|
population: 30% flat / 50% mundane triangles / 20% intrigue-entangled
|