You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
design: move ci.events webhook ledger from Supabase to Turso staging #5693
Design scope only — no data moves in this issue's first pass.
What moves
From: Supabase (muse-dev2) ci.events (10,952 live rows, 31.8 MB — ~2.9 KB/row of jsonb webhook payload)
To: Turso, staging tier, partitioned by day/repo
Why
A pure append-only CI webhook ledger: 10,957 inserts / 0 updates in the stats window since 2026-10-29, no foreign keys, read by scan (its one view, ci.recent_failures, is a filtered scan). It is the fastest-growing table in the project by bytes and has no transactional consumer — under the §9 placement rule it is a Turso stream, not Postgres state.
Design doc: §9 of doc/2026-11-04T21-27-34Z_design_atlas_scaler_revision/ (PR #5667, addendum PR #5689).
Risks
The webhook receiver is a live write path — cutover must not drop events during deploys (receiver-side buffering or dual-write).
recent_failures consumers (alerting? dashboards?) must be inventoried first; failure-visibility must not regress during the move.
Retention is currently unbounded; the Turso design should state a retention window rather than replicating unbounded growth.
Sketch of steps
Inventory the receiver(s) and every reader of ci.events / ci.recent_failures.
Design the Turso table + a recent_failures-equivalent query; set retention (propose 90 days hot, cold export beyond).
Dual-write at the receiver, backfill the retention window, diff failure queries.
Flip readers, stop the Postgres write, keep the Postgres table read-only for one retention window before any drop decision (separate approval).
The inventory cannot be done by repo grep alone. Code search for ci.events and ci.recent_failures in developing-today/code hits ONLY the design doc — the webhook receiver and the view's consumers live outside this repo's code (Supabase-side objects and/or external alerting/dashboards). The follow-up's inventory step must enumerate Supabase-side views/functions and external consumers explicitly, with not-found results stated, not assumed.
Gates preserved: this issue is design-scope only for its first pass (no data moves), and step 4's Postgres drop requires separate approval — the follow-up is scoped to steps 1–2 (inventory + Turso table / recent_failures-equivalent query / retention design, proposing the issue's 90-days-hot window) and explicitly excludes dual-write, backfill, and any cutover.
Disposition: follow-up triage/design task enqueued in this pass (see addendum). Issue #5693 stays open for it.
Expectation: claimant launches the bound opencode session and drives task 13031 to a terminal state; parked 20 minutes so task 13031 returns to the queue if the claimant does not bind.
Found via: queue claim + fresh GitHub verification
Task: blocked as packet_defect. Current design: move ci.events webhook ledger from Supabase to Turso staging #5693 says “Design scope only — no data moves in this issue’s first pass”; task 13031 instead requires live deployment, dual-run and reader/org flips without an explicit issue update authorizing that expansion.
Activity
docs: link the §9 migration design issues (#5690, #5691, #5692, #5693, …
dezren39 commentedon Nov 5, 2026
🤖 Agent note · done (triage)
Triage findings (verified fresh 2026-11-05):
doc/2026-11-04T21-27-34Z_design_atlas_scaler_revision/names issue design: move ci.events webhook ledger from Supabase to Turso staging #5693 forci.events: 10,952 rows / 31.8 MB, 10,957 inserts / 0 updates in the window — a pure append-only stream, matching the issue's placement argument.ci.eventsandci.recent_failuresin developing-today/code hits ONLY the design doc — the webhook receiver and the view's consumers live outside this repo's code (Supabase-side objects and/or external alerting/dashboards). The follow-up's inventory step must enumerate Supabase-side views/functions and external consumers explicitly, with not-found results stated, not assumed.recent_failures-equivalent query / retention design, proposing the issue's 90-days-hot window) and explicitly excludes dual-write, backfill, and any cutover.Disposition: follow-up triage/design task enqueued in this pass (see addendum). Issue #5693 stays open for it.
dezren39 commentedon Nov 5, 2026
🤖 Agent note · addendum to task 10129 triage
ci.eventsreceiver/readers plus the Turso table,recent_failures-equivalent query, and retention design. Enqueued immediately after task 10129 completed, because the packet dedupe pattern reuses the standard triage key for issue design: move ci.events webhook ledger from Supabase to Turso staging #5693.40 remaining items
dezren39 commentedon Nov 8, 2026
🤖 Agent note · handed off
developing-today commentedon Nov 8, 2026
🤖 Agent note · handed off
opencode- handed off to the opencode claimant, which launches the bound opencode session; this lane does not work it directly. Attempts 4/4 for task 13031.developing-today commentedon Nov 8, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 8, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 8, 2026
🤖 Agent note · blocked