From 8d066617afb19590b5d63153f0758ff04df34c6d Mon Sep 17 00:00:00 2001 From: tornidomaroc-web Date: Thu, 23 Jul 2026 14:10:23 +0100 Subject: [PATCH] docs: close register #45 (verified + rotated) and log design items #46-#49 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert #45 in place (πŸ”΄β†’βœ…) with the measured evidence chain: production /_/ingestion/health went 200 (no redirect) β†’ 307 β†’ 404 after PR #67 merged; config removal alone sufficed, no dashboard deletion. INGESTION_TOKEN rotated Railway-first then Vercel, verified by a real production upload reaching READY. Log four product-design items raised by Abo Jad as registers #46-#49 (all OPEN): settings-page premium polish, per-material actions, landing-page nav menu, and an animated terminal demo (with the #20 "Ready in 0.4s" correction). Append-only Β§7: one new block (18β†’19), no landed entry touched. Refresh the three header fields. Docs-only; Phase 7 stays ⬜, register #17 stays OPEN. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/PROGRESS.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 3257c18..9c3e132 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -6,8 +6,8 @@ file at the **end of every step** so we never jump ahead on a deferred item or skip a main phase. - **Last updated:** 2026-07-23 - see [PROGRESS Β§7 Changelog](#7-changelog). This field carries the date only; the narrative lives in Β§7. -- **Active branch:** `fix/remove-duplicate-vercel-ingestion-service` - this PR removes the vestigial `experimentalServices.ingestion` sub-key from `vercel.json` that was serving a LIVE DUPLICATE of the ingestion service at `/_/ingestion` (confirmed 200 on `/health`), and logs the incident as register **#45**. Touches **only** `vercel.json` and this file (the #45 row, this Β§7 block, and these three header fields). **No code, no other register row, no Β§1-Β§6 content, no B5b row, `PIVOT_PLAN.md` untouched.** Register **#45** stays OPEN until production `/_/ingestion/health` is confirmed 404 AND `INGESTION_TOKEN` is rotated. -- **Main tip:** `2d0856d` (PR **#66** merge - the changelog migration off the line-8 header field into the append-only Β§7, all 17 entry bodies byte-identical), on top of `c119f6b` (PR **#65** - register #17 WIP preservation snapshot) and `0a0557f` (PR **#64** - the gate-integrity arc log). Both required checks green on `2d0856d` (`tsc`, `db-types`). +- **Active branch:** `docs/close-45-and-log-design-items` - this docs-only PR CLOSES register **#45** (the live duplicate Vercel ingestion service is gone and `INGESTION_TOKEN` was rotated) by converting its row in place (πŸ”΄β†’βœ…, original lead preserved after "Was:"), and logs four new product-design items as registers **#46-#49** (settings-page premium polish, per-material actions, landing-page nav menu, animated terminal demo). Touches **only** this file (the #45 row, four new register rows, one new Β§7 block, and these three header fields). **No code, no other register row's substance, no Β§1-Β§6 phase content, no B5b row, `PIVOT_PLAN.md` untouched.** Register **#17** stays OPEN. +- **Main tip:** `ecb1ed5` (PR **#67** merge - the duplicate-ingestion-service removal: the `experimentalServices.ingestion` sub-key dropped from `vercel.json`, keeping `frontend`), on top of `2d0856d` (PR **#66** - the Β§7 changelog migration off the line-8 header field, all 17 entry bodies byte-identical) and `c119f6b` (PR **#65** - register #17 WIP preservation snapshot). Both required checks green on `ecb1ed5` (`tsc`, `db-types`). > βœ… **RESOLVED 2026-07-04 β€” Supabase project back online (register #21).** The > project **auto-paused** (free-tier inactivity) and then hit Supabase's free @@ -141,7 +141,11 @@ project memory, and per-step review debates. "Where" is the target phase/trigger | 42 πŸ”Ž **SURFACED 2026-07-17 (P4 wiring session) β€” the class behind #3 stays open. `file_type` sub-class ROOT-closed 2026-07-18 (PR #56); `language` sub-class app-closed 2026-07-18 (PR #58); `Tier` inline copy deduped 2026-07-20 (PR #60); CLASS STILL OPEN β€” `Message.role` primary.** | **Nothing prevents the NEXT drifted hand-written type.** `db-types` proves `database.types.ts` matches the migrations; `tsc` (post-``) proves app **code** matches those generated types. **Neither checks that the hand-written types in `src/types/index.ts` match the generated `Row` types.** Under `strict:false` (see #41) a wider DB row assigns cleanly to a narrower/wrong hand-written interface, so a stale union or a missing column drifts **silently** β€” exactly how #3's `file_type` was wrong on `main` for months, and why `Quiz` was missing `lang`. Adding `lang` to `Quiz` (PR #53) closed **today's instance**; the **class stays open.** **UPDATE 2026-07-18 (PR #56, merge `77ffdd3`) β€” the MOST HARMFUL sub-class is now closed AT ITS ROOT for `file_type`, not merely corrected.** The sub-class is: **a narrowed, app-enforced string column whose union can rot apart from a SECOND declaration** (the write-path validator). PR #56 hoisted `ALLOWED_FILE_TYPES` (an `as const` array) into `src/types/index.ts` as the SINGLE SOURCE OF TRUTH; `Document.file_type = FileType | null` DERIVES from it, and the ingest route's upload validator IMPORTS the same array (MIME map typed `Record`; runtime allowlist tests membership against that array) β€” so the compile-time domain and the write-path allowlist are LITERALLY the same declaration, and a drift is a `tsc` error instead of the silent 415/type-lie that made #3's `file_type` wrong for months. **Type-level dedup only β€” ingestion behaviour UNCHANGED** (same accepted set, same 415 + message, same MIME cross-check, same `ext` written). **#42 STAYS OPEN β€” this is ONE column at its root, NOT the class.** The same rot-capable second declaration still exists for **`KnowledgeBase.language`** (`useState<'ar'|'en'|'both'>` + a lying `as 'ar'|'en'|'both'` cast on the ``'s `