DocFast session 128: BUG-102 fixed (sanitized PDF options ignored), 473 tests

This commit is contained in:
Hoid 2026-03-05 08:07:34 +01:00
parent 0d1689b245
commit 237e9cc546
3 changed files with 27 additions and 3 deletions

View file

@ -1,3 +1,11 @@
## BUG-102: Convert/demo routes ignore sanitized PDF options from validator
- **Date:** 2026-03-05
- **Severity:** MEDIUM
- **Issue:** `validatePdfOptions()` returns `{ valid: true, sanitized: {...} }` with normalized values (e.g., format `"a4"``"A4"`). But all convert routes (html, markdown, url) and demo routes pass raw `body.*` values to `renderPdf()` instead of `validation.sanitized.*`. Format normalization never takes effect.
- **Impact:** Users sending lowercase format like `"a4"` get it passed raw to Puppeteer. Puppeteer may reject or silently handle it, but the validator's normalization is wasted work.
- **Fix:** Use `validation.sanitized` for PDF options in all convert and demo routes.
- **Status:** ✅ FIXED — commit ba2e542. All 5 routes (3 convert + 2 demo) now use `validation.sanitized` from `validatePdfOptions()`. 5 TDD tests added (convert-sanitized.test.ts). 473 tests total, all passing. Pushed to main (staging auto-deploy pending CI runner).
## BUG-101: Body size limits on demo and convert routes are ineffective — global parser runs first ## BUG-101: Body size limits on demo and convert routes are ineffective — global parser runs first
- **Date:** 2026-03-04 - **Date:** 2026-03-04
- **Severity:** MEDIUM - **Severity:** MEDIUM

View file

@ -1,5 +1,21 @@
# Session Log # Session Log
## Session 128 — 2026-03-05 07:00 UTC (Thursday Morning)
- **Production:** v0.5.1 ✅ healthy, 2 replicas, 0 restarts, ~7.5d uptime
- **Staging:** v0.5.2 ✅ commit ba2e542 (36 commits ahead of prod)
- **K8s cluster:** All 3 nodes Ready
- **Support:** Zero tickets
- **Completed:**
1. **BUG-102 discovery & fix (TDD)** — Found that `validatePdfOptions()` returns sanitized values (e.g., format `"a4"``"A4"`) but all 5 routes (3 convert + 2 demo) ignored `validation.sanitized` and passed raw `body.*` to `renderPdf()`. Format normalization never took effect. Sub-agent fixed all routes to spread `validation.sanitized` into render options. 5 TDD tests added (convert-sanitized.test.ts). Commit ba2e542.
2. **Infrastructure health check** — All 3 K8s nodes Ready, both prod replicas healthy (0 restarts, ~7.5d uptime), DB connected (PostgreSQL 17.4), browser pool 15/15. Production demo endpoint confirmed working.
3. **Noted:** Sonnet 4 512k sub-agents still failing instantly (model availability). Used Opus successfully.
4. **Noted:** Graceful shutdown timeout (10s) vs PDF timeout (30s) mismatch is LOW priority — real-world PDFs complete in <2s.
- **Total tests:** 473 (all passing), 30 test files
- **Open bugs:** ZERO 🎉
- **CI runner:** Still absent. Managed by Cloonar — needs investor action.
- **Investor test:** Staging not rebuilt (no CI runner) but code pushed and tested locally.
- **Recommendation:** Staging v0.5.2 is production-ready with ZERO open bugs, 473 tests, 36 commits ahead. Request investor approval for production tag.
## Session 127 — 2026-03-04 19:00 UTC (Wednesday Evening) ## Session 127 — 2026-03-04 19:00 UTC (Wednesday Evening)
- **Production:** v0.5.1 ✅ healthy, 2 replicas, 0 restarts, ~7d uptime - **Production:** v0.5.1 ✅ healthy, 2 replicas, 0 restarts, ~7d uptime
- **Staging:** v0.5.2 ✅ commit c03f217 (35 commits ahead of prod) - **Staging:** v0.5.2 ✅ commit c03f217 (35 commits ahead of prod)

View file

@ -3,7 +3,7 @@
"phaseLabel": "Build Production-Grade Product", "phaseLabel": "Build Production-Grade Product",
"status": "launch-ready", "status": "launch-ready",
"product": "DocFast — HTML/Markdown to PDF API", "product": "DocFast — HTML/Markdown to PDF API",
"currentPriority": "Production on v0.5.1. Staging v0.5.2 (35 commits ahead, commit c03f217). CI runner still DOWN. npm audit 0 vulns. 468 tests passing (29 files). ZERO open bugs. Fixed BUG-101 (body size limits bypassed). Ready for production tag when investor approves.", "currentPriority": "Production on v0.5.1. Staging v0.5.2 (36 commits ahead, commit ba2e542). CI runner still DOWN. npm audit 0 vulns. 473 tests passing (30 files). ZERO open bugs. Fixed BUG-102 (sanitized PDF options ignored). Ready for production tag when investor approves.",
"ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip. Remove items marked ✅ DONE/FIXED during housekeeping.", "ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip. Remove items marked ✅ DONE/FIXED during housekeeping.",
"ownerDirectives": [ "ownerDirectives": [
"Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE — webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account." "Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE — webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account."
@ -81,9 +81,9 @@
"HIGH": [], "HIGH": [],
"MEDIUM": [], "MEDIUM": [],
"LOW": [], "LOW": [],
"note": "All bugs resolved. BUG-099 (provisionedSessions memory leak) fixed in commit 5f776db. BUG-098 (request interceptor leak) fixed in 024fa00. BUG-095/097 fixed 6290c3e. BUG-096 false positive." "note": "All bugs resolved. BUG-102 (sanitized options ignored) fixed ba2e542. BUG-101 (body limits) fixed c03f217. BUG-100 (flush poisoning) fixed d2f819d. BUG-099 (memory leak) fixed 5f776db. BUG-098 (interceptor leak) fixed 024fa00."
}, },
"sessionCount": 127 "sessionCount": 128
}, },
"blockers": [], "blockers": [],
"startDate": "2026-02-14" "startDate": "2026-02-14"