From 70b4a0feb2aff7cf223e78cdb632c394872ea0f2 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 14:47:58 +0000 Subject: [PATCH 1/7] docs(issues): queue #170 closure via the outstanding-issues inbox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR E (therapy-compass) was requested as the next task in this rollout, but investigation found it already merged into main — twice, independently, by concurrent sessions (#1885, then #1889 which redid the convergence and also fixed a real AND/OR bug in searchTherapies' tag matching that #1885 left mode-owned). #1889 is what's live: search-screen.tsx uses the shared ResultFilterSheet/ResultFilterTrigger/ResultFilterFacetChips exclusively, onClearAll no longer touches the query, and all three filter dimensions are correctly typed as facets. Re-verified against current main HEAD rather than trusting the merge commit messages: lint and typecheck clean, the therapy-compass filter tests plus the shared-component and services/documents regression suites all pass, and result-filter-control.tsx has a single dense-tier implementation (no duplicate/conflicting logic from the two therapy PRs or the similarly-duplicated services PRs, #1878 then #1882). Since services (#1878/#1882), factsheets (#1888), therapy-compass (#1885/#1889) and documents (#1910) are all now merged, queues a `done` request for /issues #170 — the row tracking the whole filter-contract rollout — through the outstanding-issues inbox (docs/outstanding-issues-inbox/) rather than editing docs/outstanding-issues.md directly, per this repo's conflict-free ledger-write-discipline gate. Reconciliation into the canonical markdown happens after this PR lands (npm run issues:reconcile). Also flags one open thread rather than resolving it here: the services merge conflict-resolution wasn't re-audited line-by-line, so some of #1882's specific implementation choices (a typed ServiceRecord.facets carrier) didn't survive the merge in favor of #1878's catalogPayload-based approach. No product code changes — this is a bookkeeping-only commit plus the branch-review ledger record for the post-merge verification. --- ...f87dac8610a646c6d8808afa89e192b53bada2e80.record.md | 1 + .../fe4113b6-5287-457c-b759-5863b48405a9.json | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md create mode 100644 docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json diff --git a/docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md b/docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md new file mode 100644 index 0000000000..062a9bbb83 --- /dev/null +++ b/docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md @@ -0,0 +1 @@ +| 2026-08-13 | PR #1889 (therapy-compass filter contract, merged to main) | 9a0a00be33dedb01e9d59e81f42225cc6f9d3939 | src/components/therapy-compass, src/components/clinical-dashboard/result-filter-control.tsx, docs/filter-contract.md | Post-merge verification, not a new implementation: therapy-compass filter-contract convergence was independently completed twice by concurrent sessions (#1885 merged first, then #1889 redid the convergence and additionally fixed a real AND/OR bug in searchTherapies tag matching that #1885 left mode-owned). #1889 is what is live on main. Confirmed coherent: search-screen.tsx uses ResultFilterSheet/ResultFilterTrigger/ResultFilterFacetChips exclusively, onClearAll wired to clearSearchFilters only (query untouched, matching filter-contract.md section 6), Topics is a proper OR-within-group facet, Review status and Handout are independent one-option facet groups. Re-ran lint + typecheck + tests/therapy-compass-search-filters.dom.test.tsx + tests/therapy-search-facets.test.ts + tests/therapy-compass-mode-wiring.test.ts + tests/search-results-header-band.dom.test.tsx against current main HEAD — all green, single dense-tier implementation in result-filter-control.tsx (no duplicate/conflicting logic). This closes /issues #170 (the whole filter-contract rollout tracking row) along with the already-merged services (#1878/#1882), factsheets (#1888) and documents (#1910) PRs. Flagged in #170: the services merge (#1878 then #1882) was not re-audited line-by-line for dropped implementation choices — worth a follow-up if a deeper reconciliation audit is wanted. | lint, typecheck, therapy-compass-search-filters.dom.test.tsx, therapy-search-facets.test.ts, therapy-compass-mode-wiring.test.ts, search-results-header-band.dom.test.tsx, document-filter-panel.dom.test.tsx, service-facets.test.ts, services-catalog.test.ts, decoration-on-text.contract.test.ts, check:outstanding-issues | diff --git a/docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json b/docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json new file mode 100644 index 0000000000..f7e63cc186 --- /dev/null +++ b/docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "id": "fe4113b6-5287-457c-b759-5863b48405a9", + "createdOn": "2026-08-13", + "action": "done", + "payload": { + "id": "#170", + "outcome": "Filter-contract rollout complete — all four remaining modes merged into main: services (#1878, then #1882 both merged), factsheets (#1888), therapy-compass (#1885, then #1889, which also fixed a real AND/OR bug in searchTherapies tag matching), documents (#1910). docs/filter-contract.md Rollout section records the final shape of each mode. Re-verified 2026-08-13 against current main HEAD (lint, typecheck, therapy-compass/services/documents/shared-component test suites) rather than trusting merge-commit claims — all green, single non-duplicated dense-tier implementation in result-filter-control.tsx. Flagged, not fixed here (see branch-review-records): services and therapy-compass were each independently implemented twice by concurrent sessions unaware of each other; both pairs landed coherently on main, but the services merge (#1878 then #1882) was not re-audited line-by-line for dropped implementation choices — a typed ServiceRecord.facets carrier from #1882 did not survive, in favor of #1878's catalogPayload-based approach. Worth a follow-up if a deeper reconciliation audit is wanted." + } +} From 53925eafd0d389f8a0e5f3f66bb634379f1a6f58 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 15:03:49 +0000 Subject: [PATCH 2/7] docs(issues): track the unreconciled services filter-contract merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flagged in the previous commit's PR body but not actually captured as a trackable item: the services filter-contract adoption (#1878, then #1882) was independently implemented twice by concurrent sessions, and whatever conflict resolution happened between them when both merged was never reviewed line-by-line. A spot check found registry-records.ts has no ServiceRecord.facets carrier and no corresponding test file on main, so #1878's approach is what survived rather than #1882's — likely equivalent, not verified. Queues a P2 add request via the outstanding-issues inbox so this doesn't only live as prose inside an archived row's outcome text. --- .../0588c587-3ed9-4d77-b195-c45f7d1d1249.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json diff --git a/docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json b/docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json new file mode 100644 index 0000000000..633265a0c5 --- /dev/null +++ b/docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "id": "0588c587-3ed9-4d77-b195-c45f7d1d1249", + "createdOn": "2026-08-13", + "action": "add", + "payload": { + "pri": "P2", + "type": "task", + "summary": "Audit the unreconciled services filter-contract merge (#1878 then #1882)", + "detail": "Two independent Claude sessions each fully implemented the services filter-contract adoption (docs/filter-contract.md rollout): #1878 merged first (catalogToServiceRecord/ServiceRecord.catalogPayload-based facets), then #1882 merged on top of it, claiming the same five-facet-plus-lens implementation and the same >3-groups density tier addition to result-filter-control.tsx as #1878. Whatever conflict resolution happened between the two was not reviewed line-by-line. A quick spot-check on 2026-08-13 found src/lib/registry-records.ts (last touched by an unrelated 2026-07 commit, #1776) has no normalizeCatalogServiceTags/ServiceRecord.facets carrier and no corresponding tests/registry-records.test.ts on main — #1878's catalogPayload-based approach is what survived, not #1882's typed facets carrier. Both may be functionally equivalent (same rendered facets/counts), but this was not verified. Next: diff the two PRs' src/lib/service-facets.ts, src/components/services/services-navigator-page.tsx and src/lib/registry-records.ts implementations against what actually landed on main; confirm the live services filter sheet produces correct facet counts and no dead code/unused exports remain from whichever approach lost. Gate: focused service-facets/services-catalog/registry-records tests plus a manual facet-count spot check against the live catalogue.", + "source": "PR #1921 (therapy-compass filter-contract bookkeeping), branch-review-records/d14328e4... (post-merge verification note)" + } +} From cd0de376014f800b89555382eefe75acddc99d05 Mon Sep 17 00:00:00 2001 From: BigSimmo <87357024+BigSimmo@users.noreply.github.com> Date: Fri, 14 Aug 2026 00:43:52 +0800 Subject: [PATCH 3/7] docs(issues): drop duplicate #170 completion request --- .../fe4113b6-5287-457c-b759-5863b48405a9.json | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json diff --git a/docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json b/docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json deleted file mode 100644 index f7e63cc186..0000000000 --- a/docs/outstanding-issues-inbox/fe4113b6-5287-457c-b759-5863b48405a9.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "version": 1, - "id": "fe4113b6-5287-457c-b759-5863b48405a9", - "createdOn": "2026-08-13", - "action": "done", - "payload": { - "id": "#170", - "outcome": "Filter-contract rollout complete — all four remaining modes merged into main: services (#1878, then #1882 both merged), factsheets (#1888), therapy-compass (#1885, then #1889, which also fixed a real AND/OR bug in searchTherapies tag matching), documents (#1910). docs/filter-contract.md Rollout section records the final shape of each mode. Re-verified 2026-08-13 against current main HEAD (lint, typecheck, therapy-compass/services/documents/shared-component test suites) rather than trusting merge-commit claims — all green, single non-duplicated dense-tier implementation in result-filter-control.tsx. Flagged, not fixed here (see branch-review-records): services and therapy-compass were each independently implemented twice by concurrent sessions unaware of each other; both pairs landed coherently on main, but the services merge (#1878 then #1882) was not re-audited line-by-line for dropped implementation choices — a typed ServiceRecord.facets carrier from #1882 did not survive, in favor of #1878's catalogPayload-based approach. Worth a follow-up if a deeper reconciliation audit is wanted." - } -} From 13fe8130739d7456e035181dcf38c5fcdbed9c8c Mon Sep 17 00:00:00 2001 From: BigSimmo <87357024+BigSimmo@users.noreply.github.com> Date: Fri, 14 Aug 2026 01:00:24 +0800 Subject: [PATCH 4/7] docs(review): correct filter rollout chronology --- ...09665b582ddc5ccdb20e6efe16873ab26396ce2813f2dad8ab5.record.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/branch-review-records/f468973451ef309665b582ddc5ccdb20e6efe16873ab26396ce2813f2dad8ab5.record.md diff --git a/docs/branch-review-records/f468973451ef309665b582ddc5ccdb20e6efe16873ab26396ce2813f2dad8ab5.record.md b/docs/branch-review-records/f468973451ef309665b582ddc5ccdb20e6efe16873ab26396ce2813f2dad8ab5.record.md new file mode 100644 index 0000000000..cb6b6e4a39 --- /dev/null +++ b/docs/branch-review-records/f468973451ef309665b582ddc5ccdb20e6efe16873ab26396ce2813f2dad8ab5.record.md @@ -0,0 +1 @@ +| 2026-08-13 | PR #1889 post-merge verification (supersedes inaccurate PR #1921 record) | 9a0a00be33dedb01e9d59e81f42225cc6f9d3939 | therapy-compass filter contract and rollout chronology | Verified current main: #1889 introduced the live therapy convergence and #1885 later merged an identical tree; #1878 introduced services and #1882 later merged an identical tree. Shared therapy filter semantics are coherent. The #170 completion is already queued on main; registry serialization coverage remains tracked separately. | GitHub merge times and tree SHAs; current-main source review | From 503094257d7d56a1965d55e827b8810abbc3e702 Mon Sep 17 00:00:00 2001 From: BigSimmo <87357024+BigSimmo@users.noreply.github.com> Date: Fri, 14 Aug 2026 01:01:37 +0800 Subject: [PATCH 5/7] docs(issues): track registry facet round-trip coverage --- .../02879c2f-f7c7-4698-bc2e-cd5555cc2f37.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docs/outstanding-issues-inbox/02879c2f-f7c7-4698-bc2e-cd5555cc2f37.json diff --git a/docs/outstanding-issues-inbox/02879c2f-f7c7-4698-bc2e-cd5555cc2f37.json b/docs/outstanding-issues-inbox/02879c2f-f7c7-4698-bc2e-cd5555cc2f37.json new file mode 100644 index 0000000000..164a663afb --- /dev/null +++ b/docs/outstanding-issues-inbox/02879c2f-f7c7-4698-bc2e-cd5555cc2f37.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "id": "02879c2f-f7c7-4698-bc2e-cd5555cc2f37", + "createdOn": "2026-08-13", + "action": "add", + "payload": { + "pri": "P2", + "type": "task", + "summary": "Verify registry-backed service records preserve facet metadata", + "detail": "#1878 introduced the services filter-contract tree and #1882 later merged the identical tree, so no merge-conflict audit is required. Current main uses ServiceRecord.catalogPayload.tags and fixture coverage verifies 219 records. Add focused offline tests that recordToRow and rowToServiceRecord preserve all six tag dimensions and degrade safely when payloads are malformed or absent. Do not add a second facets carrier unless a failing test proves the current contract inadequate.", + "source": "PR #1921 review; #1878/#1882 tree comparison; service-facets.ts; registry-records.ts" + } +} From 98e2cc26caf85402c1c1f781df4144ff0970ff36 Mon Sep 17 00:00:00 2001 From: BigSimmo <87357024+BigSimmo@users.noreply.github.com> Date: Fri, 14 Aug 2026 01:01:56 +0800 Subject: [PATCH 6/7] docs(issues): remove superseded merge-audit request --- .../0588c587-3ed9-4d77-b195-c45f7d1d1249.json | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json diff --git a/docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json b/docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json deleted file mode 100644 index 633265a0c5..0000000000 --- a/docs/outstanding-issues-inbox/0588c587-3ed9-4d77-b195-c45f7d1d1249.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": 1, - "id": "0588c587-3ed9-4d77-b195-c45f7d1d1249", - "createdOn": "2026-08-13", - "action": "add", - "payload": { - "pri": "P2", - "type": "task", - "summary": "Audit the unreconciled services filter-contract merge (#1878 then #1882)", - "detail": "Two independent Claude sessions each fully implemented the services filter-contract adoption (docs/filter-contract.md rollout): #1878 merged first (catalogToServiceRecord/ServiceRecord.catalogPayload-based facets), then #1882 merged on top of it, claiming the same five-facet-plus-lens implementation and the same >3-groups density tier addition to result-filter-control.tsx as #1878. Whatever conflict resolution happened between the two was not reviewed line-by-line. A quick spot-check on 2026-08-13 found src/lib/registry-records.ts (last touched by an unrelated 2026-07 commit, #1776) has no normalizeCatalogServiceTags/ServiceRecord.facets carrier and no corresponding tests/registry-records.test.ts on main — #1878's catalogPayload-based approach is what survived, not #1882's typed facets carrier. Both may be functionally equivalent (same rendered facets/counts), but this was not verified. Next: diff the two PRs' src/lib/service-facets.ts, src/components/services/services-navigator-page.tsx and src/lib/registry-records.ts implementations against what actually landed on main; confirm the live services filter sheet produces correct facet counts and no dead code/unused exports remain from whichever approach lost. Gate: focused service-facets/services-catalog/registry-records tests plus a manual facet-count spot check against the live catalogue.", - "source": "PR #1921 (therapy-compass filter-contract bookkeeping), branch-review-records/d14328e4... (post-merge verification note)" - } -} From edd422055fcb380c86f454e9245630dfbec745b3 Mon Sep 17 00:00:00 2001 From: BigSimmo <87357024+BigSimmo@users.noreply.github.com> Date: Fri, 14 Aug 2026 01:02:11 +0800 Subject: [PATCH 7/7] docs(review): remove superseded inaccurate record --- ...d7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md diff --git a/docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md b/docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md deleted file mode 100644 index 062a9bbb83..0000000000 --- a/docs/branch-review-records/d14328e41333bd7b3e176dff87dac8610a646c6d8808afa89e192b53bada2e80.record.md +++ /dev/null @@ -1 +0,0 @@ -| 2026-08-13 | PR #1889 (therapy-compass filter contract, merged to main) | 9a0a00be33dedb01e9d59e81f42225cc6f9d3939 | src/components/therapy-compass, src/components/clinical-dashboard/result-filter-control.tsx, docs/filter-contract.md | Post-merge verification, not a new implementation: therapy-compass filter-contract convergence was independently completed twice by concurrent sessions (#1885 merged first, then #1889 redid the convergence and additionally fixed a real AND/OR bug in searchTherapies tag matching that #1885 left mode-owned). #1889 is what is live on main. Confirmed coherent: search-screen.tsx uses ResultFilterSheet/ResultFilterTrigger/ResultFilterFacetChips exclusively, onClearAll wired to clearSearchFilters only (query untouched, matching filter-contract.md section 6), Topics is a proper OR-within-group facet, Review status and Handout are independent one-option facet groups. Re-ran lint + typecheck + tests/therapy-compass-search-filters.dom.test.tsx + tests/therapy-search-facets.test.ts + tests/therapy-compass-mode-wiring.test.ts + tests/search-results-header-band.dom.test.tsx against current main HEAD — all green, single dense-tier implementation in result-filter-control.tsx (no duplicate/conflicting logic). This closes /issues #170 (the whole filter-contract rollout tracking row) along with the already-merged services (#1878/#1882), factsheets (#1888) and documents (#1910) PRs. Flagged in #170: the services merge (#1878 then #1882) was not re-audited line-by-line for dropped implementation choices — worth a follow-up if a deeper reconciliation audit is wanted. | lint, typecheck, therapy-compass-search-filters.dom.test.tsx, therapy-search-facets.test.ts, therapy-compass-mode-wiring.test.ts, search-results-header-band.dom.test.tsx, document-filter-panel.dom.test.tsx, service-facets.test.ts, services-catalog.test.ts, decoration-on-text.contract.test.ts, check:outstanding-issues |