Pushes current branch and creates or updates a PR without ever
merging into main. Prevents accidental PR merges by restricting
the skill to branch-side operations only.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- 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>
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>
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>
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>
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>
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>
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>
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>
- 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>
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>
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>
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>
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>
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>
Non-destructive branch sync utility. On main: shows worktree branches
ahead of main with PR flags, lets user pick which to merge. On other
branches: merges main in. Stops on conflicts, never force-pushes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each worktree now has REPO_ROOT pre-set in .claude/settings.local.json,
removing the need for git rev-parse --show-toplevel at runtime. Updated
CLAUDE.md, skills (start-sprint, plan-sprint, ticket, search-docs),
briefing template, and qatux agent to use the env var prefix.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sprint 3: Know — 11 tickets across server, client, joint, copy.
Sprint 2 remains active until #368 completes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
NPC data model, pathfinding, observation events, and interaction
foundation. Briefings for server, client, joint, and copy teams.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sprint planning is SI's job. Skill now spawns SI via Task tool
instead of running the workflow directly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Defines default agents per team so sprint briefings name the
right agents to spawn. Registers Inigo for the audio team.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Standby agent for audio implementation phase. Named after the
Dreamer from the Void Trilogy. Covers soundscape design, ambient
layers, diegetic cues, and D-018 audio propagation rules.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>