From 754aec18099af7cdedfc24611b6b0a461dbf8d1f Mon Sep 17 00:00:00 2001 From: shum Date: Sat, 22 Aug 2026 11:09:54 +0000 Subject: [PATCH] plan: record a1 postgres dump and lint gaps --- plans/2026-08-21-badges-web-checkout.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plans/2026-08-21-badges-web-checkout.md b/plans/2026-08-21-badges-web-checkout.md index 101360669a..d20c2e9993 100644 --- a/plans/2026-08-21-badges-web-checkout.md +++ b/plans/2026-08-21-badges-web-checkout.md @@ -1335,7 +1335,9 @@ No step in this plan waits on an answer. This section lists only the values an o Append here when a step contradicts this plan: the step id, what was wrong, and what was done instead. -- *(none yet)* +- **A1 — the migration entry is inserted chronologically, not appended.** The step said to append after `20260723_contact_request_rejection`, "whose current last entry is" that migration. Merging `master` into this branch added `20260813_auto_accept_group_invitations` after it, so `20260731_user_badges` now goes *between* the two, in both lists. Read the lists before editing rather than trusting a stated last entry; the same applies to any later step that appends to a shared list. +- **A1 — `Store/Postgres/Migrations/chat_schema.sql` is NOT regenerated. OPEN, and a release blocker.** The step's Verify requires committing it. The development environment has no PostgreSQL binaries and no container runtime, so the `client_postgres` suite cannot run: it builds and links, then fails at `Connection refused` on port 5432. Nothing catches this automatically — `build-linux-postgres` in `.github/workflows/build.yml:389` is gated on `startsWith(github.ref, 'refs/tags/v')` and only builds the library; it never runs the Postgres schema-dump spec. **Regenerate and commit that dump on a machine with PostgreSQL before this branch merges.** A3 has the same Postgres verification leg and will hit the same wall. +- **A1 — `chat_lint.sql` gains 5 fkey-index advisories, left unfixed by design.** The badge migration introduces unindexed foreign keys: `badge_invoices.offer_id`, `badge_invoices.price_id`, `badge_offers.price_id`, `badge_issuances.entry_id`, `users.shown_badge_id`. The lint output is committed literally rather than adding indexes, since index design is outside A1's scope and the repo has precedent for this (`9e000d6bc`). The first three point at rarely-mutated reference tables. The last two are the ones likely to matter under load — `badge_issuances.entry_id` for issuance lookup by ledger entry, and `users.shown_badge_id` for per-user badge display (C1's `getShownPurchase`). Decide on indexes for those two before release. ## 10. End-to-end verification