P0 handoff: answer three questions I left open, and clear #1692's transitional row - #1693
Conversation
All three were things I left balanced that the evidence already leans on, or recommendations I left as options. A finding plus three options is a question wearing a hat. 1. MIGRATIONS_FAILED — the timestamps favour "stale artifact". If the Supabase integration wrote to the default-branch record on any commit since July, updated_at would have moved; across ~two months of merges it has not, while #1681's record created today does carry a current status. Evidence, not proof, and explicitly not to be read as "the migrations are fine" — but stronger than the "both readings fit" I recorded. 2. Supabase Preview — recommend REMOVING it and pointing at the classification report. The check exists to answer "does the repo agree with production's migrations"; the report answers exactly that, from the live catalog, on demand, rather than only on a PR that touches supabase/migrations/** — the condition that made the check silent in the first place. Requiring an inert check blocks every PR; repairing it rebuilds something the report does better. Overrulable, but leaving it SKIPPED forever is the one option with nothing to recommend it. 3. Docker — name the likely cause, not just the failure. Both /Applications/Docker.app and /Applications/Docker 2.app exist and the launched process came from Docker 2.app. Two installs contending over one socket is a known way to get a live GUI and a dead daemon. Removing the duplicate is a minute of work and unblocks the local exercise directly — that is an action the owner can take, where "Docker didn't start" is not. Verified: docs:schema-drift 0, docs:path-drift 0, knowledge:check 0, markdown ratchet at baseline. The doc inventory was regenerated AFTER staging this time and produced no diff. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH
|
ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing |
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
…#1693 #1692 was transitionally closed at its own merge commit; the grace ended the moment this branch added a commit past it. Cleared in the next ordinary PR, which registers itself at the same time — the pattern the file's $comment prescribes, and the one the residue check's remedy text (added in #1692) now tells a session to follow. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH
…#1694 #1693 was transitionally closed at its own merge; the grace ended when this branch added a commit past it. Cleared in the next ordinary PR, which registers itself at the same time. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH
…#1694) * fix(guards): wire the repo guards that executed never, and the ratchet nothing ran An audit of whether every check in this repo actually runs. Full method and per-guard verdicts in docs/reports/REPO_WIRING_AUDIT_2026-08-30.md. Two things were not running. **19 guard tests executed never.** vitest.config.ts already documented the trap and ships a self-check: 51 files in scripts/__tests__, 31 listed. The unlisted ones all import `node:test`, and nothing in this repo runs `node --test` — not a script, not a workflow. Promoting one is a port, not a config line. Run under node --test, all 19 fail. What matters is why, and it splits cleanly on whether the files each guard names still exist. Six fail because every path they reference was DELETED — traced to dated commits, mostly ffd0fd8 (the W1 Fairway consolidation) and a259fa2 (the dead player-CoachHelm cluster). Ten fail on real violations in files that exist. promoted admin-tables-mobile, no-arbitrary-text-px-fairway-pages — stale targets dropped, both now green. guards: 11 files/32 tests -> 13/37. deleted chart-tooltip-consolidated (all four subjects gone — a guard with an empty subject list is not a guard), genome-fluid (its subject was REWRITTEN onto recharts; it asserts a fixed viewBox and aspect-square on a hand-rolled SVG that no longer exists), and microcopy-banned-phrases (five of seven subjects rebuilt in #1058 and #984). Deleted rather than repaired: making a retired rule pass is implementing retired policy. repaired, badge-consolidation — six dead entries and one stale allowlist still red entry removed so its failure is now HONEST: two live CRM badges genuinely stopped delegating to <Badge>. Left unlisted. That tree is NOT dead — next.config.mjs:183 redirects /golf/admin on the exact path only, and 144 files live under it — so this is a colour-fidelity refactor, which is product work, not audit work. One path was a MOVE, not a deletion (GenomeRadar -> fairway/charts/). Worth separating: dropping a moved file silently loses coverage. **lint:duplicate-exports never ran.** It has a committed baseline (.duplicate-exports-baseline.json, 27 grandfathered) and exits 1 on anything new, and no job invoked it. A ratchet nothing compares against is a green that means nothing. Wired as a fifth step in the Lint ratchet job, following the existing continue-on-error + aggregate pattern so it reports its own outcome. Six other "unwired" scripts were false positives: CI invokes them as `node scripts/…` inside multi-line run: blocks, not `npm run <name>`. Recorded in the report as method, because the naive check is the obvious one to repeat. Bottleneck, measured rather than feared: the config warns these sweeps walk ~4,066 files each and carries a 120s timeout. The whole guards project runs in 1.48s and each promoted guard costs 0.1s. No argument for promoting in waves. Verified: typecheck 0, lint 0, npm test 1275 files / 12,209 passed, guards 37/37, duplicate-exports ratchet 0, docs:schema-drift 0, docs:path-drift 0, knowledge:check 0, inventory-check 0, markdown ratchet at baseline, ci.yml parses as valid YAML. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH * chore(control-plane): clear #1693's expired transitional row, register #1694 #1693 was transitionally closed at its own merge; the grace ended when this branch added a commit past it. Cleared in the next ordinary PR, which registers itself at the same time. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Documentation only. No code, no migration, no production state.
Three things #1692 left as balanced questions or unpicked options. Each is now
an answer the owner can act on.
1.
MIGRATIONS_FAILEDon the Supabasemainbranch record. I recorded"both readings fit the timestamps" — live verdict vs. stale setup artifact. They
don't fit equally. If the integration wrote to the default-branch record on any
commit since July,
updated_atwould have moved; across roughly two months ofmerges it has not, while #1681's record created today does carry a current
status. The evidence leans stale. Recorded as leaning, not settled, and
explicitly not to be read as "the migrations are fine."
2.
Supabase Preview. #1692 established it is inert (conclusionSKIPPEDacross eight PRs) and not a required context, then left "require, repair, or
remove" open. Recommending remove, and point at the classification report.
The check exists to answer "does the repo agree with production's migrations."
docs/reports/MIGRATION_REPO_PROD_CLASSIFICATION_2026-08-30.mdanswers exactlythat, from the live catalog, on demand — rather than only on a PR touching
supabase/migrations/**, which is the condition that made it silent. Requiringan inert check blocks every PR; repairing it rebuilds something the report does
better.
3. Docker. "The daemon didn't come up" is not an action. Both
/Applications/Docker.appand/Applications/Docker 2.appexist and theprocess
open -a Dockerlaunched came fromDocker 2.app. Two installscontending over one socket is a known way to get a running GUI and a dead
daemon. Removing the duplicate is a minute of work and unblocks the plan's local
exercise of the golf-history migration directly.
Also clears #1692's disposition row, whose transitional grace ended when its own
merge stopped being HEAD, and registers this PR — the pattern the file's
$commentprescribes.Verified
docs:schema-drift 0 · docs:path-drift 0 · knowledge:check 0 · markdown ratchet at
baseline. The document inventory was regenerated AFTER staging this time and
produced no diff — the third occurrence of that index-vs-commit trap in this run
is now named in the commit message rather than repeated.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH