Commit Graph
80 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 9cdc86d65d fix(data): star map bodies + population from systems.db, not wiki
Generator now queries bodies/stations tables directly for habitable
count, inhabited count, and total population. All 301 systems have
data — unsettled systems show "0 habitable · 0 inhabited" and "0".
Fixed stale worktree path to systems.db.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:11:39 +02:00
jpmschweitzerandClaude Opus 4.6 ea57a9da70 fix(db): auto-unassign done tickets on sprint close
sprint stop now clears assigned_to on all done tickets in the closing
sprint. Agents don't clean up after themselves — this was causing
5 bookkeeping warnings every sprint.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 10:20:31 +02:00
jpmschweitzer bee93ddbb7 Merge remote-tracking branch 'origin/sprint-31/client' 2026-04-05 10:17:15 +02:00
jpmschweitzerandClaude Opus 4.6 8eb9e0a383 feat(ui): star map click-through with wiki/GTTR popup and edge visibility
Show system profile popup on select: name, star type, hop distance,
corridor, GTTR excerpt, body count, population, adjacent systems.
Edge rendering changed to show no edges by default, only selected
system's gate lines on click. Star map data extended with wiki fields
for all 301 systems.

Ticket: #780

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:59:18 +02:00
jpmschweitzerandClaude Opus 4.6 2300d9659d fix(tooling): remove unused imports flagged by ruff
Drop unused hashlib, math, and os imports from assign-astro-ids,
generate-star-map, and test_quaternius_raw to pass ruff clean.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 09:40:02 +02:00
jpmschweitzerandClaude Opus 4.6 980201fb49 chore(db): wire ensure_venv() into connector scripts
Add venv auto-activation to audio_batch, audio_connector,
image_connector, qdrant_connector, and trellis_connector.
Scripts re-exec into .venv/bin/python when invoked outside
the venv, with a friendly error if .venv is missing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 09:39:55 +02:00
jpmschweitzerandClaude Opus 4.6 d86ebada8d refactor(db): extract shared DB module from duplicated patterns
Create tooling/db/common.py with resolve_db_path(), load_config(),
get_connection(), and ensure_venv(). Update ticket, sprint,
sqlite_connector.py, and decisions_sync.py to import from common
instead of duplicating. Fixes pre-existing NameError in
decisions_sync.py (missing import os). Add pyproject.toml with
ruff config (ruff==0.15.9, CVE-clean) and dev dependencies.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 09:39:46 +02:00
jpmschweitzerandClaude Opus 4.6 dd75203d11 refactor(process): replace persistent team worktrees with ephemeral sprint branches
Persistent worktrees (server, client, copy, audio, visual, ci, planning,
maintenance) caused agents crossing boundaries, stuck agents leaving
uncommitted work, and index.lock collisions. Replaced with ephemeral
sprint branches (sprint-{N}/{team}) and worktrees created on demand.

Changes:
- New start-sprint script replaces start-session (dynamic tabs per active team)
- Sprint teardown integrated into sprint-start skill (A1c step)
- SR_DB_PATH env var for database access from any directory
- CLAUDE.md team boundaries rewritten (scope-based, not directory-based)
- Agent Rule 0 updated to team scope dirs instead of worktree isolation
- PR review uses git show instead of cross-directory reads
- Briefing template updated for sprint-{N}/{team} branch naming
- Deleted worktree-update skill (obsolete)
- Removed WORKTREE_TEAM env var and cross-directory Read permissions
- All 8 persistent worktrees removed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 00:33:02 +02:00
jpmschweitzerandClaude Opus 4.6 c94c5d7acb fix(client): address PR #109 review — 6 warnings + 5 suggestions
Star map (W1-W3, S3):
- _process visibility guard + dirty flag (no redraw when hidden/unchanged)
- _system_hash masked to 31-bit positive range
- Extracted _find_nearest_system() shared helper

game_state.gd (W4):
- Inline load() in apply_snapshot() replaces per-tick overhead; safe at
  runtime because script is already in resource cache

Data pipeline (W5-W6):
- Script-relative path resolution via __file__
- --check mode + make check-star-map staleness target

Minor (S1-S2, S5):
- Removed redundant bone_idx assignment
- Simplified double-negative test assertion
- Documented autoload parse-order convention in CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 00:12:48 +02:00
jpmschweitzerandClaude Opus 4.6 aed513eb71 feat(ui): star map insert module — concentric hop-ring view (#674)
New StarMapRenderer: 301 systems in concentric hop-rings from player
location, sector-colored, click-to-select with info panel, pan/zoom.
Integrated into HUD (hidden by default), insert state propagation
wired in main.gd. Data enriched from systems.db + star-map.json via
tooling/generate-star-map-data.py regeneration script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:36 +02:00
jpmschweitzerandClaude Opus 4.6 bc168c861a feat(client): hair highlight swatch + manifest JSON for exports (#719, #720)
#719: Add display-only hair highlight swatch (Option B) — auto-derived
from primary tint, non-interactive (MOUSE_FILTER_IGNORE).

#720: Remove DirAccess.open() fallback scanning (breaks in PCK exports).
Fully populate manifest.json (11 body types, 14 hair, 4 heads, 4
eyebrows, 8 clothing). Add tooling/generate-character-manifest script
and make manifest target for regeneration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:23 +02:00
jpmschweitzerandClaude Opus 4.6 bc8b01bbe6 fix(atlas): address PR #102 review — wiki headers, injection fix, proposal updates
Wiki headers: fix star type mismatches on GJ 53A (K→G), GJ 136 (M→G),
GJ 625 (K→M), GJ 682 (K→M), GJ 3728B (G→K), GJ 1128 (K→M).
Tooling: fix shell injection in atlas-commit-and-sync (use sys.argv).
Proposals: GJ625 M2→M2V, GJ432A heritage descriptor, GJ667C triple-star
note, GJ53A G5Vp peculiar note.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:00:10 +02:00
jpmschweitzerandClaude Opus 4.6 ff4a055ae5 feat(tooling): add atlas-update-field and atlas-commit-and-sync scripts
atlas-update-field: update system-level fields across star_systems,
system_gates, and system_history tables with field whitelist.
atlas-commit-and-sync: full per-system pipeline (verify → wipe → commit
→ sync-wiki → git commit). Updated atlas SKILL.md with new commands.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:39:31 +02:00
jpmschweitzerandClaude Opus 4.6 690587a894 chore(atlas): add atlas-check diagnostic + handle unusual star_type in verify
atlas-check shows planet count, body summary, and flags for quick
proposal diagnostics. atlas-verify now accepts "unusual" as a valid
star_type alongside "binary".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 09:11:03 +01:00
jpmschweitzerandClaude Opus 4.6 5a0f62dff7 fix(atlas): allow named uninhabited bodies in atlas-verify
Uninhabited bodies may have proper names for lore reasons — the check
was too strict.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 08:29:08 +01:00
jpmschweitzerandClaude Opus 4.6 1d1555a31b fix(tooling): atlas-verify — handle binary/dwarf stars, exclude hand-authored systems
- star_type check now skips binary systems (star_type="binary" is valid)
- Strip dwarf prefixes (d, sd) before comparing spectral class letter
- Case-insensitive comparison for lowercase spectral classes
- Exclude GJ0.json (Sol) and GJ1221.json from verification (hand-authored)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 08:22:44 +01:00
jpmschweitzerandClaude Opus 4.6 73c81c1217 chore(tooling): consolidate atlas tooling + harden pre-push hook
- Rewrite atlas-verify as proper Python script (was inline Python in
  bash with path injection risk). Adds star_type/spectral_class
  consistency check. Supports multiple files via glob.
- Add atlas-names and atlas-systems-done query helpers (clean versions
  of what the copy branch created — supersedes atlas-helpers.sh)
- Wire atlas-verify into Makefile (make atlas-verify, pre-pr-content)
- Update atlas skill references to point to the script
- Merge diff-based skip into pre-push hook: only lint client/ or
  server/ when those dirs actually changed in the push. Combined with
  existing directory-existence guards for cold worktrees.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 08:06:44 +01:00
jpmschweitzerandClaude Opus 4.6 feb333f3e7 chore(tooling): add star-map wireframe + wipe-bodies script
docs/wireframes/star-map.f0 — Frame0 wireframe for the galaxy
navigator (created during wireframing session).
tooling/wipe-bodies.sh — utility to clear bodies/stations tables
in systems.db (preserves star_systems).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:47:26 +01:00
jpmschweitzerandClaude Opus 4.6 e05444f708 data(atlas): complete hop-2 body catalogs + corporations table
Hop-2 systems authored: Tessera/Corvel (legal archive, 1.3B),
Proxima/Ancora (first colony, Zheng He lore, 400M),
Meridian/Provenance (boomtown, 150M), Barnard's Star/Verada
(commuter town, 2B, wiki prose adjusted for surface-majority pop),
Prometheus/Galen+Chiron+Site Anterior (longevity monopoly, 55K),
Cygni B/Ferrath+Kihl Works (shipyards, 1.8B, 7 combines named),
Cairn (the anomaly — 7 apertures, 2 garden planets, zero population).

New: corporations table in systems.db schema. 20 records populated
from wiki/corporations/ + DSMC + 7 Cygni B combines (Vethara,
Kossler-Drun, Amberan Works, Talavec & Sons, Orren-Skel, Marhoud
Fabrication, Drevast Extraction).

Atlas CLI: fixed planet count defaults (6-8 minimum per star type,
was 2-4). Miri added Zheng He lore to Proxima wiki.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 23:23:12 +01:00
jpmschweitzerandClaude Opus 4.6 ca676e8e66 feat(db): add atlas Rust CLI for celestial bodies + stations
Rust binary (server/src/bin/atlas.rs) with commands: show-system,
show-body, show-station, list-bodies, list-stations, add-body,
add-station, stats, populate. Reads from server/data/systems.db.

Wrapper at tooling/atlas, skill at .claude/skills/atlas/SKILL.md.
Scope note: atlas will grow to cover the full geographic hierarchy
(planetary surfaces, settlements, districts) as the cascade progresses.

Also: removed stale star_systems table from settledreach.db (belongs
in systems.db only) and ran initial populate pass (329 bodies + 301
horizon stations across 301 systems).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:40:37 +01:00
jpmschweitzerandClaude Opus 4.6 093b24e38e feat(assets): face-based segmentation pipeline + solidify for hair/clothing
Segmentation:
- Face-based exclusive assignment (no overlap, no caps needed)
- Hips split from torso (pelvis as own segment)
- Torso_upper independent (spine_03 + clavicle, not a variant)
- Clavicle moved from arm_upper to torso_upper

Hair pipeline:
- Solidify modifier (20mm) for scalp hair volume
- Normal recalculation before solidify for consistent direction
- Eyebrows/facial hair NOT solidified
- Fixed mask generation (was outputting black, now white)

Clothing pipeline:
- Solidify modifier (25mm) for clothing thickness
- Peasant shoes added from Fantasy pack

Tooling:
- convert_outfit.py with solidify support
- inspect_glb.py, check_hair_symmetry.py for debugging
- Segment reference distribution locked
- Q-063 footsteps VFX filed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:43:04 +01:00
jpmschweitzerandClaude Opus 4.6 00479fab09 fix(assets): address PR #98 review — all 7 items
Warning fix:
- Remove torso_upper from hides in 3 coverage.json files
  (coveralls_basic, jacket_utility, shirt_henley) and the generator
  script — redundant when torso_variant is "full"

Suggestions addressed:
- Add pants_cargo authoring note about foot segment distinction
- Add pipeline_log.json provenance output to Surface Deform batch
  pipeline (tracks method per variant: surface_deform/shrinkwrap/copy)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:22:33 +01:00
jpmschweitzerandClaude Opus 4.6 4a605ffea4 feat(assets): add Surface Deform batch pipeline and clothing authoring scripts
Three new Blender/Python scripts for the clothing production pipeline:
- blender_surface_deform_batch.py: fits a reference clothing GLB to all
  11 body types via Surface Deform modifier in headless mode
- blender_create_clothing_refs.py: procedurally creates placeholder
  reference meshes from average_m body segments
- setup_clothing_metadata.py: generates coverage.json and
  reference_mask.png for each clothing item

Surface Deform headless bind confirmed working in Blender 5.0 via
temp_override — upgrades confidence from MEDIUM to HIGH (#710).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:56:38 +01:00
jpmschweitzerandClaude Opus 4.6 0b1bfe6a96 fix(assets): address PR #96 review — all 8 items
- Fix stale 21→18 segment count in architecture doc, script docstrings,
  and disk budget table (critical — both reviewers)
- Add average_m/README.md noting role as clothing reference body
- Add __main__ guards to diagnostic scripts
- Preflight-check all source paths in blender_process_bodies.py
- Document solid-white hair masks as v0.2 placeholder for multi-region
- Add fallback size comment for head mask generation
- Add bald_mask.png (1×1 black) for sidecar convention consistency
- Document child non-uniform scale rationale (Y=0.72 vs XZ=0.75)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:24:50 +01:00
jpmschweitzerandClaude Opus 4.6 a60493c2f7 chore(assets): add Blender headless pipeline scripts for character assets
Adds 8 scripts to tooling/ for the Sprint 28 character asset pipeline:

- blender_segment_body.py: segments a FullBody GLTF into 18 body-part
  GLBs using BMesh vertex-weight selection + 1-ring boundary expansion
- blender_process_bodies.py: batch driver for all 11 body types (6 direct
  + 5 auto-scaled forks: thin, heavy, child)
- blender_process_heads.py: processes 4 OnlyHead .blend files into GLBs
  + 1024x1024 solid-white mask PNGs (D-159, D-160)
- blender_process_hair.py: converts 20 GLTF hairstyle/eyebrow exports
  to accessory GLBs + mask PNGs, creates bald.glb placeholder
- blender_inspect_body.py: diagnostic — lists mesh objects + vertex counts
- blender_inspect_vgroups.py: diagnostic — lists vertex groups on skinned mesh
- glb_strip_utility_nodes.py: post-process GLBs to strip utility nodes
  (Icosphere, WGT-*, DEF-*, ORG-* meshes) from the GLTF scene graph
- check_icosphere.py: diagnostic — reads GLB JSON chunk to verify node list

All Blender scripts require flatpak Blender via tooling/blender wrapper.
Scripts must live in project directories (flatpak sandbox blocks /tmp/).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 15:07:55 +01:00
jpmschweitzerandClaude Opus 4.6 bcd5887b82 fix(client): address PR #95 review — 8 items
SLOT_TO_BONE expanded to 12 slots (earring_l/r, necklace, wrist_l/r).
_clear() outline teardown ordering fixed. toon_masked.gdshader: removed
cull_disabled, added ALPHA output. _attach_to_bone() returns node instead
of bool. skin_tone clamped in from_dict(). D-160 segment count 15→17.
Blender scripts: docstrings + __main__ guards. Reload test tightened.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:59:23 +01:00
jpmschweitzerandClaude Opus 4.6 23ec1ddebd feat(client): CharacterVisualDescriptor and compositor (#703, #704)
Add CharacterVisualDescriptor (11-variant BodyType enum, wire format
encode/decode, body_type_key mapping) and CharacterVisual compositor
(runtime 3D character assembler with slot architecture, BoneAttachment3D,
clothing coverage, recolor mask loading, skin tone tinting, bone
validation). Includes 64 unit tests and Blender utility scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:48:47 +01:00
jpmschweitzerandClaude Opus 4.6 64e188384b chore(config): add spike gitignore rules and Blender wrapper
Add .gitignore entries for spike Godot caches, import artifacts,
and vendor asset downloads. Add tooling/blender wrapper that resolves
flatpak/native Blender installs and auto-converts relative paths to
absolute for flatpak sandbox compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:28:12 +01:00
jpmschweitzerandClaude Opus 4.6 98f8cbab0d fix(db): fix Trellis connector for updated Gradio API
- Add session_hash to all API calls (maintains gr.State between
  image_to_3d and extract_glb)
- Pass is_multiimage=False at position 2 (9-param image_to_3d)
- Pass output_buf=None at position 0 (3-param extract_glb)
- Document full API parameter reference and failure modes
- Add trellis-batch.sh for gentle sequential batch generation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 01:20:54 +01:00
jpmschweitzerandClaude Opus 4.6 4516a3bac4 chore(skills): streamline image-gen skill, update config
Simplified image-gen SKILL.md, removed obsolete DDS/style references
(replaced by Gemini API connector). Updated audio_connector, gitignore,
and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:35:01 +01:00
jpmschweitzerandClaude Opus 4.6 e836be1ad4 feat(skills): add glb-gen skill and Trellis/image connectors
New skill for converting concept images to game-ready .glb models via
Trellis (image-to-3D) and Blender post-processing (scale normalization,
material setup, recolor mask generation).

Connectors: trellis_connector.py (Gradio API), image_connector.py
(Gemini API for concept art).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 23:33:49 +01:00
jpmschweitzer 06d9abbc63 Merge remote-tracking branch 'origin/copy'
# Conflicts:
#	content/npc-conversations/overheard.yaml
#	server/content/global/zone-types/administrative_civil.ron
#	server/content/global/zone-types/administrative_judicial.ron
#	server/content/global/zone-types/archaeological_site.ron
#	server/content/global/zone-types/commercial_market.ron
#	server/content/global/zone-types/commercial_transit.ron
#	server/content/global/zone-types/detention_facility.ron
#	server/content/global/zone-types/diplomatic_elite.ron
#	server/content/global/zone-types/entertainment_hospitality.ron
#	server/content/global/zone-types/entertainment_venue.ron
#	server/content/global/zone-types/extraction_platform.ron
#	server/content/global/zone-types/extraction_space.ron
#	server/content/global/zone-types/extraction_surface.ron
#	server/content/global/zone-types/industrial_manufacturing.ron
#	server/content/global/zone-types/industrial_processing.ron
#	server/content/global/zone-types/medical_facility.ron
#	server/content/global/zone-types/military_garrison.ron
#	server/content/global/zone-types/port_fishing.ron
#	server/content/global/zone-types/port_maritime.ron
#	server/content/global/zone-types/port_space.ron
#	server/content/global/zone-types/port_surface.ron
#	server/content/global/zone-types/research_station.ron
#	server/content/global/zone-types/residential_dispersed.ron
#	server/content/global/zone-types/residential_station.ron
#	server/content/global/zone-types/residential_surface.ron
#	server/content/global/zone-types/rural_aquaculture.ron
#	server/content/global/zone-types/rural_orbital.ron
#	server/content/global/zone-types/rural_pastoral.ron
#	server/content/global/zone-types/security_checkpoint.ron
#	server/content/global/zone-types/wilderness_frontier.ron
#	server/content/npc-conversations/overheard.ron
#	server/content/npc-conversations/overheard.yaml
#	server/content/npc-conversations/overheard.yaml.deprecated
#	tooling/validate-ron
2026-03-17 12:31:38 +01:00
jpmschweitzerandClaude Opus 4.6 3a86b8bdad fix(copy): address PR #93 review — content fixes
Warnings fixed:
- Delete orphaned overheard.yaml (Hoshe)
- Remove validate-ron line 60 spurious single-slash regex (Hoshe+Paula)
- Replace "the car" with "the departure point" in diplomatic_elite (Miri)
- Soften dock worker accusation in ovh_ifr_003 (Miri)
- Fix relationship_context Colleague→Superior in ovh_hos_002 (Miri)

Suggestions applied:
- Fix CHANGELOG count 15→16 conversations
- Update review doc status to "all issues resolved"
- Add economic/density comment to 5 files missing it
- Fix military_garrison Social→OffDuty context on mess table primitive
- Rewrite residential_station trait-description as observable behavior
- Add gatebuilder ruin note to archaeological_site header

Follow-up tickets: #695, #696, #697

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:19:34 +01:00
jpmschweitzerandClaude Opus 4.6 c30baee373 feat(db): add cross-culture name pool collision checking to validate-ron
New --check-name-collisions mode scans all culture-*.ron files and
reports given/family names appearing in multiple culture pools.
Exits 1 on collision with machine-readable output. Sprint 26 review
caught 6 overlaps manually — this automates the check.

Ticket: #665

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:58:00 +01:00
jpmschweitzerandClaude Opus 4.6 b2ef56440f refactor(simulation): move content/ under server/ (#669)
Content files (RON templates, YAML campaigns, gauntlet data) are consumed
exclusively by the server. Colocate them at server/content/ and update all
path references in Rust source, tooling scripts, and schema files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 10:31:20 +01:00
jpmschweitzerandClaude Opus 4.6 9bc5cb21a5 fix(tooling): star map 16:9 ratio, circular fade, trimmed margins
Canvas now 16:9 with circle filling height. Radial fade gradient uses
userSpaceOnUse for true circular shape. Hop 15+ folded into final ring.
Margins trimmed to fit content.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:17:19 +01:00
jpmschweitzerandClaude Opus 4.6 a6ce4797d8 fix(tooling): star map generator outputs both SVG and PNG
Script now auto-converts to PNG after generating SVG. Tries magick,
convert, or rsvg-convert in order.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:12:02 +01:00
jpmschweitzerandClaude Opus 4.6 f9373be3ba feat(tooling): add star map SVG generator
Reproducible concentric-ring star map: Gateway at center, hop rings
radiating outward, sectors in cardinal wedges (N/E/S/W), alternating
band colors per sector, hop 15+ folded into final ring with fade-out
zone. Sol pinned due west.

Run: python3 tooling/generate-star-map-svg.py
Output: docs/diagrams/design/star-map-concentric.svg

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 11:05:34 +01:00
jpmschweitzerandClaude Opus 4.6 00de36a4b7 fix(data): replace deprecated GJ 702A with 1221-DXP9 in star registry
GJ 702A was a deprecated binary system entry. Replace with GJ 1221,
a real catalog star — DXP9 peculiar magnetic white dwarf at 20.03 ly.
Dead-end topology connecting to EZ Aqr (GJ 866A).

Updates: star-map.json, systems.db, gj-catalog-real.json, catalog.md,
EZ Aqr topology reference. New wiki entry and Drifter's Guide entry.
System count restored to 301.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 09:53:31 +01:00
jpmschweitzerandClaude Opus 4.6 ab45618c15 chore(wiki): add find-stubs script for batch planning
Replaces manual Explore agent searches with a fast Python script
that finds unwritten wiki stubs by sector and hop range. Reads
star-map.json for topology and wiki stubs for star type/sector/wave.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:24:28 +01:00
jpmschweitzerandClaude Opus 4.6 e5911838c0 chore(tooling): update tooling for GJ ID migration and wiki sync
Update wiki_sync.py and process-wiki-system-changes to remove
astronomical_id references. Add migrate-s-to-gj.py migration script.
Update generate-stubs.py and validate-ron for new schema.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 03:55:01 +01:00
jpmschweitzer 23d9ff0a58 Merge remote-tracking branch 'origin/main' into planning
# Conflicts:
#	CHANGELOG.md
#	content/_meta/README.md
#	content/_meta/npc-authoring-style-guide.md
#	wiki/_templates/cultural-group.md
#	wiki/_templates/institution.md
#	wiki/_templates/star-system.md
#	wiki/characters/devra.md
#	wiki/characters/drin.md
#	wiki/characters/harek.md
#	wiki/characters/lera-sessik.md
#	wiki/characters/maret-korr.md
#	wiki/characters/naia-tamm.md
#	wiki/characters/nils-davan.md
#	wiki/characters/pell.md
#	wiki/characters/renn.md
#	wiki/characters/resha.md
#	wiki/characters/sabel.md
#	wiki/characters/sera-venn.md
#	wiki/characters/torek-lintar.md
#	wiki/characters/voss.md
#	wiki/star-systems/krenn/index.md
2026-03-14 00:24:53 +01:00
jpmschweitzerandClaude Opus 4.6 cb6d14ced4 feat(db): add wiki sync pipeline and process-wiki-system-changes
New data flow: wiki → star-map.json + SQLite.
- tooling/process-wiki-system-changes: unified script that reads
  wiki, updates star-map.json topology, syncs to SQLite
- tooling/db/wiki_sync.py: wiki frontmatter parser + SQLite upsert
- generate-stubs.py: updated for full-frontmatter wiki format
- Removed extract-csv.py (replaced by SQLite queries)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 00:23:59 +01:00
jpmschweitzerandClaude Opus 4.6 983d8037d1 feat(docs): assign real GJ catalog stars to all 300 systems
Replaced fabricated designations with real Gliese-Jahreiss entries
sourced from HYG Database v4.1. Selection: 215 G/K/F + 75 M + 10
unusual (white dwarfs, flare stars, subdwarfs) = 300 systems.

Habitable star types (G/K/F) are preferred at each distance shell,
spreading usable planets wider through the network. M-dwarfs fill
remaining slots — station economies, mining, frontier outposts.

Distance range: 4.2-46.8 ly. 51 named stars including Tau Ceti
(Gateway), Alpha Centauri, Delta Pavonis, Barnard's Star, Sirius,
Procyon, Arcturus, Pollux, Vega, Fomalhaut.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 23:38:55 +01:00
jpmschweitzerandClaude Opus 4.6 3c39d1a35a feat(docs): add wiki stub system for 300 star systems
Generated wiki stubs at docs/wiki/systems/{GJ-id}/index.md for all
300 systems. Each stub has YAML frontmatter (54 machine-readable
columns) + markdown body (5 authored text sections) + derived fields.

13 columns pre-filled from star-map.json (identity, gate infrastructure,
location, wave, earth_proximity). 55 columns await authoring.

Includes:
- tooling/wiki/generate-stubs.py — template renderer, idempotent
- tooling/wiki/extract-csv.py — wiki→CSV extractor with fill rate report
- docs/design/star-systems.csv — initial CSV at 19.3% completion

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 23:24:17 +01:00
jpmschweitzerandClaude Opus 4.6 26276a59f4 feat(docs): assign GJ catalog IDs to all 300 star systems
All systems use Gliese-Jahreiss (GJ) designations as primary catalog.
35 real nearby stars assigned by proximity to Gateway; 265 fabricated
across GJ sub-catalogs (main, southern, supplement, post-settlement).

Notable assignments:
- Gateway (S-001): GJ 71 / Tau Ceti
- Alpha Centauri A/B (S-090): GJ 559A, binary junction at hop 3
- Delta Pavonis (S-265): GJ 780, core dead_end at hop 2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 23:21:26 +01:00
jpmschweitzerandClaude Opus 4.6 5f266ae002 chore(meta): merge main into planning, resolve CHANGELOG conflict
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 23:02:07 +01:00
jpmschweitzerandClaude Opus 4.6 ff9014ffc0 feat(docs): add star map gate topology for 300 systems
300-node gate network with 334 edges, generated from seed config then
hand-balanced and tuned. Gateway (S-001) is the first hop from Earth
with 4 active + 1 dormant Sol aperture.

Final topology: 20% dead_end, 14% spur_end, 31% through_route,
10% loop_member, 19% junction, 6% hub. Frontier sectors have
distinct linear corridors; core is densely interconnected.

Includes generation pipeline (generate, sculpt, patch-core, tune),
seed config, and star-map-plan.md with algorithm documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 22:57:32 +01:00
jpmschweitzerandClaude Opus 4.6 453983ffd2 chore(docs): remove content-converter and content-ron Makefile target
The YAML→RON converter and its make target are v0.1 artifacts superseded
by the v0.2 RON-first generator pipeline. content-ron/ was already
gitignored; this removes the tool that generated it.

Closes #667.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 15:00:46 +01:00
jpmschweitzerandClaude Opus 4.6 2f8218400d chore(skills): tea-comment @filepath support and docs update
tea-comment now accepts @/path/to/file.md syntax to read comment body
from a file, avoiding $() subshells that break permission matching.
Updated pr-review skill and tea-cli rules with the new pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 09:44:11 +01:00