Files
settled-reach/docs/workshops/knowledge-graph-information-boundaries/sprint2-impact.md
T
jpmschweitzerandClaude Opus 4.6 da63a93446 docs(docs): add frontmatter to knowledge-graph-information-boundaries workshop
Standardized YAML frontmatter on all 10 files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 23:40:51 +01:00

17 KiB
Raw Blame History

title, description, type, status, workshop, agent, round, created
title description type status workshop agent round created
Sprint 2 Impact Summary — Knowledge Graph Workshop Sprint 2 scope impact analysis with 8 new tickets, critical path changes, and risk assessment workshop archived knowledge-graph-information-boundaries 0 2026-02-11

Sprint 2 Impact Summary — Knowledge Graph Workshop

Date: 2026-02-11 Author: SI (Project Manager) Source: Workshop synthesis (round2-synthesis.md)


Executive Summary

The Knowledge Graph Workshop (#351) has been reconciled into Sprint 2 scope. 8 new tickets added to Sprint 2, all under epic #351. Sprint scope expands from 14 to 22 tickets, adding approximately 6.5 developer-days of work.

Critical path impact: New tickets #361, #362, and #366 block #112 (Observer visibility query), which is already on the critical path. Knowledge graph work is now part of Sprint 2's critical path, not parallel to it.

Risk level: MEDIUM. Knowledge graph stub must ship with Sprint 2 proof (#357), but full implementation (gossip, inference, contradiction detection) is correctly deferred to Sprint 3+.


New Tickets Added (8 total)

All tickets created as children of #351 (Knowledge Graph Workshop epic), assigned to Sprint 2.

# Title Type Priority Team Estimate Blocks
#361 Implement KnowledgeGraph component + types (D-041) story critical server 1 day #112
#362 StableEntityId component + EntityRegistry resource story critical server 1 day #112, #360
#363 KnowledgeEventQueue + processing system story high server 0.5 day #112
#364 Direct observation knowledge flow story critical server 0.5 day #112
#365 Basic knowledge decay system story high server 0.5 day -
#366 Observer snapshot knowledge integration task critical joint 1 day #358, #356
#367 Knowledge graph unit test suite task high server 1 day -
#368 Knowledge vocabulary for v0.1 content task high content 0.5 day #309

Total added effort: ~6.5 developer-days (per synthesis Part 7)


Backlog Ticket Reconciliation

Tickets Cancelled

# Title Reason
#89 Information inventory Subsumed by #361 (KnowledgeGraph component). The Vec<String> placeholder is replaced by the full knowledge graph data model.

Tickets Marked Done

# Title Reason
#269 CauseChain component Already implemented per audit report (server/src/cause_chain.rs). Integration with knowledge system is Sprint 3+ work.

Tickets Requiring Reparenting (SQL Updates Needed)

The following tickets are children of #49 (Information Boundary System epic) but should be reparented under #351 or updated with new dependencies:

# Current Parent Action Required Rationale
#138 #49 Reparent to #351 Information tag schema = KnowledgeConfidence + FactId system (D-041)
#139 #49 Reparent to #351, defer to Sprint 3 Component-level access control depends on knowledge system
#140 #49 Reparent to #351, merge into #366 Entity visibility filtering IS the observer snapshot integration
#141 #49 Reparent to #351, defer to Sprint 3 Knowledge-based gating requires dialogue system + knowledge queries
#142 #49 Reparent to #351, defer to Sprint 3 NPC boundaries = KnowledgeGraph per NPC, but enforcement is Sprint 3

SQL commands required:

UPDATE tickets SET parent_id = 351 WHERE id IN (138, 139, 140, 141, 142);
UPDATE tickets SET status = 'backlog', sprint_id = NULL WHERE id IN (139, 141, 142);  -- Defer to Sprint 3
UPDATE tickets SET status = 'cancelled' WHERE id = 140;  -- Merged into #366

Tickets With New Dependencies

# Title New Dependency Reason
#309 Knowledge state vocabulary for v0.1 Unblocked by #368 D-041 Appendix A provides the vocabulary taxonomy
#182 Divergent starting knowledge Depends on #361 Starting knowledge = KnowledgeGraph::with_background()
#360 Resolve Q-019: entity ID stability Partially resolved by #362 Server-side stable IDs now defined, client mapping remains open

SQL commands required:

-- Add blocking relationships
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (361, 112);  -- KnowledgeGraph blocks observer query
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (362, 112);  -- StableEntityId blocks observer query
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (362, 360);  -- StableEntityId partially resolves Q-019
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (366, 358);  -- Snapshot integration blocked by schema design
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (366, 356);  -- Snapshot integration blocks bridge ticket
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (368, 309);  -- Vocabulary document unblocks content ticket
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (361, 182);  -- KnowledgeGraph blocks divergent starting knowledge

Updated Sprint 2 Critical Path

Before Workshop

#359 (Q-018) → #110 (shadowcast) → #111 (vision cone) → #112 (observer query) → #356 (bridge) → #357 (proof)

Critical path length: 6 tickets serial

After Workshop

#359 (Q-018) → #110 (shadowcast) → #111 (vision cone) →
                                                         ↓
#361 (KnowledgeGraph) → #362 (StableEntityId) → #363 (EventQueue) → #364 (Direct obs) →
                                                                                          ↓
                                                    #366 (Snapshot integration) → #112 (observer query) →
                                                                                          ↓
                                                                      #356 (bridge) → #357 (proof)

Critical path length: 10 tickets serial (4 new knowledge tickets added to critical path)

Parallel Tracks (Unchanged)

  • Client rendering: #116, #129, #130, #131, #113 (mostly independent until #113 waits on #112)
  • Time system: #358 → #25 → #357
  • Knowledge testing/docs: #367, #368 (can run parallel to implementation)

Sprint Scope Assessment

Baseline Sprint 2 Scope (Before Workshop)

  • 14 tickets across 3 tracks (server, client, joint)
  • Critical path: 6 tickets serial
  • Estimated effort: ~10-12 developer-days (not explicitly estimated pre-workshop)

New Sprint 2 Scope (After Workshop)

  • 22 tickets (+8 knowledge graph tickets)
  • Critical path: 10 tickets serial (+4 on critical path)
  • Estimated effort: ~16-18 developer-days (+6.5 from knowledge graph)

Sprint Capacity Analysis

Assumption: 2-week sprint, 2 full-time developers (Dudley + Oscar on server, Stig on client)

  • Available capacity: ~20 developer-days (2 devs × 10 days, assuming 50% utilization for blockers/reviews/overhead)
  • Estimated work: ~16-18 developer-days
  • Buffer: ~2-4 days

Verdict: Sprint scope is achievable but TIGHT. No room for scope creep. Knowledge graph stub must ship as-is — no feature additions beyond Sprint 2 scope.


Risks and Mitigations

RISK 1: Critical Path Extended by 4 Tickets

Severity: HIGH

Impact: Knowledge graph tickets #361, #362, #363, #364 are now serially dependent and block #112. If any knowledge ticket slips, #112 slips, and the entire sprint slips.

Mitigation:

  • Prioritize #361 (KnowledgeGraph) as first sprint task (day 1-2)
  • #362 (StableEntityId) starts immediately after #361 (day 2-3)
  • #363 and #364 are smaller (0.5 day each) and can be parallelized across team members
  • #366 (snapshot integration) is joint ticket — assign to Oscar (networking) to avoid blocking Dudley on server work

Owner: SI (sprint tracking), Dudley (server lead)


RISK 2: #112 Interface Contract Not Defined Until Week 2

Severity: MEDIUM

Impact: #112 (Observer visibility query) needs the knowledge graph query interface from #361. If #361 is delayed or incomplete, #112 cannot start.

Mitigation:

  • D-041 synthesis Part 5 defines the interface contract explicitly (lines 219-269)
  • #112 implementation can reference the synthesis while #361 is in progress
  • Interface is simple: knows_entity(), relationship_with(), known_entities_iter() — low risk of misinterpretation

Status: Mitigated by synthesis clarity. No blocker expected.


RISK 3: Stub vs Full Implementation Scope Creep

Severity: MEDIUM

Impact: Knowledge graph has many deferred features (gossip, inference, contradiction detection). Risk that developers implement more than Sprint 2 scope during #361.

Mitigation:

  • Synthesis Part 7 explicitly defines Sprint 2 scope: data structures + direct observation + basic decay. No gossip, no inference.
  • #361 ticket description references D-041 Part 3 (structs) — implementation is struct definition, not full systems
  • Sprint 2 success criteria: observe_entity() works, relationship color appears in snapshot, remembered entities render as ghosts. That's it.

Owner: Dudley (server), SI (scope enforcement)


RISK 4: Testing Effort Underestimated

Severity: LOW

Impact: #367 (unit tests) is 1 day estimate, but knowledge graph has complex state (confidence levels, decay, serialization). 1 day may not be enough.

Mitigation:

  • D-041 synthesis explicitly calls out test scenarios: CRUD, decay, confidence ordering, serialization roundtrip
  • If #367 slips, move to Sprint 3 — knowledge graph ships without full test coverage initially
  • Integration testing via Sprint 2 proof (#357) provides baseline validation

Owner: Dudley (implementation + tests)


Sprint Completion Criteria (Updated)

Sprint 2 is DONE when:

  1. Player character moves on screen (Sprint 1 baseline, maintained) ✓
  2. Camera follows the player character (no panning) (#116) ✓
  3. Tiles render from snapshot data (floor + walls visible) (#129) ✓
  4. Entities appear/disappear based on line-of-sight (#110, #111, #112) ✓
  5. Fog covers areas outside the vision cone (#131, #113) ✓
  6. Walking behind a wall hides what's on the other side (#110, #112) ✓
  7. Walking around a corner reveals what's there (#110, #112) ✓
  8. [NEW] Entity color reflects relationship state from knowledge graph (#361, #366) ✓
  9. [NEW] Remembered (not visible) entities appear as ghosts with faded color (#361, #366) ✓

Knowledge graph proof: Observe an NPC, walk away, return. The NPC appears as a ghost at last-known position while not in LOS. Color shifts based on relationship state (green = known, amber = person of interest).


Open Questions (Not Sprint 2 Blockers)

From synthesis Part 9:

Question Description Sprint Impact
Q-024 Gossip propagation timing (immediate vs queued) Sprint 3+ decision
Q-025 Knowledge graph cap and eviction policy Sprint 3+ optimization
Q-026 Contradiction detection algorithm Sprint 3+ (THE FRIEND arc)

None of these block Sprint 2. Defer to Sprint 3 planning.


Recommendations

For Sprint Planning

  1. Prioritize #361 as first sprint task. Everything depends on the KnowledgeGraph struct existing. Start day 1.
  2. Assign #366 (snapshot integration) to Oscar. Dudley is overloaded on server critical path. Oscar can handle joint ticket after #358 (snapshot schema) is done.
  3. Defer #367 (tests) if needed. If sprint runs tight, ship #361-#366 without full test coverage. Tests can be Sprint 3 follow-up.
  4. Track critical path daily. With 10 serial tickets, 1-day slip = sprint slip. Daily standup must surface blockers immediately.

For Epic #49 (Information Boundary System)

Epic #49 now overlaps significantly with #351 (Knowledge Graph Workshop). Post-sprint, consolidate:

  • Mark #49 as superseded by #351, OR
  • Re-scope #49 as "client-facing information UI" (journal, knowledge display) while #351 owns the data model

Owner: SI (post-sprint cleanup), Tyre (architecture reconciliation)


Files Updated

  • New tickets: #361-#368 created, assigned to Sprint 2
  • Cancelled tickets: #89 (information inventory)
  • Done tickets: #269 (CauseChain)
  • Reparenting needed: #138, #139, #140, #141, #142 (SQL updates required)
  • New dependencies: See "Tickets With New Dependencies" section above

SQL Updates Required (Permission Denied — Manual Execution Needed)

The following SQL commands need to be executed manually (ticket CLI does not support reparenting or dependency addition):

-- Reparent information boundary tickets under #351
UPDATE tickets SET parent_id = 351, updated_at = datetime('now') WHERE id IN (138, 139, 140, 141, 142);

-- Defer Sprint 3+ tickets
UPDATE tickets SET status = 'backlog', sprint_id = NULL, updated_at = datetime('now') WHERE id IN (139, 141, 142);

-- Cancel #140 (merged into #366)
UPDATE tickets SET status = 'cancelled', updated_at = datetime('now') WHERE id = 140;

-- Add ticket descriptions for new tickets
UPDATE tickets SET description = 'Full KnowledgeGraph component with BTreeMap<StableId, EntityKnowledge> and BTreeMap<FactId, FactKnowledge>. Includes KnowledgeConfidence (4 levels), KnowledgeState (3 variants), KnowledgeSource enums. All types per D-041 synthesis Part 3. Sprint 2 uses DirectObservation and Background sources only. Estimate: 1 day.', updated_at = datetime('now') WHERE id = 361;

UPDATE tickets SET description = 'StableEntityId component and EntityRegistry resource for bidirectional StableId <-> Entity mapping. Assigns stable IDs at spawn, survives save/load. Partially resolves Q-019. Estimate: 1 day.', updated_at = datetime('now') WHERE id = 362;

UPDATE tickets SET description = 'Event-driven knowledge updates. KnowledgeEventQueue resource + processing system drains queue per tick. Decouples perception from knowledge writes. Estimate: 0.5 day.', updated_at = datetime('now') WHERE id = 363;

UPDATE tickets SET description = 'Perception system calls observe_entity() when entity in LOS, observe_entity_leaving_los() when exits. Sets Direct confidence, downgrades to KnowsDetails on departure. Estimate: 0.5 day.', updated_at = datetime('now') WHERE id = 364;

UPDATE tickets SET description = 'Knowledge decay pass once per game-minute (every 10 ticks per D-031). Configurable via DecayThresholds resource. Downgrades confidence based on tick age. Does not generate Stale state yet (Sprint 3). Estimate: 0.5 day.', updated_at = datetime('now') WHERE id = 365;

UPDATE tickets SET description = 'Observer visibility query (#112) reads KnowledgeGraph to: 1) overlay relationship color on visible entities, 2) include remembered (not visible) entities in snapshot. Implements interface from D-041 Part 5. Estimate: 1 day.', updated_at = datetime('now') WHERE id = 366;

UPDATE tickets SET description = 'Unit tests for CRUD operations, decay mechanics, confidence ordering, serialization roundtrip, relationship state transitions. Estimate: 1 day.', updated_at = datetime('now') WHERE id = 367;

UPDATE tickets SET description = 'Content authoring vocabulary document from D-041 Appendix A. Entity knowledge categories (identity, location, behavior, relationship, secret, contraband), world knowledge categories, prerequisite format for D-035 integration. Unblocks content team ticket #309. Estimate: 0.5 day.', updated_at = datetime('now') WHERE id = 368;

-- Add blocking dependencies
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (361, 112);  -- KnowledgeGraph blocks observer query
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (362, 112);  -- StableEntityId blocks observer query
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (362, 360);  -- StableEntityId partially resolves Q-019
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (366, 358);  -- Snapshot integration blocked by schema design
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (366, 356);  -- Snapshot integration blocks bridge ticket
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (368, 309);  -- Vocabulary document unblocks content ticket
INSERT INTO ticket_deps (blocker_id, blocked_id) VALUES (361, 182);  -- KnowledgeGraph blocks divergent starting knowledge

Execute via: db/connectors/sqlite-exec "<command>" for each UPDATE/INSERT statement (requires bash permission restoration)


Next Steps

  1. Execute SQL updates (requires manual intervention — bash permission denied during reconciliation)
  2. Update sprint briefings with new ticket IDs (#361-#368)
  3. Communicate critical path changes to team (standup: knowledge graph is now on critical path)
  4. Begin #361 implementation immediately (day 1 of sprint)
  5. Schedule daily critical path reviews (10 serial tickets = daily tracking required)

End of Sprint 2 Impact Summary

Files referenced:

  • /var/mnt/data/projects/settled-reach/planning/docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md
  • /var/mnt/data/projects/settled-reach/planning/docs/sprints/sprint-2/server.md
  • /var/mnt/data/projects/settled-reach/planning/docs/sprints/sprint-2/joint.md
  • /var/mnt/data/projects/settled-reach/planning/docs/sprints/sprint-2/client.md
  • /var/mnt/data/projects/settled-reach/planning/db/connectors/ticket (CLI used for ticket operations)