Skip to content

P0 handoff: answer three questions I left open, and clear #1692's transitional row - #1693

Merged
njrini99-code merged 2 commits into
mainfrom
docs/p0-handoff-refinements
Aug 30, 2026
Merged

P0 handoff: answer three questions I left open, and clear #1692's transitional row#1693
njrini99-code merged 2 commits into
mainfrom
docs/p0-handoff-refinements

Conversation

@njrini99-code

Copy link
Copy Markdown
Owner

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_FAILED on the Supabase main branch 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_at would have moved; across roughly two months of
merges 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 (conclusion SKIPPED
across 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.md answers exactly
that, from the live catalog, on demand — rather than only on a PR touching
supabase/migrations/**, which is the condition that made it silent. Requiring
an 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.app and /Applications/Docker 2.app exist and the
process open -a Docker launched came from Docker 2.app. Two installs
contending 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
$comment prescribes.

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

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-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@vercel

vercel Bot commented Aug 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
helmv3 Ignored Ignored Preview Aug 30, 2026 9:34pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: de3785fb-297a-4bf5-a5c4-fa6acb020018

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@supabase

supabase Bot commented Aug 30, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project qmnssrrolpinvwjjnufo because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

…#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
@njrini99-code
njrini99-code merged commit ad57fa8 into main Aug 30, 2026
48 checks passed
@njrini99-code
njrini99-code deleted the docs/p0-handoff-refinements branch August 30, 2026 21:49
njrini99-code added a commit that referenced this pull request Aug 31, 2026
…#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
njrini99-code added a commit that referenced this pull request Aug 31, 2026
…#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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant