diff --git a/docs/branch-review-records/5fce9ebe2003fc7a9fa9a853fe0edd4a9e06d2191271d4042ecb50429d0636ec.record.md b/docs/branch-review-records/5fce9ebe2003fc7a9fa9a853fe0edd4a9e06d2191271d4042ecb50429d0636ec.record.md new file mode 100644 index 0000000000..4a4b2c9910 --- /dev/null +++ b/docs/branch-review-records/5fce9ebe2003fc7a9fa9a853fe0edd4a9e06d2191271d4042ecb50429d0636ec.record.md @@ -0,0 +1 @@ +| 2026-08-13 | PR #1933 / codex/performance-live-closeout | f86f71413e6d949d37ac82eb94314aa34562351a | heavy PR review and focused fix | Confirmed one P2 ledger-identity defect: the proposed post-deployment update would overwrite canonical #117 and discard unresolved Therapy work. Queued an immutable cancellation for the faulty update plus a separate P2 performance issue, preserving both workstreams; no runtime behavior changed. Independent CodeRabbit review was unavailable because the repository hit its review limit, so a distinct manual adversarial pass was completed. | Exact-head PR required, Static PR checks, Semgrep, Semgrep ingestion gate, Gitleaks, GitGuardian, and PR mergeability passed; manual request-schema and cancellation-plan validation passed; local checkout and npm checks unavailable because the execution container could not resolve github.com. | diff --git a/docs/outstanding-issues-inbox/821d7e63-4bf3-4af7-abfb-071f916b847c.json b/docs/outstanding-issues-inbox/821d7e63-4bf3-4af7-abfb-071f916b847c.json new file mode 100644 index 0000000000..920c4494f5 --- /dev/null +++ b/docs/outstanding-issues-inbox/821d7e63-4bf3-4af7-abfb-071f916b847c.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "id": "821d7e63-4bf3-4af7-abfb-071f916b847c", + "createdOn": "2026-08-13", + "action": "cancel", + "payload": { + "requestId": "e7fe0e34-3ff3-48d0-878c-2d7a7fe792f1", + "reason": "The request incorrectly re-scopes canonical #117 and would discard the still-open Therapy catalogue payload work." + } +} diff --git a/docs/outstanding-issues-inbox/a51fd616-bb58-4a1b-9009-21686eea2a84.json b/docs/outstanding-issues-inbox/a51fd616-bb58-4a1b-9009-21686eea2a84.json new file mode 100644 index 0000000000..4edd111616 --- /dev/null +++ b/docs/outstanding-issues-inbox/a51fd616-bb58-4a1b-9009-21686eea2a84.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "id": "a51fd616-bb58-4a1b-9009-21686eea2a84", + "createdOn": "2026-08-13", + "action": "update", + "payload": { + "id": "#117", + "detail": "**Outcome:** `/therapy-compass` mobile LCP lands near the other mobile routes instead of double them. **Measured 2026-07-30** by the new pre-merge Lighthouse budget: mobile LCP 5229 ms, TBT 612 ms, CLS 0.142, against 2123-2460 ms on every other mobile route and 826 ms on desktop — so it is client-side work under mobile CPU/network throttling, not server latency. **Cause before this PR:** `useTherapyData` fetched `/therapy-compass-data/therapies-index.json` (the stable public alias served by a Next rewrite to the thin browse index; 205 records) for the home/search/pathways screens, so the download plus JSON parse sat on the critical path before content painted. **Current split:** home now fetches `public/therapy-compass-data/therapies-home.211dab554c4ec62d.json` (136,288 bytes raw), pathways use the thin browse index, and search loads the full prose corpus (#1471). 90% of the index weight is long-form clinical prose — indications 159 KB (26%), contraindicationsOrCautions 139 KB (23%), bestUsedFor 73 KB (12%), clinicalSummary 67 KB (11%), patientPopulation 59 KB (10%), targetSymptoms 48 KB (8%) — while name, slug, category, tags and setting together are 54 KB (7%). **Remaining decision for search/pathways: rendered on the card, matched by search, or neither.** `therapy-card.tsx` references five of those prose fields and the same index feeds the search screen, so stripping fields could silently change clinical display or search recall. **Next:** settle that per-field question, then either pre-truncate prose that only feeds card display, or move search matching server-side / load prose on first keystroke. **Gate:** `check:therapy-data-index` plus the therapy Playwright journeys; re-measure with `npm run verify:lighthouse`. **Stop:** do not drop a field from the catalogue payload without confirming no card renders it and no search path matches on it. Same class as #013 (route-chunk / catalogue JSON weight), different route and now measured." + } +} diff --git a/docs/outstanding-issues-inbox/e7fe0e34-3ff3-48d0-878c-2d7a7fe792f1.json b/docs/outstanding-issues-inbox/e7fe0e34-3ff3-48d0-878c-2d7a7fe792f1.json new file mode 100644 index 0000000000..f166ab75ad --- /dev/null +++ b/docs/outstanding-issues-inbox/e7fe0e34-3ff3-48d0-878c-2d7a7fe792f1.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "id": "e7fe0e34-3ff3-48d0-878c-2d7a7fe792f1", + "createdOn": "2026-08-13", + "action": "update", + "payload": { + "id": "#117", + "summary": "All live mobile routes breach LCP; shared CSS delivery and JavaScript are the current bottleneck", + "detail": "PR #1927 is merged and deployed to Railway production at exact SHA f2abf5baf3f449a1803bedef9dc107f30b70db93. Three-sample live medians on that SHA are Documents 3374 ms, DSM 3961 ms, Forms 3507 ms, root 3819 ms, Therapy 3422 ms, and Services 3793 ms; desktop LCP is 580-679 ms and mobile CLS remains within the rule. The production CSS split is retained and reduced four canonical medians modestly, but every mobile route still breaches 2500 ms. Root trace attribution is now concrete: TTFB 283 ms, LCP render delay 3449 ms, the 46,724-byte transferred shared stylesheet completes at 3644 ms under the throttled critical-request contention, total main-thread work is 1785 ms, script evaluation is 1030 ms, and shared chunk 8322 alone consumes 870 ms CPU. Next: split the 4,251-line global stylesheet by route ownership and reduce the shared search-shell/root client boundary before repeating the same bounded live matrix. Therapy field safety review remains required for search/pathways. INP remains unverified because Lighthouse does not measure it and no usable CrUX result exists. Stop: do not strip clinical fields, weaken the Lighthouse budget, refresh a passing baseline to hide latency, or claim an INP pass.", + "source": "PR #1927; Railway deployments 1224ed55-210d-443b-94e5-20f87475468c and 810cc8b3-e39a-493f-b18f-8c63d150d53f; live Web Vitals runs 31719448766 and 31719451951" + } +} diff --git a/docs/outstanding-issues-inbox/ee6875e6-62ad-4f2e-8644-6f3b7a973d87.json b/docs/outstanding-issues-inbox/ee6875e6-62ad-4f2e-8644-6f3b7a973d87.json new file mode 100644 index 0000000000..cdaf13ae2b --- /dev/null +++ b/docs/outstanding-issues-inbox/ee6875e6-62ad-4f2e-8644-6f3b7a973d87.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "id": "ee6875e6-62ad-4f2e-8644-6f3b7a973d87", + "createdOn": "2026-08-13", + "action": "add", + "payload": { + "pri": "P2", + "type": "issue", + "summary": "All live mobile routes breach LCP; shared CSS delivery and JavaScript are the current bottleneck", + "detail": "PR #1927 is merged and deployed to Railway production at exact SHA f2abf5baf3f449a1803bedef9dc107f30b70db93. Three-sample live medians on that SHA are Documents 3374 ms, DSM 3961 ms, Forms 3507 ms, root 3819 ms, Therapy 3422 ms, and Services 3793 ms; desktop LCP is 580-679 ms and mobile CLS remains within the rule. The production CSS split is retained and reduced four canonical medians modestly, but every mobile route still breaches 2500 ms. Root trace attribution is now concrete: TTFB 283 ms, LCP render delay 3449 ms, the 46,724-byte transferred shared stylesheet completes at 3644 ms under the throttled critical-request contention, total main-thread work is 1785 ms, script evaluation is 1030 ms, and shared chunk 8322 alone consumes 870 ms CPU. This is separate from canonical #117, which continues to track the unresolved Therapy catalogue payload and per-field safety decision. Next: split the 4,251-line global stylesheet by route ownership and reduce the shared search-shell/root client boundary before repeating the same bounded live matrix. Therapy field safety review remains required for search/pathways. INP remains unverified because Lighthouse does not measure it and no usable CrUX result exists. Stop: do not strip clinical fields, weaken the Lighthouse budget, refresh a passing baseline to hide latency, or claim an INP pass.", + "source": "PR #1927; Railway deployments 1224ed55-210d-443b-94e5-20f87475468c and 810cc8b3-e39a-493f-b18f-8c63d150d53f; live Web Vitals runs 31719448766 and 31719451951; PR #1933 review" + } +}