Skip to content

docs: record B5b upload-hardening scoping (register #50)#69

Merged
tornidomaroc-web merged 1 commit into
mainfrom
docs/b5b-scoping-record
Jul 23, 2026
Merged

docs: record B5b upload-hardening scoping (register #50)#69
tornidomaroc-web merged 1 commit into
mainfrom
docs/b5b-scoping-record

Conversation

@tornidomaroc-web

Copy link
Copy Markdown
Owner

What

Docs-only. Creates docs/b5b-scoping.md — the B5b (deep upload content hardening) decision record — and logs it as register #50 in docs/PROGRESS.md. Scoping is not progress on the gate: the §1 B5b row (line 86) stays ⬜ and Phase 7 stays ⬜.

The scoping doc records

Established constraints (each verified against the code this session):

  • The real upload ceiling is Vercel's hard ~4.5 MB edge cap (platform constant, 413 FUNCTION_PAYLOAD_TOO_LARGE before the handler) — not the 50 MB the app promises in 7 places (route.ts:51/:52, DropZone.tsx:26, four i18n strings; :52's message is hardcoded English, register-docs: record live-DB reconciliation + "migration ≠ applied" lesson #17 class).
  • Ingestion runs on Railway (INGESTION_SERVICE_URL), so the route.ts/convert hop faces no second Vercel cap but a 9–13× return-path blob (each chunk's 1024-float embedding inline + full markdown, materialized by await pyResponse.json()).
  • No maxDuration anywhere (grep-empty) → the true user-facing ceiling is an UNMEASURED duration limit, not size.

Corrections recorded so they are not re-inherited:

  • The 4.5 MB cap does not mitigate decompression bombs (bounds compressed bytes, never the expansion).
  • The pre-auth body-buffering concern is bounded by the edge cap → the getUser-above-formData reorder is a low-priority ride-along (checkDocumentLimit can't move — needs kbId; enforceLimit shouldn't — it would burn a credit on a rejected request).
  • PIVOT_PLAN.md:269's "Size cap (50 MB) already exists" is FALSE — corrected here; PIVOT_PLAN.md untouched.

The split: B5b-1 (request-path, doable now) vs. B5b-2 (gated on B6), plus enablers (b1) persist chunks from Railway and (b2) signed-URL direct-to-storage.

Seven OPEN founder decisions (stated with consequences, none picked) + one OUTSTANDING duration measurement (plain-.txt-on-Preview procedure + failure-signature table).

Scope

Only two files: docs/b5b-scoping.md (new) and docs/PROGRESS.md (register row #50, one append-only §7 block, three header lines). No code, no route/validation/size-constant change; PIVOT_PLAN.md untouched; register #17 stays OPEN.

Checks

  • tsc --noEmit: pass (exit 0) — no .ts touched.
  • db-types: unaffected — no supabase/migrations/** or database.types.ts touched.

🤖 Generated with Claude Code

Create docs/b5b-scoping.md as the B5b decision record: the constraints
established+verified this session (Vercel's hard ~4.5 MB edge cap is the
real ceiling, not the app's broken 50 MB promise; ingestion is on Railway;
the 9-13x return-path blob; the UNMEASURED duration ceiling), the
corrections (the cap does not stop ZIP bombs; PIVOT_PLAN.md:269's 50 MB
claim is false), the B5b-1/B5b-2 split plus enablers (b1)/(b2), the seven
OPEN founder decisions, and the outstanding duration measurement.

Add register row #50 (§4) and one append-only §7 block; refresh the three
header lines. Scoping is not progress: B5b (§1 line 86) stays not-started.

Docs-only: no code, no route/validation/size-constant change; PIVOT_PLAN.md
untouched; register #17 stays OPEN.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 23, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
knowflow Ready Ready Preview, Comment Jul 23, 2026 6:51pm

@tornidomaroc-web
tornidomaroc-web merged commit 140bc31 into main Jul 23, 2026
4 checks passed
@tornidomaroc-web
tornidomaroc-web deleted the docs/b5b-scoping-record branch July 23, 2026 23:27
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