# Testing Strategy Sprint Dependency Graph & Critical Path Analysis > **Purpose:** Visualize sprint dependencies, identify critical path, optimize parallel execution, and coordinate cross-guild work. --- ## Executive Summary **Total Sprints:** 22 sprints across 4 batches **Total Tasks:** ~370 tasks **Estimated Duration:** 26 weeks (6 months) if executed sequentially **Optimal Duration:** 14 weeks (3.5 months) with full parallelization **Critical Path:** 14 weeks (Foundation Epics → Module Tests) **Parallelization Opportunities:** Up to 15 sprints can run concurrently --- ## Sprint Inventory by Batch ### Batch 5100.0007: Foundation Epics (90 tasks, 6 sprints) | Sprint ID | Name | Tasks | Waves | Dependencies | |-----------|------|-------|-------|--------------| | 5100.0007.0001 | Master Testing Strategy | 18 | 4 | None (entry point) | | 5100.0007.0002 | Epic A: TestKit Foundations | 13 | 4 | 0001 (Wave 1 complete) | | 5100.0007.0003 | Epic B: Determinism Gate | 12 | 4 | 0002 (TestKit available) | | 5100.0007.0004 | Epic C: Storage Harness | 12 | 4 | 0002 (TestKit available) | | 5100.0007.0005 | Epic D: Connector Fixtures | 12 | 4 | 0002 (TestKit available) | | 5100.0007.0006 | Epic E: WebService Contract | 12 | 4 | 0002 (TestKit + OtelCapture) | | 5100.0007.0007 | Epic F: Architecture Tests | 17 | 6 | None (can start immediately) | ### Batch 5100.0008: Quality Gates (11 tasks, 1 sprint) | Sprint ID | Name | Tasks | Waves | Dependencies | |-----------|------|-------|-------|--------------| | 5100.0008.0001 | Competitor Parity Testing | 11 | 4 | 0007.0001 (Wave 1), 0007.0002 | ### Batch 5100.0009: Module Test Implementations (185 tasks, 11 sprints) | Sprint ID | Module | Models | Tasks | Waves | Dependencies | |-----------|--------|--------|-------|-------|--------------| | 5100.0009.0001 | Scanner | L0,AN1,S1,T1,W1,WK1,PERF | 25 | 4 | 0002,0003,0004,0006 | | 5100.0009.0002 | Concelier | C1,L0,S1,W1,AN1 | 18 | 4 | 0002,0003,0004,0005,0006,0007.0007 | | 5100.0009.0003 | Excititor | C1,L0,S1,W1,WK1 | 21 | 4 | 0002,0003,0004,0005,0006,0007.0007 | | 5100.0009.0004 | Policy | L0,S1,W1 | 15 | 3 | 0002,0003,0004,0006 | | 5100.0009.0005 | Authority | L0,W1,C1 | 17 | 3 | 0002,0005,0006 | | 5100.0009.0006 | Signer | L0,W1,C1 | 17 | 3 | 0002,0003,0005,0006 | | 5100.0009.0007 | Attestor | L0,W1 | 14 | 3 | 0002,0003,0006,0009.0006 | | 5100.0009.0008 | Scheduler | L0,S1,W1,WK1 | 14 | 3 | 0002,0004,0006 | | 5100.0009.0009 | Notify | L0,C1,S1,W1,WK1 | 18 | 3 | 0002,0004,0005,0006 | | 5100.0009.0010 | CLI | CLI1 | 13 | 3 | 0002,0003 | | 5100.0009.0011 | UI | W1 | 13 | 3 | 0002,0006 | ### Batch 5100.0010: Infrastructure Tests (62 tasks, 4 sprints) | Sprint ID | Module Family | Models | Tasks | Waves | Dependencies | |-----------|---------------|--------|-------|-------|--------------| | 5100.0010.0001 | EvidenceLocker + Findings + Replay | L0,S1,W1,WK1 | 16 | 3 | 0002,0004,0006 | | 5100.0010.0002 | Graph + TimelineIndexer | L0,S1,W1,WK1 | 15 | 3 | 0002,0004,0006 | | 5100.0010.0003 | Router + Messaging | L0,T1,W1,S1 | 14 | 3 | 0002,0004 | | 5100.0010.0004 | AirGap | L0,AN1,S1,W1,CLI1 | 17 | 3 | 0002,0003,0004,0006 | --- ## Dependency Visualization (ASCII Graph) ``` CRITICAL PATH (14 weeks): Week 1-2: [5100.0007.0001] Master Strategy (Wave 1-4) │ Week 3-4: [5100.0007.0002] TestKit Foundations ← CRITICAL BOTTLENECK │ ├──────────┬──────────┬──────────┬──────────┐ Week 5-6: [0003] [0004] [0005] [0006] [0007.0007] Determ. Storage Connect. WebSvc Arch.Tests │ │ │ │ └─────────┴─────────┴─────────┘ │ Week 7-10: ┌──────────┼──────────────────────────────────┐ [5100.0009.xxxx] ALL MODULE TESTS (parallel) │ 11 sprints run concurrently │ │ │ Week 11-14:└────────────────────────────────────────────┘ [5100.0010.xxxx] ALL INFRASTRUCTURE TESTS 4 sprints run concurrently PARALLEL EXECUTION ZONES: Zone 1 (Weeks 5-6): Epic Implementations - 5100.0007.0003 (Determinism) ─┐ - 5100.0007.0004 (Storage) ├─ Can run in parallel - 5100.0007.0005 (Connectors) │ (all depend only on TestKit) - 5100.0007.0006 (WebService) │ - 5100.0007.0007 (Architecture) ─┘ Zone 2 (Weeks 7-10): Module Tests - Scanner (5100.0009.0001) ─┐ - Concelier (5100.0009.0002) │ - Excititor (5100.0009.0003) │ - Policy (5100.0009.0004) ├─ Can run in parallel - Authority (5100.0009.0005) │ (Epic dependencies met) - Signer (5100.0009.0006) │ - Attestor (5100.0009.0007) │ - Scheduler (5100.0009.0008) │ - Notify (5100.0009.0009) │ - CLI (5100.0009.0010) │ - UI (5100.0009.0011) ─┘ Zone 3 (Weeks 11-14): Infrastructure Tests - EvidenceLocker (5100.0010.0001) ─┐ - Graph (5100.0010.0002) ├─ Can run in parallel - Router/Messaging (5100.0010.0003)│ - AirGap (5100.0010.0004) ─┘ Zone 4 (Weeks 3-14): Quality Gates (can overlap) - Competitor Parity (5100.0008.0001) runs after Week 3 ``` --- ## Critical Path Analysis ### Critical Path Sequence (14 weeks) 1. **Week 1-2:** Master Strategy Sprint (5100.0007.0001) - Wave 1: Documentation sync - Wave 2: Quick wins (test runner scripts, trait standardization) - Wave 3: CI infrastructure - Wave 4: Epic sprint creation 2. **Week 3-4:** TestKit Foundations (5100.0007.0002) ← **CRITICAL BOTTLENECK** - ALL downstream sprints depend on TestKit - Must complete before any module tests can start - Priority: DeterministicTime, DeterministicRandom, CanonicalJsonAssert, SnapshotAssert, PostgresFixture, OtelCapture 3. **Week 5-6:** Epic Implementation (parallel zone) - 5 sprints run concurrently - Unblocks all module tests 4. **Week 7-10:** Module Test Implementation (parallel zone) - 11 sprints run concurrently - Longest pole: Scanner (25 tasks, 4 waves) 5. **Week 11-14:** Infrastructure Test Implementation (parallel zone) - 4 sprints run concurrently - Can overlap with late-stage module tests ### Critical Bottleneck: TestKit (Sprint 5100.0007.0002) **Impact:** Blocks 20 downstream sprints (all module + infrastructure tests) **Mitigation:** - Staff with 2-3 senior engineers - Prioritize DeterministicTime and SnapshotAssert (most commonly used) - Release incrementally (partial TestKit unlocks some modules) - Run daily check-ins to unblock consuming teams --- ## Dependency Matrix ### Epic → Module Dependencies | Epic Sprint | Blocks Module Sprints | Reason | |-------------|----------------------|--------| | 5100.0007.0002 (TestKit) | ALL 15 module/infra sprints | Core test utilities required | | 5100.0007.0003 (Determinism) | Scanner, Excititor, Signer, CLI, AirGap | Determinism gate required | | 5100.0007.0004 (Storage) | Scanner, Concelier, Excititor, Policy, Scheduler, Notify, EvidenceLocker, Graph, Router, AirGap | PostgresFixture required | | 5100.0007.0005 (Connectors) | Concelier, Excititor, Authority, Signer, Notify | Fixture discipline required | | 5100.0007.0006 (WebService) | Scanner, Concelier, Excititor, Policy, Authority, Signer, Attestor, Scheduler, Notify, UI, EvidenceLocker, Graph, AirGap | WebServiceFixture required | | 5100.0007.0007 (Architecture) | Concelier, Excititor | Lattice boundary enforcement | ### Module → Module Dependencies | Sprint | Depends On Other Modules | Reason | |--------|--------------------------|--------| | Attestor (0009.0007) | Signer (0009.0006) | Sign/verify integration tests | | (None other) | - | Modules are otherwise independent | --- ## Parallelization Strategy ### Maximum Parallel Execution (15 sprints) **Week 5-6 (5 parallel):** - Determinism (2 eng) - Storage (3 eng) - Connectors (2 eng) - WebService (2 eng) - Architecture (1 eng) **Week 7-10 (11 parallel):** - Scanner (3 eng) ← longest pole - Concelier (2 eng) - Excititor (2 eng) - Policy (2 eng) - Authority (2 eng) - Signer (2 eng) - Attestor (2 eng) - Scheduler (2 eng) - Notify (2 eng) - CLI (1 eng) - UI (2 eng) **Week 11-14 (4 parallel):** - EvidenceLocker (2 eng) - Graph (2 eng) - Router/Messaging (2 eng) - AirGap (2 eng) **Resource Requirement (Peak):** - Week 7-10: 22 engineers (11 sprints × avg 2 eng/sprint) - Realistic: 10-12 engineers with staggered starts --- ## Risk Hotspots ### High-Impact Delays | Risk | Impact | Probability | Mitigation | |------|--------|-------------|------------| | TestKit delayed (5100.0007.0002) | Blocks ALL downstream sprints; +2-4 weeks delay | MEDIUM | Staff with senior engineers; daily standups; incremental releases | | Storage harness issues (5100.0007.0004) | Blocks 10 sprints | MEDIUM | Use Testcontainers early; validate Postgres 16 compatibility Week 1 | | Determinism gate drift (5100.0007.0003) | Scanner/Excititor blocked; compliance issues | LOW | Explicit canonical JSON contract; freeze schema early | | Attestor-Signer circular dependency (0009.0007 ↔ 0009.0006) | Integration tests blocked | MEDIUM | Mock signing for Attestor initial tests; coordinate guilds | | Concurrent module tests overwhelm CI | Test suite timeout; flaky tests | HIGH | Stagger module test starts; use CI parallelization; dedicated test runners | ### Critical Path Risks | Sprint | Risk | Impact if Delayed | |--------|------|-------------------| | 5100.0007.0002 (TestKit) | DeterministicTime implementation complex | +2 weeks to critical path | | 5100.0009.0001 (Scanner) | 25 tasks, 4 waves; reachability tests complex | Delays integration tests; no impact on other modules | | 5100.0007.0004 (Storage) | Testcontainers Postgres compatibility issues | Blocks 10 sprints; +2-3 weeks | --- ## Recommended Execution Sequence ### Phase 1: Foundation (Weeks 1-4) **Goal:** Establish test infrastructure and strategy docs **Sprints:** 1. 5100.0007.0001 (Master Strategy) — Week 1-2 2. 5100.0007.0002 (TestKit) — Week 3-4 ← CRITICAL **Exit Criteria:** - TestKit utilities available (DeterministicTime, SnapshotAssert, PostgresFixture, OtelCapture) - Test runner scripts operational - Trait standardization complete ### Phase 2: Epic Implementation (Weeks 5-6) **Goal:** Implement all foundation epics in parallel **Sprints (parallel):** 1. 5100.0007.0003 (Determinism) 2. 5100.0007.0004 (Storage) 3. 5100.0007.0005 (Connectors) 4. 5100.0007.0006 (WebService) 5. 5100.0007.0007 (Architecture) **Exit Criteria:** - PostgresFixture operational (Testcontainers) - Determinism manifest format defined - Connector fixture discipline documented - WebServiceFixture operational - Architecture tests in CI (PR gate) ### Phase 3: Module Tests — Priority Tier 1 (Weeks 7-8) **Goal:** Implement tests for critical security/compliance modules **Sprints (parallel):** 1. 5100.0009.0001 (Scanner) — critical path, longest pole 2. 5100.0009.0002 (Concelier) 3. 5100.0009.0003 (Excititor) 4. 5100.0009.0004 (Policy) 5. 5100.0009.0005 (Authority) 6. 5100.0009.0006 (Signer) ### Phase 4: Module Tests — Priority Tier 2 (Weeks 9-10) **Goal:** Complete remaining module tests **Sprints (parallel):** 1. 5100.0009.0007 (Attestor) 2. 5100.0009.0008 (Scheduler) 3. 5100.0009.0009 (Notify) 4. 5100.0009.0010 (CLI) 5. 5100.0009.0011 (UI) ### Phase 5: Infrastructure Tests (Weeks 11-14) **Goal:** Complete platform infrastructure tests **Sprints (parallel):** 1. 5100.0010.0001 (EvidenceLocker) 2. 5100.0010.0002 (Graph) 3. 5100.0010.0003 (Router/Messaging) 4. 5100.0010.0004 (AirGap) ### Phase 6: Quality Gates (Overlapping Weeks 3-14) **Goal:** Establish ongoing parity testing **Sprint:** 1. 5100.0008.0001 (Competitor Parity) — can start Week 3, run nightly thereafter --- ## Guild Coordination ### Cross-Guild Dependencies | Guild | Owns Sprints | Depends On Guilds | Coordination Points | |-------|--------------|-------------------|---------------------| | Platform Guild | TestKit, Storage, Architecture, EvidenceLocker, Graph, Router | None | Week 3: TestKit readiness review | | Scanner Guild | Scanner | Platform (TestKit, Storage, Determinism, WebService) | Week 5: Storage harness validation | | Concelier Guild | Concelier | Platform (TestKit, Storage, Connectors, WebService), Architecture | Week 6: Connector fixture review | | Excititor Guild | Excititor | Platform (TestKit, Storage, Connectors, WebService), Architecture | Week 6: Preserve-prune test design | | Policy Guild | Policy, AirGap (analyzers) | Platform (TestKit, Storage, WebService) | Week 7: Unknown budget enforcement review | | Authority Guild | Authority | Platform (TestKit, Connectors, WebService) | Week 7: OIDC connector fixture validation | | Crypto Guild | Signer, Attestor | Platform (TestKit, Determinism, Connectors, WebService), Authority | Week 8: Canonical payload design; Week 9: Sign/verify integration | | Scheduler Guild | Scheduler | Platform (TestKit, Storage, WebService) | Week 9: DeterministicTime validation | | Notify Guild | Notify | Platform (TestKit, Storage, Connectors, WebService) | Week 9: Connector fixture templates | | CLI Guild | CLI | Platform (TestKit, Determinism) | Week 10: Exit code conventions | | UI Guild | UI | Platform (TestKit, WebService) | Week 10: API contract snapshot review | | AirGap Guild | AirGap | Platform (TestKit, Determinism, Storage, WebService), Policy | Week 11: Bundle determinism validation | | QA Guild | Competitor Parity | Platform (TestKit) | Week 3: Parity harness design | ### Weekly Sync Schedule **Week 1-2:** - All guilds: Master strategy review, sprint assignment **Week 3-4:** - Platform Guild: Daily standup (TestKit unblocking) - All guilds: TestKit API review (design feedback) **Week 5-6:** - Epic guilds: Bi-weekly sync (Determinism, Storage, Connectors, WebService, Architecture) - Scanner/Concelier/Excititor guilds: Prepare for module test sprint kickoff **Week 7-10:** - All module guilds: Weekly guild-specific standups - Cross-guild: Bi-weekly integration sync (Signer ↔ Attestor, Policy ↔ AirGap) **Week 11-14:** - Infrastructure guilds: Weekly sync - All guilds: Bi-weekly retrospective --- ## Metrics & Tracking ### Sprint Completion Metrics | Metric | Target | Measurement | |--------|--------|-------------| | Sprint on-time completion | >80% | Tasks complete by wave deadline | | Test coverage increase | +30% per module | Code coverage reports | | Determinism tests passing | 100% | Determinism gate CI job | | Contract tests in CI | 100% of WebServices | Contract lane CI job | | Architecture tests enforcing | 100% violations blocked | Architecture test failures = build failures | ### Quality Gates | Gate | Criteria | Enforced By | |------|----------|-------------| | Determinism | SHA-256 hash stable across runs | Sprint 5100.0007.0003 tests | | Contract Stability | OpenAPI schema unchanged or explicitly versioned | Sprint 5100.0007.0006 tests | | Architecture Boundaries | Concelier/Excititor do NOT reference Scanner lattice | Sprint 5100.0007.0007 tests | | Preserve-Prune Source | Excititor preserves VEX source references and rationale | Sprint 5100.0009.0003 tests | | Unknown Budget Enforcement | Policy engine fails when unknowns > N | Sprint 5100.0009.0004 tests | --- ## Next Steps 1. **Week 1 (2026-01-06):** - Kick off Sprint 5100.0007.0001 (Master Strategy) - Assign Platform Guild to TestKit (5100.0007.0002) for Week 3 start - Review this dependency graph with all guild leads 2. **Week 2 (2026-01-13):** - Complete Master Strategy Wave 1-2 - Finalize TestKit API design (DeterministicTime, SnapshotAssert, etc.) 3. **Week 3 (2026-01-20):** - Start TestKit implementation (CRITICAL PATH) - Daily standup for TestKit unblocking - Prepare Epic sprint kickoffs for Week 5 4. **Week 4 (2026-01-27):** - Complete TestKit Wave 1-2 (DeterministicTime, SnapshotAssert) - Validate TestKit with pilot tests - Final Epic sprint preparation 5. **Week 5 (2026-02-03):** - Kick off 5 Epic sprints in parallel - Weekly Epic sync meeting (Fridays) --- **Prepared by:** Project Management **Date:** 2025-12-23 **Next Review:** 2026-01-06 (Week 1 kickoff)