SparkReconIQ · Kigali · platform delivery

Delivery Board — what's live, what's queued, what's next

A single live view of the reconciliation platform's work. Prod is held at v1.3.2 while a correctness stream lands on staging — every open issue, open PR, shipped release, and backlog item, from git + GitHub as of 2026-07-20.

QA / parity remediation detail →

ProductionHeld
v1.3.2 · since 2026-07-20 · v1.3.1

v1.3.1 LIVE — edit-save 500 fix (BigInt serialize; every save was silently failing) + MoMo import ~25s→~1s; Delete&replace + Wipe-ALL-source statement re-import; split-screen sign-in + boot splash

sparkreconiq.app · same-origin · Worker + Pages · health 200

Migrations 0001–0014 · per-user access control (page deny + DB-backed custom roles) · deploys on v* tag

None of the current stream is on prod yet.

Staging+2 ahead
main · auto-deploys on push

Even with prod (v1.3.1) — nothing pending

Durable edit-save: localStorage outbox + Save button + reviewable unsaved-edits list; edits survive logout

Per-user access control: hide specific pages from a user (deny) + DB-backed custom roles (Access Levels screen)

MoMo phone-first reconcile (payer 'From' → CRM phone) + import mapping corrected (From→narration, To→bank account)

Statement re-import: Delete&replace a period (keeps edits) + Wipe-ALL-source (clean slate)

Parity list FULLY CLOSED · client == server · money totals conservation-clean

Promote staging → productiontag to ship the queued stream (2 commits) to prod

Open issues

0

0 bugs · 0 other

Open PRs

0

Backlog open

20

across 9 areas

Commit velocity

222 total

per week · last 8

Queued for —

2 commits · staging → prod
#235

feat(txn): add Account column to the Transactions table

Merged
#234

perf(daily): stop the Daily tab freezing — defer grid build, render one sub-tab

Merged
To ship: v1.3.1 SHIPPED to prod 2026-07-20 (edit-save BigInt 500 fix + fast MoMo import; Delete&replace + Wipe-ALL import; split-screen sign-in). Code-only tag — no migration/reseed. Staging even with prod, nothing pending. Backlog: reconiq.spark.taxi same-origin Safari login; rotate prod DB password.

Needs a decision / blocked

product & data calls before code

Narration bank double-booking — dedup or keep?

Legacy app deduped same-narration / different-txid bank rows; current app + #168 keep them. ~169 riders differ in the old-snapshot diff. Product call + data quantification before porting.

Decision · product
#162

Deposit override — 3-state model

T1 bundles need deposit_override = deposit | daily | null instead of today's boolean. Schema shape decision blocks the clean fix.

Decision · schema

Duplicate roster rows — fix at source vs in compute

Remove pure-duplicate rows from the upstream CRM master (data action), or keep absorbing them in compute (#169). Owner + upstream access needed.

Decision · data
#145

Polished-v2 design refresh — go / no-go

Parked reskin; finished state on design/polish-v2-parked. Revive by reverting #145, or leave prod on the current look.

Parked

Open issues

0 open

No open issues.

Legacy-app parity burn-down

full detail →15 rules · 15 done · 0 partial · 0 open
Done / match 15Partial 0Open 0
T1#162
Deposit bundles split 50k + daily
T2rider ✓ · month ✓
Two working-day fns (half-open / inclusive)
T3rider ✓ · month ✓
Two compliance formulas (floored / raw)
T4#165·#167
Cutoff advances daily
T5
Bike status caps clock
T6rider ✓ · batch ✓
Deposits excluded from collected
T7#181
Pace per-cutoff active + Sunday interleave
T8#168
Duplicate payments once
§2#164·#181
Matching + reassigned-plate excl.
§3#168 · narration=deviation
Dedup in totals (narration kept, by decision)
§5frontend ✓
Batch daily (activeR×6k · last-day)
§6frontend ✓
Monthly Board report (wdInclusive · raw comp)
§7#181
Daily pace
§8
Aging bands
§9frontend ✓
Category-PIT · exec extras (slipped/top-10/forecast)

Open pull requests

0 open

No open PRs.

Recent releases

shipped to production
v1.3.22026-07-20 · current
v1.3.12026-07-20
v1.3.02026-07-19
v1.1.302026-07-19
v1.2.162026-07-19
v1.2.152026-07-19

Backlog

20 open · 9 areas
Security & auth 4
  • In-app 2FA — email OTP on login
  • Email delivery groundwork — pick a provider (Cloudflare Email Service
  • Security audit leftovers — M4 / M5 / LOW items
  • Rotate the prod Neon DB password
Domain & browsers 1
  • Cross-browser login fix — same-origin architectureDone — (#133)
  • `reconiq.spark.taxi` same-origin so Safari can log in there
Monitoring 4
  • Prod secrets to light up parked panelsOn hold — `NEON_API_KEY` + `NEON_ORG_ID`
  • Sanity-check Neon cost math vs the Neon console — once the API key is set
  • Trend-based alert rules — compare against a 7-day baseline instead of
  • First-class email notifier for alerts — depends on the email-delivery
API & integrations 1
  • spark.taxi CRM integration — make the API integration-ready
UI / design 1
  • Polished-v2 design refresh — ON HOLDOn hold
Performance 3
  • Part B — server snapshot endpoint for cold starts
  • Recompute-chain freezes — dirty-flags + debounce
  • Client OOM — durable structural fix
Admin & operations 3
  • In-app bulk rider actions via maker-checker
  • Admin data explorer — saved parameterized queries
  • Snapshot-reload hardening
Validation & housekeeping 3
  • Rider-info edit — manual prod click-through (Tests 1/2) — direct-apply
  • PR #140 — tab title "Spark ReconIQ" (drop v27) — open; merge + ship
  • CI actions Node-20 deprecation — `actions/checkout@v4` /
Abandoned 1
  • Subdomain delegation of reconiq.spark.taxi to our CF accountAbandoned