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.1.21 while a correctness stream lands on staging — every open issue, open PR, shipped release, and backlog item, from git + GitHub as of 2026-07-15.

QA / parity remediation detail →

ProductionHeld
v1.1.21 · since 2026-07-09

sparkreconiq.app · same-origin · Worker + Pages

Migrations 0001–0012 · RBAC seeded · deploys on v* tag only

None of the current stream is on prod yet.

Staging+24 ahead
main · auto-deploys on push

T1/T4/T8 accrual · dup-name plate split · MoMo status filter · QA HIGH fixes

Cash-flow money-in now rider-payments only (−399.7M system-inflow overcount)

Client rider maths mirror the server (#170/#179: client == server on 1075/1077)

Roster dupe-review tab (#179): normalized dedup catches 14 dupes not 3; no silent removal

Parity list FULLY CLOSED (#181: reassigned-plate + pace; narration kept by decision; frontend §5/§6/§9 validated)

Money totals conservation-clean (dup-payment + dup-name inflation = 0)

Promote staging → productiontag v1.1.22 to ship the queued stream (24 commits) to prod

Open issues

0

0 bugs · 0 other

Open PRs

0

Backlog open

14

across 8 areas

Commit velocity

170 total

per week · last 8

Queued for v1.1.22

24 commits · staging → prod
#183

feat(web): roster-dupes rider popup + batch-date editing in rider-info

Merged
#182

chore(board): parity list fully closed (traps + sections all done)

Merged
#181

fix(parity): reassigned-plate exclusion (§2) + pace per-cutoff active & Sunday interleave (§7)

Merged
#180

chore(board): #179 roster dupe-review tab shipped to staging

Merged
#179

feat: CRM Roster Duplicates review tab (no silent auto-remove)

Merged
#178

chore(board): #170 client catch-up shipped — client == server (1086/1088)

Merged
#177

fix(web): #170 — client catch-up to server rider maths (dup-name split + T1 bundle)

Merged
#176

chore(board): mark T1 done + note #164 cash-flow/MoMo-filter fixes

Merged
#175

fix(imports): #164 — MoMo status filter (F17) + cash-flow rider-payment gate (F18)

Merged
#174

fix(compute): #162 — split deposit bundles (T1)

Merged
#173

feat(board): bind board.sparkreconiq.app + link progress dashboard

Merged
#172

feat(board): live Delivery Board → GitHub Pages

Merged
To ship: Parity list is fully closed on staging (traps T1-T8 + §2-§9). Validate on staging, then ship EVERYTHING to prod in one v1.1.22 release (needs prod migrate 0013 + seed:rbac + v* tag). Only non-blocking leftover: the T8 client/server dedup-basis (2 riders / 0.013%).

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.1.212026-07-09 · current
v1.1.202026-07-09
v1.1.192026-07-08
v1.1.182026-07-08
v1.1.172026-07-07
v1.1.162026-07-07

Backlog

14 open · 8 areas
Security & auth 3
  • In-app 2FA — email OTP on login
  • Email delivery groundwork — pick a provider (Cloudflare Email Service
  • Security audit leftovers — M4 / M5 / LOW items
Domain & browsers 1
  • Cross-browser login fix — same-origin architectureDone — (#133)
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 2
  • Part B — server snapshot endpoint for cold starts
  • Recompute-chain freezes — dirty-flags + debounce
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