From b73d20bfacc4f976a17d702703e1e67191c7acf9 Mon Sep 17 00:00:00 2001 From: Eratostenes de Gitjabia Date: Sat, 9 May 2026 18:55:55 +0000 Subject: [PATCH] docs(backlog): sprint plan calendar and milestones --- backlog/sprint-plan.md | 186 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 backlog/sprint-plan.md diff --git a/backlog/sprint-plan.md b/backlog/sprint-plan.md new file mode 100644 index 0000000..9a73921 --- /dev/null +++ b/backlog/sprint-plan.md @@ -0,0 +1,186 @@ +# Sprint plan + +Calendar view, dependencies, milestones for the Blocao MVP path. ~19 weeks from start to MVP demo, +6 weeks to multi-site fleet, +2 weeks to evidence chain. + +## Cadence + +- **Sprint length**: 2 weeks (some sprints stretch to 3 — see table). +- **Team size assumption**: 3-4 engineers (1 router/network, 1-2 Cell/AI, 1 console/UX). Adjust velocity accordingly. +- **Velocity assumption**: ~30-50 story points per sprint depending on team size and story mix. + +## Milestones + +| Milestone | Sprint | What's demonstrable | +|---|---|---| +| **Foundation closed** | End of S0 | New router from CI artifact + new Cell from Balena fleet, both reaching basic mDNS announce | +| **First boot works** | End of S1 | Wizard takes a fresh router from blank to operational standalone | +| **Engineering plane usable** | End of S2 | Operator can manage the router (WAN, VLAN, MQTT, GitOps) without SSH | +| **Cameras onboarding** | End of S3 | Add a camera through the wizard, events flowing | +| **MVP demo readiness** | **End of S4** | Full single-site forensic experience: SYNOPSIS, CAMS, FRIGATE, FORENSICS query, evidence playback | +| **Health & ops** | End of S5 | Production-ready selftest, history, quick-fix actions | +| **Multi-site fleet** | End of S6 | Hub running, 2+ sites under management, cross-site search | +| **Hardening** | End of S7 | Evidence chain L1, audit log, design tokens consolidated | + +## Sprint-by-sprint + +### Sprint 0 — Foundation (2 weeks) + +**Goal**: nothing visible to users; everything visible to engineers. + +Stories: BL-00.1, BL-00.2, BL-00.3, BL-00.4, BL-00.5. + +Dependencies: none. + +Demo: "We can build images. We can flash a router. We can provision a Cell. The MQTT contract is in CI." + +**Don't take on UI stories this sprint.** Discipline pays back later. + +--- + +### Sprint 1 — First boot (2 weeks) + +**Goal**: a fresh router becomes a usable Blocao node. + +Stories: BL-01.1, BL-01.2, BL-01.3, BL-01.4, BL-01.5*, BL-01.6, BL-01.7. + +(*BL-01.5 needs a hub mock — write minimal `hub-mock` server that accepts enrollment tokens. Real hub later.*) + +Dependencies: Sprint 0 closed. + +Demo: "Plug in a fresh router, open a browser, walk through the wizard, end with a SYNOPSIS view (mostly empty)." + +--- + +### Sprint 2 — Engineering plane (3 weeks) + +**Goal**: each panel of the engineering plane has a real backend. + +Stories: BL-02.1, BL-02.2, BL-02.3, BL-02.4, BL-02.5, BL-02.6, BL-02.7, BL-02.8, BL-02.9, BL-02.10, BL-02.11. + +Dependencies: Sprint 1 closed. + +Demo: "Look, all the engineering panels work. WAN can be reconfigured. VLAN matrix changes commit to GitOps. MQTT live tail is real. GitOps shows real applied/HEAD/remote SHAs." + +This sprint is **3 weeks** because there are 11 stories and they're mostly L size. + +--- + +### Sprint 3 — Camera onboarding (2 weeks) + +**Goal**: an installer can add cameras through the wizard. + +Stories: BL-03.1, BL-03.2, BL-03.3, BL-03.4, BL-03.5, BL-03.6, BL-03.7, BL-03.8, BL-03.9. + +Dependencies: Sprint 2 closed. + +Demo: "Add 4 cameras to a fresh deployment in 10 minutes. Events flowing. Frigate config in GitOps. Security checklist pass-with-warnings." + +--- + +### Sprint 4 — Operator plane (3 weeks) + +**Goal**: SYNOPSIS and FORENSICS are production-grade. + +Stories: BL-04.1, BL-04.2, BL-04.3, BL-04.4 (XL), BL-04.5, BL-04.6, BL-04.7, BL-04.8, BL-04.9, BL-04.10. + +Dependencies: Sprint 3 closed. + +Demo: **MVP**. "Demo of forensic query across a real day of footage, scrubbing clips, pinning to case, exporting evidence pack. This is the demo we show prospects." + +--- + +### Sprint 5 — Health & ops (2 weeks) + +**Goal**: production-grade observability. + +Stories: BL-05.1, BL-05.2, BL-05.3, BL-05.4, BL-05.5, BL-05.6. + +Dependencies: Sprint 4 closed. + +Demo: "Kill Frigate. Watch HEALTH go red in <30s. Use quick-fix to recover. View history of last 24h." + +--- + +### Sprint 6 — Hub & fleet (3 weeks) + +**Goal**: multi-site management. + +Stories: BL-06.1 (real hub), BL-06.2, BL-06.3, BL-06.4 (XL), BL-06.5, BL-06.6. + +Dependencies: Sprint 5 closed. + +Demo: "Two sites running. Hub shows both. Cross-site forensic query finds a vehicle in both. Edit fleet-config, watch firewall rule appear in both sites." + +--- + +### Sprint 7 — Hardening (2 weeks) + +**Goal**: evidence chain L1, audit log, design tokens consolidation. + +Stories: BL-07.1, BL-07.2, BL-07.3, BL-07.4, BL-07.5, BL-07.6. + +Dependencies: Sprint 6 closed. + +Demo: "Export evidence pack. Run `blocao verify`. Edit a clip externally and watch verifier flag tampering." + +--- + +## Total timeline + +19 weeks (~4.5 months) from project start to MVP demo (end of Sprint 4). + +Add 7 more weeks for full hub + multi-site + hardening (end of Sprint 7). + +Total: **~26 weeks** for v1.0. + +## Risks to schedule + +1. **Frigate RKNN integration**: if RK3588 inference is unstable, Sprint 4 (BL-04.4 forensic engine) slips. Mitigation: have CPU fallback ready. +2. **Hub deployment to Hetzner**: first time setup of MinIO, Qdrant, Keycloak in production. Could take longer than estimated. Mitigation: start hub deployment in Sprint 5 (before its formal sprint). +3. **Cross-site forensic search (BL-06.4)**: XL story with significant uncertainty. Mitigation: prototype query distribution mechanic in Sprint 5 spike. +4. **Operator UX iteration**: the chat + autocomplete UX needs real-user testing to refine. Mitigation: schedule 2 customer pilots during Sprint 4-5 to gather feedback. +5. **Hardware availability**: if GL.iNet or Banana Pi units are out of stock, Sprint 0 slips. Mitigation: buy 4 of each for the team early. + +## Buffer + +The sprint plan does not include explicit buffer. Estimate +20% on first half (Sprint 0-3) and +15% on second half (Sprint 4-7) for typical project variance. + +Realistic MVP demo: end of week 22 (instead of week 19). +Realistic full v1.0: end of week 30 (instead of week 26). + +## Ramp-down vs scope + +If schedule pressure mounts, **drop scope, not quality**. Stories that are easy to defer: + +- BL-02.11 (Logs view) — can be SSH'd into for v1.0. +- BL-04.5 (autocomplete) — basic chat works, autocomplete enhances. +- BL-04.10 (export ZIP) — manual evidence export possible until automated. +- BL-X.X transversal stories — by definition not blocking. +- WDM-T-* (transcript) — entirely a Year 2 product. + +Don't drop: + +- BL-04.4 (forensic engine) — without this, no demo. +- BL-04.7 (player) — operators need playback. +- BL-05.1+5.2 (selftest) — no production without health. +- BL-06.2 (bridge) — no hub without bridge. +- BL-07.1 (manifest L1) — sovereignty story needs even basic chain. + +## Post-MVP roadmap + +After Sprint 7 (v1.0), the next big bets: + +- **Year 2 Q1**: Transcript Forensics product launch. +- **Year 2 Q2-Q3**: Evidence chain L2 (RFC 3161 TSA, transparency log, BYOK). +- **Year 2 Q3-Q4**: Cross-product correlation (audio events ↔ video events at same site). +- **Year 3**: HaLow native cameras, expand EU markets, partner channel. + +## Maintaining this plan + +Each sprint review: + +- Update the milestone table with actual demo date. +- Note which stories slipped, which were dropped, which were added. +- Adjust velocity assumption based on actuals. + +If a milestone slips by >2 weeks, hold a project-level review to decide: add resources, drop scope, or accept new date.