Execute migration against dev → staging → production SurrealDB instances
Platform team
CRITICAL
Week 2 of Phase 1
BL-005
Delete or rename non-canonical tables that can be expressed as canonical kinds
Platform team
CRITICAL
Week 3 of Phase 1
BL-006
Update apps/agent-bff/src/kazisasa-bff-routes.js to use canonical functions (fn::claim_processing::create_claim, fn::integration::upsert_entity, fn::lifecycle::*) instead of any vertical-specific logic
KaziSasa vertical team
CRITICAL
Week 3-4 of Phase 1
BL-007
Ensure all kazi scenario packs are loaded from NATS KV SOVEREIGN_SCENARIOS/SOVEREIGN_LOOKUPS at runtime, not from disk (fs.readFile)
KaziSasa vertical team
CRITICAL
Week 4 of Phase 1
BL-008
Run verify-kazi-headless-api.mjs — confirm all 9 gates pass against real infrastructure
QA team
CRITICAL
End of Week 4 of Phase 1
BL-009
Add CI pre-commit hook/CI step that scans for kazi_ / materra_ table references and fails if found unmapped to canonical kind
Platform team
CRITICAL
End of Week 1 (ongoing)
BL-010
Same as BL-009 but for MARS vertical (mars_ / killbill_mars_ tables)
MARS team
CRITICAL
End of Week 1 of Phase 1-F
GAP-03: Fail-Closed / No Synthetic Fallbacks
ID
Action
Owner
Priority
Target
BL-011
Run automated audit of all catch blocks in the codebase — find catch blocks that return values (not throw error)
Backend team
CRITICAL
Day 1-2 of Phase 1B
BL-012
Fix each identified catch block: change to throw error or return HTTP error status (400/422/502/503)
Backend team
CRITICAL
Week 1 of Phase 1B
BL-013
Add ESLint rule no-synthetic-success-in-catch — flag any catch block body that is not just throw error or return new Response(..., { status })
Platform team
CRITICAL
Week 2 of Phase 1B
BL-014
Fix the three documented cases: LaunchDarkly bundle patch verification, kutuma-api getSignedToken patch verification, general catch audit completion
Frontend team + Backend team
CRITICAL
Week 2 of Phase 1B
BL-015
Add the lint rule to the CI pipeline — build fails if any catch block violates the pattern
Platform team
CRITICAL
Week 3 of Phase 1B
BL-016
Create and run scripts/verify-fail-closed.mjs — automated verification: infrastructure failure → HTTP error (4xx/5xx), NOT synthetic success; assert no status: "OPTIMAL" or approved: true in response
QA team
CRITICAL
Week 3-4 of Phase 1B
GAP-05: No Fake Tests
ID
Action
Owner
Priority
Target
BL-017
Audit test files for magic numbers (32.4m, 17.6m, total_allocated_kg: 18500, etc.) that don't come from real engine data
QA team
CRITICAL
Day 1-2 of Phase 1C
BL-018
Rewrite each fake test: either (a) create real claims/data through the engine and assert the engine-produced values, or (b) restructure to assert structural contract only (shape, not specific values)
QA team + Platform team
CRITICAL
Week 1-2 of Phase 1C
BL-019
Flag which tests were "fake" and which were rewritten — document in the backlog
QA team
CRITICAL
Week 2 of Phase 1C
BL-020
Add ESLint rule no-magic-numbers-in-tests — flag test assertions against specific number values not backed by real engine data
Platform team
CRITICAL
Week 2 of Phase 1C
BL-021
Add the lint rule to the CI pipeline — build fails if any test asserts a magic number from a non-engine
Platform team
CRITICAL
Week 2-3 of Phase 1C
BL-022
Create and run scripts/verify-fake-tests.mjs — automated identification of fake tests
QA team
CRITICAL
Week 3-4 of Phase 1C
BL-023
Update AGENTS.md mandates section with concrete examples of forbidden/fixed patterns
Replace each hardcoded UI metric with a call to the live backend API or database query; if unavailable, replace with null (UI shows skeleton loader or honest empty state)
Frontend team
HIGH
Week 1-2 of Phase 2A
BL-026
Replace each hardcoded value in API routes — route to real data source; if unavailable, return HTTP 503 with error description; if request doesn't match contract, return HTTP 400
Backend team
HIGH
Week 1-2 of Phase 2A
BL-027
Replace each magic number in test files — either create real claims/data through the engine and assert engine-produced values, or restructure to assert structural contract only
Add all three lint rules to the CI pipeline — build fails if any violation exists
Platform team
HIGH
Week 3 of Phase 2A
BL-030
Run verification scripts: test_proxy_auth2.mjs (0 errors after Keycloak login), capture_all.mjs (4 previously-422 endpoints now 200, e.g. /v1/changes/count → {"data":13}), 16/16 tests pass across 5 test scripts
QA team
HIGH
Week 3-4 of Phase 2A
BL-031
Fix LaunchDarkly bundle — verify the entrypoint.sh sed patch for LD is applied and idempotent; verify the zg? passthrough pattern works
Frontend team
HIGH
Week 3-4 of Phase 2A
BL-032
Verify kutuma-api environmentId — confirm the patched getSignedToken falls back to member.environmentId, MongoDB backfill is in place, patched image kutuma-api:patched is running
Backend team
HIGH
Week 3-4 of Phase 2A
GAP-06: Trusted Timestamping on Finalize
ID
Action
Owner
Priority
Target
BL-033
Investigate timestamp-authority options — check if external timestamp service (AWS TimeSync, on-prem KMS, etc.) is available, or if a PSAP/timestamp-authority customer will arrive
Platform team + Security team
HIGH
Week 1 of Phase 2B
BL-034
If external authority available: design integration, implement timestamp attachment to receipt claims, test end-to-end
Platform team + Security team
HIGH
Week 1-2 of Phase 2B
BL-035
If no external authority: design internal deterministic timestamp mechanism bound to receipt claim's root hash, generated at finalisation time, verifiable by recomputing from session chain head
Platform team + Security team
HIGH
Week 1-2 of Phase 2B
BL-036
Update FCT-18 card status from DEFERRED to resolved or deferred-with-conditions
Program management
HIGH
Week 2 of Phase 2B
GAP-07: Live Money Movement Gating
ID
Action
Owner
Priority
Target
BL-037
Document the gating conditions for FINMON-16 live desk in a runbook: "finance keys + human approval + payments ledger ready"
Finance team
HIGH
Week 1 of Phase 2C
BL-038
Backfill members.environmentId in MongoDB for each org's first (Development) environment (verify the already-done fix is correct)
MongoDB team
HIGH
Week 1 of Phase 2C
BL-039
Verify the patched getSignedToken function falls back to member.environmentId when environmentId is not supplied
Backend team
HIGH
Week 2 of Phase 2C
BL-040
Write the FINMON-16 runbook with detailed steps for when the finance gate lifts, including who approves, what keys are needed, and how the ledger is prepared
Finance team
HIGH
Week 2-3 of Phase 2C
BL-041
Test the soft path end-to-end from split profile creation through wallet credit (soft, not live), verifying every leg reports its real outcome
Platform team
HIGH
Week 3-4 of Phase 2C
BL-042
Verify the four previously-422 endpoints now return 200: /v1/changes/count, /v1/environments/me, /v1/notification-groups, /v1/notification-templates
QA team
HIGH
Week 4 of Phase 2C
MEDIUM Priority Items
GAP-08: Emergency-Call Location Format
ID
Action
Owner
Priority
Target
BL-043
Monitor for PSAP customer engagement — track if any public-safety answering point expresses interest
Program management
MEDIUM
Ongoing (Week 1 of Phase 3A)
BL-044
If PSAP customer arrives: design the location pack as declarative configuration in the scenarios plane with geospatial NATS subject routing
Platform team
MEDIUM
Week 1 of Phase 3A (if customer arrives)
BL-045
If no PSAP customer: document the deferration in the program backlog with a clear re-unblocking condition; ensure no code depends on this feature
Program management
MEDIUM
Week 1 of Phase 3A
GAP-09: Six-Stage Promotion Lifecycle
ID
Action
Owner
Priority
Target
BL-046
Design the six-stage workflow (draft → submission → validation → approval → settlement → retired) in Kestra or Camel, backed by the scenarios plane
Platform team + Kestra/Camel team
MEDIUM
Week 1-2 of Phase 3B
BL-047
Map each claim type fragment to the six-stage workflow — ensure every pilot claim type (motor, medical, home, government benefit, government compensation, community ticket, industrial) has a complete mapped lifecycle
Platform team
MEDIUM
Week 2 of Phase 3B
BL-048
Implement the dual-control integration — the draft→commit→project pattern from D-08 FCT-18 must integrate with the six-stage workflow, not be separate
Platform team
MEDIUM
Week 2-3 of Phase 3B
BL-049
Emit outbox events at each stage — verify structural events write only delivery anchors, index synchronisation follows as consequence
Platform team
MEDIUM
Week 3 of Phase 3B
BL-050
Test end-to-end — create a real claim through the full six-stage lifecycle, verifying outbox events, proof receipts, and final state
QA team
MEDIUM
Week 4 of Phase 3B
BL-051
Update the readiness probe — ensure it correctly reports the lifecycle stage as part of its five-probe check
Platform team
MEDIUM
Week 4 of Phase 3B
GAP-10: Break-Glass Elevation
ID
Action
Owner
Priority
Target
BL-052
Design the break-glass workflow — records a proof event when invoked, files a corrective action claim, bounds the TTL and role expiry
Platform team + Security team
MEDIUM
Week 1-2 of Phase 3C
BL-053
Implement the break-glass workflow — in Kestra/Camel or as a SurrealQL procedure with the break-glass guard
Platform team + Security team
MEDIUM
Week 2 of Phase 3C
BL-054
Test end-to-end — invoke break-glass in dev, verify the proof event and corrective action claim are recorded, verify the TTL and role expiry are bounded
QA team
MEDIUM
Week 2-3 of Phase 3C
BL-055
Document the pattern — update AGENTS.md mandates with the break-glass design
Design the customer-held seal/certification/signing root infrastructure — if a customer or use case requires it
Platform team + Security team
MEDIUM
Week 1-2 of Phase 3D
BL-057
If a customer requires it: deploy the infrastructure and test end-to-end
Platform team + Security team
MEDIUM
Week 2-3 of Phase 3D
BL-058
If no customer requires it: explicitly document in AGENTS.md that these are out of scope for this release, the platform operates without them, and the "stop and ask the user" pattern applies if future need arises
Platform team
MEDIUM
Week 2-3 of Phase 3D
BL-059
Update AGENTS.md mandates — document the decision
Platform team
MEDIUM
Week 3 of Phase 3D
GAP-12: Cross-Cutting Lint for Honesty Invariants
ID
Action
Owner
Priority
Target
BL-060
Design the cross-cutting lint rule — checks module responses for invent_refuse_live and live_gate_met flags where applicable
Platform team
MEDIUM
Week 1 of Phase 3E
BL-061
Implement the lint rule — ESLint or equivalent for the project's tech stack
Platform team
MEDIUM
Week 1-2 of Phase 3E
BL-062
Audit existing modules — check each module's responses carry the required flags; fix any that don't
Each module team
MEDIUM
Week 2-3 of Phase 3E
BL-063
Add CI enforcement — add the lint rule to the CI pipeline
Platform team
MEDIUM
Week 3-4 of Phase 3E
BL-064
Document the invariant — update AGENTS.md with the honesty invariant pattern
Platform team
MEDIUM
Week 4 of Phase 3E
GAP-13: Kazi Lookup and Scenario Packs
ID
Action
Owner
Priority
Target
BL-065
Create datasets/lookups/lookup.kazi* files — the lookup tables for KaziSasa
KaziSasa vertical team
MEDIUM
Week 1-2 of Phase 3F
BL-066
Create kazi scenario packs under datasets/scenarios/ — journey definitions, panel configs, SLA windows, quorum bands
KaziSasa vertical team
MEDIUM
Week 1-2 of Phase 3F
BL-067
Verify the verify-kazi-headless-api.mjs script can load these packs — ensure the imported helpers (createRequisition, submitCrewBid, solveCrewMatching, bindMicroInsurance, reserveToolDepotEquipment, etc.) can load from the new files
KaziSasa vertical team + QA team
MEDIUM
Week 2-3 of Phase 3F
BL-068
Run verify-kazi-headless-api.mjs against real infrastructure — confirm all 9 gates pass
QA team
MEDIUM
Week 3-4 of Phase 3F
BL-069
Map all KaziSasa endpoints to canonical claim types — ensure every endpoint in the shim routes through canonical planes
KaziSasa vertical team
MEDIUM
Week 3-4 of Phase 3F
GAP-14: MARS Schema Fork Resolution
ID
Action
Owner
Priority
Target
BL-070
Audit database/schema/mars/ — list all tables, identify mars_ and killbill_mars_ violations
MARS team
MEDIUM
Week 1 of Phase 3G
BL-071
Migrate each violable table to canonical kinds — determine the canonical mapping (claim, truth_node, truth_edge, resource, integration_entity) and create the migration
MARS team + Platform team
MEDIUM
Week 1-3 of Phase 3G
BL-072
Delete or rename violating tables that cannot be mapped canonically (stop-and-ask-the-user for any unmappable)
MARS team
MEDIUM
Week 3-4 of Phase 3G
BL-073
Update MARS-CFG backlog — reflect the remediation status, update TODO items, remove items now resolved
MARS team
MEDIUM
Week 4-5 of Phase 3G
BL-073
Verify MARS-CFG backlog status — confirm "MARS is a configuration pack, not a schema fork" headline is accurate
MARS team
MEDIUM
Week 5 of Phase 3G
GAP-18: Verifier Suites Not Executed
ID
Action
Owner
Priority
Target
BL-074
Execute scripts/verify-kazi-headless-api.mjs against real infrastructure → 9/9 gates
QA team
HIGH
Week 1-2 of Phase 4A
BL-075
Execute scripts/verify-kazi-solver-gateway.mjs against real :3070 → 5/5 gates