plan: record a1 postgres dump and lint gaps

This commit is contained in:
shum
2026-08-27 09:11:32 +00:00
parent 1b9b6faadb
commit 754aec1809
+3 -1
View File
@@ -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