Commit Graph
261 Commits
Author SHA1 Message Date
jpmschweitzer 30f6666d7d Merge remote-tracking branch 'origin/main' into visual 2026-02-12 23:28:25 +01:00
jpmschweitzerandClaude Opus 4.6 ebcaff1a05 chore(config): remove client .uid/.import gitignore additions
These patterns were added for the renderer (now separate). Client
gitignore rules are the client team's responsibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:26:39 +01:00
jpmschweitzerandClaude Opus 4.6 921d2aef0d refactor(assets): move sprite renderer to standalone project at renderer/
Separates the 3D-to-2D render pipeline from the game client into its
own minimal Godot project. No autoloads, no plugins, no game code —
just the render scene, models, textures, and export script. Eliminates
SimBridge parse errors and gdUnit4 scanning during renders.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:26:16 +01:00
jpmschweitzerandClaude Opus 4.6 8a1b10786f chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:22:38 +01:00
jpmschweitzerandClaude Opus 4.6 3a01d9659f chore(config): add .uid and recursive .import to gitignore
Godot 4.6 generates .uid files for script resources and .import files
in subdirectories. Both are editor-local and should not be tracked.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:22:16 +01:00
jpmschweitzerandClaude Opus 4.6 2ed8fb5b37 feat(assets): add 3D-to-2D sprite render pipeline and /render-sprite skill
Godot @tool render scene that takes a textured 3D model and produces
2D sprites at 1024/256/64 from 4 cardinal directions with outlines
applied at working resolution. Camera at "the angle" (-72.5deg ortho).
Includes two POC wall models with Nano Banana textures, CLI wrapper
script with headless import step, and .uid files added to gitignore.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:21:41 +01:00
jpmschweitzerandClaude Opus 4.6 0358eedbc5 docs(workshops): archive art direction & mood board workshop (3 rounds + closing)
Four-agent workshop (Araminta, Ozzie, Miri, Gore) establishing visual
identity for The Settled Reach. 9 mood board images, 16 art direction
principles, 10 candidate decisions (D-042 through D-051), v0.1.1 sprite
plan. Post-workshop technical session resolved 3D render pipeline,
resolution chain (1024/256/64), and camera angle lock ("the angle").
Pipeline test samples included: Era 1 institutional wall + bar green
wall rendered through the full Nano Banana -> 3D model -> sprite chain.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:21:09 +01:00
jpmschweitzer fd775878e7 Merge remote-tracking branch 'origin/copy'
# Conflicts:
#	decisions/content.md
2026-02-12 19:15:07 +01:00
jpmschweitzerandClaude Opus 4.6 2827dd3a83 fix(decisions): update stale Hael references to Naia in D-034 and D-036
Caught by Miri during copy PR #15 review.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:14:46 +01:00
jpmschweitzerandClaude Opus 4.6 010c4158f9 docs(copy): address PR #15 review feedback
Miri (critical):
- Fix 3 stale "Hael" references in decisions/content.md (D-034, D-036)

Paula (suggestions):
- Flag dual-fire 15-30s delay as tuning target in smuggler moral arc
- Clarify MIRROR NPCs can be wrong (lied to) without being dishonest
- Add implementation note for Path C deferred follow-up fork
- Note detective-NPC dialogue rotation variants for post-v0.1
- Clarify detective vs smuggler moral_weight criteria in entity attributes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:07:24 +01:00
jpmschweitzer 16ee660b5d Merge remote-tracking branch 'origin/main' into copy
# Conflicts:
#	CHANGELOG.md
2026-02-12 19:04:21 +01:00
jpmschweitzer d17a3ff060 Merge remote-tracking branch 'origin/main' 2026-02-12 18:55:25 +01:00
jpmschweitzer 5102e40a17 Merge remote-tracking branch 'origin/maintenance'
# Conflicts:
#	.claude/skills/review-pr/SKILL.md
2026-02-12 18:45:27 +01:00
jpmschweitzerandClaude Opus 4.6 d153035621 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:42:06 +01:00
jpmschweitzerandClaude Opus 4.6 f1bc79a0d2 refactor(skills): trim duplication and improve progressive disclosure
- search-docs: remove content already in CLAUDE.md (basic commands,
  endpoints, examples), keep only unique operations and workflows
- ticket: remove duplicated access method and SQL wrapper docs, add
  missing show --brief command reference
- review-pr: extract branch-type reviewer profiles to
  references/reviewer-profiles.md, reducing SKILL.md from 287 to 187
  lines while preserving all reviewer specifications
- create-skill: remove empty .gitkeep placeholders from unused
  references/ and scripts/ directories

Reviewed all skills against /create-skill conventions. Main findings
were CLAUDE.md content duplication wasting context tokens and a
progressive disclosure opportunity in the longest skill.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:41:53 +01:00
jpmschweitzerandClaude Opus 4.6 905fc764f5 fix(skills): pass file contents to non-Bash reviewer agents in review-pr
Paula, Miri, Ozzie lack Bash access and cannot git show from branches.
Skill now documents which agents can self-serve and instructs the caller
to read and paste file contents into prompts for agents that can't.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:41:07 +01:00
jpmschweitzer ae40d8bd2c Merge pull request 'feat(server): Sprint 3 Know — NPC model, pathfinding, routines, observation events' (#14) from server into main 2026-02-12 18:20:40 +01:00
jpmschweitzer c83d129703 Merge remote-tracking branch 'origin/main' into server
# Conflicts:
#	CHANGELOG.md
2026-02-12 18:20:32 +01:00
jpmschweitzerandClaude Opus 4.6 526696206e chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:18:17 +01:00
jpmschweitzerandClaude Opus 4.6 ad653cffc3 refactor(server): fix clippy warnings from Rust 1.93
- Use #[derive(Default)] + #[default] instead of manual Default impls
  for FacingDirection, KnowledgeState, RelationshipState, EntityVisibility
- Replace manual modulo check with .is_multiple_of()
- Collapse nested if in shadowcast symmetry check

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:18:04 +01:00
jpmschweitzerandClaude Opus 4.6 2fd16f08b0 fix(server): address PR #14 review — ordering, docs, version pin
- Fix NpcPlugin system ordering: .before(compute_paths) instead of
  .after(advance_tick) so PathRequests are picked up same frame
- Fix stale doc comment in interpretation.rs: system runs BEFORE
  knowledge events, not after
- Add TODO(v0.2) on RelationshipGraph about information boundary
  limitation for multiplayer
- Document cardinal-only movement as deliberate v0.1 choice
- Add comment on manhattan_distance u32::MAX fallback for cross-z
- Pin pathfinding crate to 4.11

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:17:55 +01:00
jpmschweitzerandClaude Opus 4.6 1761e1aa11 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:16:10 +01:00
jpmschweitzerandClaude Opus 4.6 e6bf06fb40 chore(meta): update changelog
Sprint 3 "Know" deliverables: dual lens guide, MIRROR spec, smuggler
voice card + moral arc, PC-as-NPC spec, Triangle 1 fork, content
directory structure, interaction verbs, wow moments checklist, NPC
pattern mapping, entity attribute updates, wiki maintenance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:15:55 +01:00
jpmschweitzerandClaude Opus 4.6 941547082f feat(skills): add branch-type reviewer routing to review-pr
Review-pr now selects reviewers based on branch type: server/client
get Hoshe+Tyre (code), copy gets Hoshe+Paula+Miri (narrative+lore),
visual gets Hoshe+Araminta (art direction), audio gets Hoshe+Ozzie
(player experience). Hoshe always present as QA baseline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:15:55 +01:00
jpmschweitzerandClaude Opus 4.6 d06c0e0f4e docs(design): add smuggler voice card and moral arc spec
Wave 4 deliverable for #382 (subsumes #310):
- Voice card: register parameters, 5 anchors, 4 anti-patterns, paired
  comparison examples, display constraints, authoring checklist
- Moral arc: 4 phases (Comfort→Doubt→Reckoning→Compromise), FactId
  gates, monologue trigger rules, Kael intersection mapping

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:12:31 +01:00
jpmschweitzerandClaude Opus 4.6 d9448b5af0 docs(wiki): add Triangle 1 fork, PC-as-NPC spec, expand Drin to Tier 2
Wave 3 deliverables:
- Triangle 1 Hub Power Volume Escalation fork (#377): 3-path smuggler
  decision (escalate/stabilize/mediate), NPC state changes, ~41 dialogue lines
- PC-as-NPC unified spec (#381): starting knowledge/relationship graphs,
  tell inversion, orientation monologue, 9-step conversion checklist,
  v0.1 smuggler + detective briefs (29 items each)
- Drin Rosta Tier 2 expansion (#397): full 10-axis profile, 6 voice lines,
  formalized Triangle 2 + Triangle 5 roles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 18:06:07 +01:00
jpmschweitzerandClaude Opus 4.6 58c7d882bc docs(design): add dual lens guide, MIRROR spec, interaction verbs, wow moments checklist, NPC pattern mapping
Wave 2 of Sprint 3 "Know":
- #261: Dual Lens Authoring Guide (7 chapters, smuggler/detective voice registers)
- #380: THE MIRROR pattern spec with Naia Tamm reference implementation
- #396: Pattern/Motivation sections added to all 18 NPC wiki pages + index
- #400: v0.1 wow moments checklist mapping 6 D-039 moments to deliverables
- #402: Interaction verb spec (7 verbs, priority resolution, architecture)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:55:57 +01:00
jpmschweitzerandClaude Opus 4.6 03884164b3 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:52:29 +01:00
jpmschweitzerandClaude Opus 4.6 9c3c32e854 feat(perception): add observation event generator
Implements ticket #239 for Sprint 3:
- ObservationTrigger enum: RoutineDeviation (NPC not at expected
  routine location), Absence (expected location visible but NPC
  missing), NewEntity (unknown entity in LOS)
- ObservationEventQueue resource with push/drain/len/is_empty
- generate_observation_events system runs after emit_observation_events
  but before process_knowledge_events so it can compare current
  snapshot against previous-tick knowledge state
- Populate PerceptionPlugin with ObservationEventQueue resource and
  system registration with correct ordering constraints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:52:02 +01:00
jpmschweitzerandClaude Opus 4.6 0b599ed662 feat(simulation): spawn 3 NPCs with full component bundles
Implements ticket #84 for Sprint 3:
- Replace single bare NPC with 3 distinct NPCs: dock worker (16,13)
  with full 4-phase routine and MovementSpeed(2), field tech (14,18)
  with partial routine, stationary guard (18,14) with no routine
- Register all entities (player + 3 NPCs) in EntityRegistry
- Populate RelationshipGraph with colleague and rival edges
- Add NpcPlugin to app for routine system registration
- Add multi-entity visibility tests: 3 NPCs in LOS all visible,
  NPC behind wall excluded from snapshot

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:51:50 +01:00
jpmschweitzerandClaude Opus 4.6 f186cec264 fix(bridge): add error variants and diagnostic logging for IPC
Implements ticket #341 for Sprint 3:
- Add DeserializationWithDump and MutexPoisoned variants to BridgeError
- Replace .expect("mutex poisoned") with graceful error propagation
  in LocalBridge and TcpBridge (4 locations)
- Log first 256 bytes as hex dump on deserialization failure for
  debugging malformed payloads
- Classify errors in receive_bridge_inputs: BrokenPipe/ConnectionReset
  → clean shutdown, MutexPoisoned → shutdown, DeserializationWithDump
  → skip frame (recoverable)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:51:38 +01:00
jpmschweitzerandClaude Opus 4.6 f899624103 feat(simulation): add A* pathfinding and NPC path following
Implements tickets #237 and #238 for Sprint 3:
- Add pathfinding crate dependency for A* algorithm
- PathRequest component triggers compute_paths system which uses
  cardinal-neighbor A* with manhattan distance heuristic
- ComputedPath component with step navigation (next_step, advance,
  is_complete) and PathBlocked marker for no-route cases
- MovementSpeed component throttles NPC movement (ticks_per_step)
- follow_paths system advances NPCs along computed paths, creating
  MoveIntent per step; cleanup_path_blocked removes markers after
  one tick
- System ordering: input → compute_paths → follow_paths →
  validate_movement → cleanup_path_blocked → advance_tick

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:51:27 +01:00
jpmschweitzerandClaude Opus 4.6 3c04a0c568 feat(npc): add structured NPC data model, relationships, and daily routines
Implements tickets #86, #87, #88 for Sprint 3:
- Replace stub string/f32 NPC fields with typed enums and integer
  types for D-010 determinism (WantKind, SecretSeverity, Skill, etc.)
- Add RelationshipGraph global resource with BTreeMap<(StableId,
  StableId), RelationshipEdge> for efficient prefix queries
- Add DailyRoutine with phase-based RoutineEntry and PreviousDayPhase
  resource for detecting day-phase transitions
- Create NpcPlugin that initializes relationship graph, day-phase
  tracking, and registers check_phase_transition system

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:51:15 +01:00
jpmschweitzerandClaude Opus 4.6 5fdb7f9c53 docs(design): add content directory structure, update entity attributes, stub Nils Davan
Wave 1 critical blockers for Sprint 3:
- #384: Content directory structure design doc (10 sections + 2 appendices,
  defines canonical IDs, 8 JSON schemas, 3-tier validation pipeline, migration path)
- #374: Update entity-attributes.md (14→16 keys, secret→leverage rename,
  add 4 role-perspective keys, archetype interpretation note)
- #376: Nils Davan off-stage NPC stub (GHOST+HANDLER pattern, lattice messages,
  Triangle 1 role, relationship to Kael)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:45:16 +01:00
jpmschweitzerandClaude Opus 4.6 64fea5139a docs(wiki): rename Hael to Naia Tamm, apply canonical full names, standardize shortcodes
Wave 0 wiki maintenance for Sprint 3:
- #372: Rename Hael → Naia Tamm across 16 living wiki files (phonetic collision fix)
- #371: Apply canonical full names to 11 single-name NPC headers and roster table
- #375: Replace hub_m_ → terminal_m_ shortcodes, add shortcode reference table,
  situation overlap rules, and mood exclusivity rules to monologue guide

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:45:04 +01:00
jpmschweitzerandClaude Opus 4.6 1333926ac2 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:38:20 +01:00
jpmschweitzerandClaude Opus 4.6 128dd0f16d feat(skills): spawn team agents from sprint briefing in start-sprint
Replace the solo plan-mode step with team orchestration: parse the
Agents line from the sprint briefing, create a team, create tasks
from tickets with dependency chains, and spawn all listed agents as
background teammates. User confirmation gates the spawn.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:38:06 +01:00
jpmschweitzerandClaude Opus 4.6 4b180c0c0d chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:15:33 +01:00
jpmschweitzerandClaude Opus 4.6 ef091de281 docs(sprints): regenerate sprint 3 briefings from database
Previous briefings referenced tickets not assigned to sprint 3.
Rewrote all four team briefings (server, client, joint, copy) to
match actual sprint 3 ticket assignments in the database.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 17:15:16 +01:00
jpmschweitzerandClaude Opus 4.6 4e155da234 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:54:38 +01:00
jpmschweitzerandClaude Opus 4.6 60ca9d951c feat(db): add database backup/restore tooling
- tooling/db-backup: copies shared settledreach.db to docs/backups/
  for git tracking (main branch only)
- tooling/db-install: restores from backup for new clones
- make db-backup / make db-install Makefile targets
- worktree-update skill runs make db-backup after merges on main

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:54:21 +01:00
jpmschweitzerandClaude Opus 4.6 0784d484c4 chore(config): remove $REPO_ROOT env var, use relative paths
Claude Code's CWD is always the worktree root, so all script
invocations work with plain relative paths (db/connectors/ticket,
db/connectors/qdrant-search, etc.). The REPO_ROOT environment
variable and its settings.local.json definitions are no longer needed.

Updated: CLAUDE.md, all skill files, qatux agent file.
The settings.local.json env sections were also removed across all
9 worktrees (non-git files, edited directly).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:54:12 +01:00
jpmschweitzerandClaude Opus 4.6 c21671d44c refactor(db): move ticketing database to shared worktree location
The SQLite database now lives at ../settledreach.db, shared across all
git worktrees. This eliminates binary merge conflicts that occurred
whenever two branches modified the database independently.

All Python connectors (ticket CLI, sqlite_connector, decisions_sync)
now resolve the DB path relative to their own location — three levels
up from db/connectors/ reaches the worktree parent. The _main_worktree()
git-rev-parse pattern and config.json sqlite_db key are removed.

The database file is untracked from git; a backup mechanism commits
snapshots through the main branch (see following commits).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:54:00 +01:00
jpmschweitzer ffb73a6a77 Merge branch 'copy'
# Conflicts:
#	CHANGELOG.md
#	db/commonwealth.db
2026-02-12 16:21:37 +01:00
jpmschweitzerandClaude Opus 4.6 e73e87b3e9 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:19:40 +01:00
jpmschweitzerandClaude Opus 4.6 b08a038990 chore(db): create 39 tickets from v0.1 content scoping workshop
38 new tickets (#371-409) + 10 existing ticket updates + 42
dependency links. Sprint 3: copy 15, server 6, client 1. Sprint 4:
18 tickets. Sprint 5+: 3 tickets. #261 is critical path root.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:19:23 +01:00
jpmschweitzerandClaude Opus 4.6 5925a0c79b chore(meta): add large content push team pattern to CLAUDE.md
Document the librarian + parallel writers + reviewer pattern for
producing many files efficiently with agent teams.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:19:16 +01:00
jpmschweitzerandClaude Opus 4.6 8c95bda639 docs(workshops): add control & interaction brief, update workshop index
Add workshop brief for Control & Interaction Scheme (next workshop).
Update index with wiki-review (complete) and v0.1-content-scoping
(complete, 38 tickets).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:19:10 +01:00
jpmschweitzerandClaude Opus 4.6 3944b4e79f docs(workshops): archive v0.1 content scoping workshop (2 rounds + closing)
Scoped the vertical slice: 16 EntityKnowledge keys, v0.1 mechanical
NPC mapping, YAML content format, 7-verb interaction model, server-
authoritative pause, 38 tickets created across copy/server/client/ci.
20 decisions (D-042 through D-061). 8 agents, 2 rounds + closing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:19:05 +01:00
jpmschweitzerandClaude Opus 4.6 0100b33635 docs(workshops): archive wiki review workshop (4 rounds + lead interview)
Long-term content strategy workshop: 300-world generator model,
cultural ingredients menu, three-system NPC architecture (9 patterns
x 6 motivations), Sacred/Profane/Middle Kingdom framework. 9 agents
across 4 rounds plus lead interview establishing the production path
from hand-authored Sova to generated 300 worlds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 16:18:56 +01:00