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-14.

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+14 ahead
main · auto-deploys on push

T4/T8 accrual · dup-name plate split · debit loader · QA HIGH fixes

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

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

Open issues

0

0 bugs · 0 other

Open PRs

0

Backlog open

14

across 8 areas

Commit velocity

160 total

per week · last 8

Queued for v1.1.22

14 commits · staging → prod
#173

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

Merged
#172

feat(board): live Delivery Board → GitHub Pages

Merged
#171

chore(metrics): scheduled recon-engine health metrics → STATUS.md

Merged
#169

fix(compute): #158 — split dup-name ledgers by plate; drop pure-duplicate rows

Merged
#168

fix(compute): #161 — dedup duplicate payments in money totals (T8)

Merged
#167

fix(web): #160 — client expected-clock cutoff = today−1 (match server no-cap)

Merged
#166

fix(batch): stop expected/gap ~doubling on login (DD/MM latestDate misparse)

Merged
#165

fix(compute): T4 cutoff — advance expected clock daily (no latest-cap)

Merged
#159

fix(compute): T4 cutoff — expected clock = min(latest, today−1), not latest−1

Merged
#157

fix(qa): HIGH-severity staging QA fixes — pace crash, CRM dedup, import txid guard

Merged
#156

fix(loader): correct Kigali date-shift in load-production toIso

Merged
#155

feat(imports): consider debits + import-rejects ledger

Merged
To ship: Validate the totals on staging against /api/*, then tag v1.1.22. The client still double-counts dup-names (#170) until the UI mirrors #169 — worth landing in the same release.

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 · 5 done · 6 partial · 4 open
Done / match 5Partial 6Open 4
T1#162
Deposit bundles split 50k + daily
T2#163
Two working-day fns
T3#163
Two compliance formulas
T4#165·#167
Cutoff advances daily
T5
Bike status caps clock
T6#163
Deposits excluded from collected
T7pace
Pace active-def / Sunday interleave
T8#168
Duplicate payments once
§2
Matching (phone/plate/name)
§3#170?
4-pass dedup in totals
§5#163
Batch daily metrics
§6#163
Monthly Board report
§7T7
Daily pace
§8
Aging bands
§9#163
Category-PIT · exec extras

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