diff --git a/CHANGELOG.md b/CHANGELOG.md index dd0f5e8e0..e3bdaeffb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,18 +6,30 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +## [v0.1.31] — 2026-04-05 + ### Added +- Star map click-through popup with GTTR excerpt, system profile, and adjacent systems (#780) +- Edge-only-on-selected visibility rule for star map — default shows no edges, selected system shows adjacents only (#780) +- Cultural diversity sweep — 10 systems enriched, Afrikaans/Dutch subversions, D-168 Iserlohn IP evaluation (#766, #773) +- Per-body GTTR entries for 25 moons and stations at hub systems (#782) - Shared Python module `tooling/db/common.py` — centralizes DB path resolution, config loading, and WAL-mode connection setup (#777) - `ensure_venv()` auto-activation for Python tooling scripts with third-party dependencies (#777) - `make lint-python` target running ruff on `tooling/` (#777) -- `make setup-venv` target for Python venv creation (#777) - Python/ruff lint block in pre-push hook (#777) +- Zero-warnings policy in pr-push and pr-review skills; `.gdlintrc` with max-line-length 120 ### Changed -- Split monolithic `atlas.rs` (2119 lines) into 8 focused modules under `src/bin/atlas/` — no behavior change (#776) +- Decomposed main.gd (28KB → 13.4KB) into SnapshotConsumers, DialogueCoordinator, SnapshotHandler (#775) +- Split monolithic `atlas.rs` (2119 lines) into 8 focused modules under `src/bin/atlas/` (#776) +- Replaced persistent team worktrees with ephemeral sprint branches (`sprint-{N}/{team}`) +- `start-sprint.sh` integrated into sprint-start skill — auto-creates worktrees and opens Ptyxis tabs ### Fixed -- Pre-existing `NameError` in `decisions_sync.py` (missing `import os`) resolved via shared module extraction (#777) +- All 354 gdlint warnings resolved — zero warnings across all linters (#783) +- Nova Estrada and Entremeio wiki entries enriched to batch standard (#774) +- Auto-unassign done tickets on sprint close (`tooling/db/sprint stop`) +- Pre-existing `NameError` in `decisions_sync.py` resolved via shared module extraction (#777) - Unused imports removed from `assign-astro-ids.py`, `generate-star-map.py`, `test_quaternius_raw.py` (#777) ## [v0.1.30] — 2026-04-05 diff --git a/docs/backups/settledreach.db.backup b/docs/backups/settledreach.db.backup index 7e0fa6ff5..4b7efb634 100644 Binary files a/docs/backups/settledreach.db.backup and b/docs/backups/settledreach.db.backup differ diff --git a/docs/sprints/sprint-31/retro.md b/docs/sprints/sprint-31/retro.md new file mode 100644 index 000000000..8852ec826 --- /dev/null +++ b/docs/sprints/sprint-31/retro.md @@ -0,0 +1,51 @@ +# Sprint 31: Bedrock — Retrospective + +**Period:** 2026-04-05 (single day) +**Velocity:** 9/9 tickets completed (100%) +**PRs:** 4 merged (#110 copy, #111 server, #112 ci, #113 client) + +## What Shipped + +- **#766** Cultural diversity sweep — 10 systems enriched across 3 corridors, Afrikaans/Dutch subversions, per-body GTTR depth +- **#782** Per-body GTTR entries for 25 moons and stations at hub systems +- **#774** Nova Estrada and Entremeio enriched to batch standard +- **#773** D-168 Iserlohn IP evaluation — retained with documented rationale and Altena alternative on record +- **#780** Star map click-through popup with GTTR excerpt, edge-only-on-selected visibility rule +- **#775** main.gd decomposed from 28KB/644 lines to 13.4KB/322 lines (SnapshotConsumers, DialogueCoordinator, SnapshotHandler extracted) +- **#783** All 354 gdlint warnings resolved — zero warnings policy achieved +- **#776** atlas.rs split from 2119-line monolith into 8 focused modules +- **#777** Shared Python DB module (common.py), ruff linting, pre-push integration + +## What Went Well + +- **First sprint on ephemeral branches** — `start-sprint.sh` created worktrees, opened tabs, auto-ran `/sprint-start`. No cross-boundary issues, no stuck agents with uncommitted work, no stale index.lock collisions. The worktree migration paid off immediately. +- **Zero warnings achieved** — gdlint went from 354 warnings to 0, ruff is clean, clippy is clean. Pre-push now catches all three. Quality baseline established. +- **4 teams in parallel, same day** — copy, server, ci, client all delivered PRs within hours. The ephemeral branch model handled parallel execution cleanly. +- **Review cycles were fast** — server needed 2 rounds (changelog fix), ci and copy merged on first review, client merged on first review. No busywork rounds. +- **Process improvements shipped inline** — sprint-start process fix (team branches must not run pr-review) came in with the copy PR and merged naturally. Auto-unassign on sprint close fixed a recurring bookkeeping issue. + +## What Hurt + +- **SI agent died during sprint planning** — had to redo planning manually. The agent's death left a stale index.lock on main, which was the exact problem the worktree migration was designed to prevent. Root cause: SI was spawned in the main worktree, not an isolated one. Planning agents should use `isolation: "worktree"` in future. +- **Ptyxis tab placement** — first `start-sprint.sh` run opened 3 windows instead of tabs in the current window. Fixed quickly (switched `--new-window` to `--tab`), but the initial experience was messy. +- **Cargo.lock conflicts on merge** — server branch had a stale Cargo.lock from pre-v0.1.30. Required manual `git checkout` before merge. This will recur until sprint branches are created after the version bump. + +## What We Learned + +- **The cascade is load-bearing** — redirecting Sprint 31 from tycoon/character work back to Phase 1 wiki completion was the right call. The star map popup only works because 301 systems have GTTR content. Skipping ahead would have produced empty popups. +- **God object decomposition is safe in GDScript** — the autoload parse-order constraint was the main risk. The `load()` inline pattern works, and non-autoload classes can use `class_name` freely. Documented as convention in CLAUDE.md. +- **Copy PR review scope rule continues to work** — Paula's Fragua warning and Miri's GJ-1111 sync issue were correctly classified as content tickets, not PR blockers. Zero scope creep on copy reviews. + +## Carry-Over + +(none — 100% completion) + +## Action Items + +1. **Done:** Auto-unassign on sprint close added to `tooling/db/sprint stop` (committed) +2. **Done:** Zero-warnings policy added to pr-push and pr-review skills +3. **Done:** `start-sprint.sh` fixed to open tabs in current window +4. **Backlog:** Panel height bug in star map popup for hub systems (cosmetic — Hoshe flagged) +5. **Backlog:** `show.rs` SQL duplication maintenance trap (Tyre flagged — ticket-worthy) +6. **Backlog:** qdrant/audio connectors still have local `load_config()` — incomplete shared module adoption +7. **Future:** Planning agents should spawn with `isolation: "worktree"` to avoid main index.lock diff --git a/project.yaml b/project.yaml index 6596f79ad..d79a76520 100644 --- a/project.yaml +++ b/project.yaml @@ -1,5 +1,5 @@ name: The Settled Reach -version: 0.1.30 +version: 0.1.31 repository: settled-reach diff --git a/server/Cargo.toml b/server/Cargo.toml index 2dd7e012d..be25212cb 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "settled-reach-server" -version = "0.1.30" +version = "0.1.31" edition = "2021" [dependencies]