Files
settled-reach/project.yaml
T
jpmschweitzerandClaude Opus 5.5 c597ec9131 docs(tooling): T-1253 — sweep the live references to retired tool paths
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>
2026-09-23 20:13:58 +02:00

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