Dingos Seat Allocator — Admin

Ad-hoc ops tools for data-integrity monitoring + recovery. Read-only unless marked otherwise.

Manifest ↔ D1 Reconcile
Compare the current OpHub manifest against the current D1 passenger table for a given date + tour. Flags cid misalignment, missing/extra rows, column-shift artifacts, and duplicate cids. The tool that would have caught the 2026-10-18 incident at 22:53 instead of 09:00 the next day.
Waiver Status + Resend
Per-booking view of every pax's waiver completion status (Dingos passenger + AAG aagpassenger, child-order rollup included). Match hierarchy is customer_id first, then booking-scoped email/name, then date-only with explicit ambiguity flag when more than one waiver matches. Resend action per pax uses the existing /waivers/resend pipeline.
Allocation Audit Log
Append-only history of vehicle_letter + departure_index changes per booking/date. Explicit mutation-path audit: every known path that modifies allocations snapshots pre-state and commits an audit row only when the UPDATE actually lands, so a future wipe is recoverable from D1 alone (no more driver-report reconstruction).
Booking Timeline
Chronological event stream for a bookingRef — pax lifecycle (added / cancelled), waiver submits, and allocation changes, merged across Dingos + AAG tables with timestamps. Diagnostic companion to Waiver Status + the Waiver Completion Diagnostic — "when did what happen to this booking".
Waiver Completion Diagnostic ↗
Guest insists "I completed it" but the tile is still yellow — this tool explains why. Takes bookingRef + date; cross-checks R2 archive (proof of click, with licence photo signal) against the D1 waiver tables and the attribution logic that powers the tile. Diagnoses the exact category: r2_only (write dropped — use replay-from-archive), attribution_gap (cid/tour mismatch), ambiguous, d1_only, or no_proof. Hosted on the waiver worker since R2 lives there. Requires the WAIVER_ADMIN_SECRET Secrets Store value (set it to the same string as ADMIN_SECRET to make this one-click).