Skip to content

Fix Specifiers and Formulation separation#672

Merged
BigSimmo merged 14 commits into
mainfrom
codex/formulation-specifier-separation-current
Jul 14, 2026
Merged

Fix Specifiers and Formulation separation#672
BigSimmo merged 14 commits into
mainfrom
codex/formulation-specifier-separation-current

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • restore the psychiatric Specifiers workspace as a distinct clinical surface
  • keep Formulation mechanisms under their own routes, mode, and universal-search domain
  • remove legacy redirects and add regression coverage for route, search, builder, compare, and mobile behavior

Verification

  • npm run test: 2,404 passed, 1 skipped
  • npm run lint
  • npm run typecheck
  • npm run format:check
  • npm run sitemap:check
  • npm run check:production-readiness -- --ci (READY; expected missing local provider env warnings)
  • targeted Chromium: Specifiers desktop/mobile, Formulation mobile, and route-family separation

No live Supabase or OpenAI checks were run.

Summary by CodeRabbit

  • New Features
    • Restored the standalone Specifiers area with dedicated search, detail (/specifiers/[slug]), builder, compare, and map flows.
    • Added the psychiatric specifier catalogue experience with filtering, guided wording, comparisons, and example CTAs.
  • Bug Fixes
    • Separated Specifiers vs Formulation in universal search (labels, results, and view-all destinations) and corrected route/domain wiring and headings.
    • Removed the legacy Specifiers compatibility route and normalized routing/metadata for the new Specifiers pages.
  • Documentation
    • Updated sitemap and review ledger records for the Specifiers route family.
  • Tests
    • Expanded Playwright/Vitest/universal-search/specifier coverage and route separation UI assertions.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a standalone Specifiers workspace with catalog-backed search, detail, builder, compare, and map routes. Separates Specifiers and Formulation universal-search domains, updates navigation and sitemap generation, and adds unit and Playwright coverage.

Changes

Specifiers mode

Layer / File(s) Summary
Specifier catalog and search contracts
src/lib/specifiers.ts, tests/specifiers.test.ts
Defines specifier records, search and filtering utilities, selection normalization, diagnosis applicability, related records, and integrity tests.
Specifier routes and page workflows
src/app/specifiers/..., src/components/specifiers/*
Adds routed home, detail, builder, compare, and map pages with shared navigation, search results, wording construction, comparison, and record presentation.
Mode and universal-search separation
src/lib/universal-search*.ts, src/components/clinical-dashboard/*
Maps Specifiers and Formulation to separate domains, result adapters, headings, destinations; extends dashboard actions and local search eligibility.
Route documentation and test validation
scripts/generate-site-map.ts, docs/site-map.md, docs/branch-review-ledger.md, playwright.config.ts, tests/*
Documents Specifiers routes and inventories, selects Playwright suites, validates route separation and builder state, confirms mode contracts, and records offline verification.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant SpecifiersRoute
  participant SpecifiersHomePage
  participant searchSpecifiers
  Browser->>SpecifiersRoute: Request /specifiers?q=...&run=1
  SpecifiersRoute->>SpecifiersHomePage: Pass query and autoRunSearch
  SpecifiersHomePage->>searchSpecifiers: Search catalog
  searchSpecifiers-->>SpecifiersHomePage: Return ranked records
  SpecifiersHomePage-->>Browser: Render results and detail links
Loading

Possibly related PRs

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers Summary and Verification, but it omits the required Clinical Governance Preflight section for this clinical search/routing change. Add the Clinical Governance Preflight section and complete the Notes section, including the required governance checks for search, routing, and clinical output changes.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: separating Specifiers from Formulation.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/formulation-specifier-separation-current

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 888d4a93a9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@BigSimmo

Copy link
Copy Markdown
Owner Author

@codex resolve actionable Codex review findings for this pull request and current head using the repository instructions. This is the pull request's single automatic repair pass: do not perform a fresh review, create new standalone findings, or request another review. Work only the existing unresolved Codex threads on the current head. Always fix P0 and P1 findings. For P2 and lower findings, fix only clear, scoped, low-risk issues; otherwise disposition them with a concise reason. After fixing or dispositioning a thread, reply in that thread with as the first line, followed by a concise summary; that marker authorizes the workflow to close that exact thread. If human input or new authorization is required, do not use the marker and leave the thread open with the blocker. Finish only after every actionable thread is fixed or dispositioned and closed, or explicitly left open for a human decision. Do not update the branch from main, address unrelated reviews, broaden scope, or create more than one scoped fix commit. Do not use external APIs, paid services, credentials, dependency changes, or broad refactors unless explicitly authorized. Add targeted tests where behavior changes and run the narrowest relevant validation.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 888d4a93a9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/lib/app-modes.ts
@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown

CI triage

CI failed on this PR. Automated classification of the 2 failed job(s):

  • UI regressionpossible known flake: UI/Playwright job; check tests/flake-ledger.json (tests/ui-smoke.spec.ts, tests/ui-smoke.spec.ts, tests/ui-tools.spec.ts, tests/ui-tools.spec.ts) and re-run before bisecting.
  • PR requiredpossible known flake: UI/Playwright job; check tests/flake-ledger.json (tests/ui-smoke.spec.ts, tests/ui-smoke.spec.ts, tests/ui-tools.spec.ts, tests/ui-tools.spec.ts) and re-run before bisecting.

Heuristic only — a main-side or flake label is a starting point, not a verdict.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
src/components/clinical-dashboard/master-search-header.tsx (1)

434-453: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Nested ternary keeps growing with each new mode.

actionMenuSetId is now a 10-branch nested ternary. Functionally correct, but a lookup map keyed by searchMode would scale better as more modes are added.

♻️ Suggested lookup-based rewrite
-  const actionMenuSetId: ModeActionSetId =
-    searchMode === "prescribing"
-      ? "prescribing"
-      : searchMode === "forms"
-        ? "forms"
-        : searchMode === "services"
-          ? "services"
-          : searchMode === "documents"
-            ? "documents"
-            : searchMode === "favourites"
-              ? "favourites"
-              : searchMode === "differentials"
-                ? "differentials"
-                : searchMode === "specifiers"
-                  ? "specifiers"
-                  : searchMode === "formulation"
-                    ? "formulation"
-                    : searchMode === "tools"
-                      ? "tools"
-                      : "answer";
+  const actionMenuSetIdByMode: Partial<Record<AppModeId, ModeActionSetId>> = {
+    prescribing: "prescribing",
+    forms: "forms",
+    services: "services",
+    documents: "documents",
+    favourites: "favourites",
+    differentials: "differentials",
+    specifiers: "specifiers",
+    formulation: "formulation",
+    tools: "tools",
+  };
+  const actionMenuSetId: ModeActionSetId = actionMenuSetIdByMode[searchMode] ?? "answer";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/clinical-dashboard/master-search-header.tsx` around lines 434
- 453, Replace the nested ternary assigned to actionMenuSetId with a lookup map
keyed by searchMode, preserving the existing mappings for prescribing, forms,
services, documents, favourites, differentials, specifiers, formulation, and
tools, with "answer" as the fallback. Keep the result typed as ModeActionSetId
and update the map when adding future modes.
src/components/clinical-dashboard/global-search-shell.tsx (1)

123-131: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate mode-exclusion list risks future drift.

shouldRenderDashboardSearch is computed identically in GlobalSearchShellClient (Lines 123-131) and GlobalStandaloneSearchShellClient (Lines 244-252). Adding "specifiers" required editing both copies in this PR — a future mode addition could easily miss one, silently breaking that mode's standalone-search routing in only one entry point.

♻️ Suggested extraction
+const dashboardExcludedSearchModes: readonly AppModeId[] = [
+  "services",
+  "forms",
+  "favourites",
+  "differentials",
+  "specifiers",
+  "formulation",
+];
+
+function shouldRenderDashboardSearchFor(
+  hasSubmittedModeSearch: boolean,
+  resolvedSearchMode: AppModeId,
+  isDocumentSearchMockupRoute: boolean,
+) {
+  return (
+    hasSubmittedModeSearch &&
+    !dashboardExcludedSearchModes.includes(resolvedSearchMode) &&
+    !isDocumentSearchMockupRoute
+  );
+}

Then call shouldRenderDashboardSearchFor(...) from both components.

Also applies to: 244-252

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/clinical-dashboard/global-search-shell.tsx` around lines 123 -
131, Extract the shared mode-exclusion logic from GlobalSearchShellClient and
GlobalStandaloneSearchShellClient into a single
shouldRenderDashboardSearchFor(...) helper. Have both components call this
helper with their existing search state and route values, preserving the current
exclusions and document-search mockup behavior so future modes require only one
update.
tests/ui-specifiers.spec.ts (1)

1-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate Playwright test-harness helpers across specs. tests/ui-specifiers.spec.ts copy-pastes blockExternalRequests, gotoApp, expectNoHorizontalOverflow, and expectNoBlockingAxeViolations verbatim from tests/ui-formulation.spec.ts, giving the same root cause (no shared test-utils module) at both sites.

  • tests/ui-specifiers.spec.ts#L1-L49: import the four helpers from a shared module instead of redefining them here.
  • tests/ui-formulation.spec.ts#L1-L49: extract these four helpers into a shared tests/utils/... module and import them here too.
♻️ Suggested extraction
// tests/utils/playwright-ui-helpers.ts
export async function blockExternalRequests(page: Page) { /* ... */ }
export async function gotoApp(page: Page, path: string) { /* ... */ }
export async function expectNoHorizontalOverflow(page: Page) { /* ... */ }
export async function expectNoBlockingAxeViolations(page: Page, testInfo: TestInfo) { /* ... */ }

Then in both spec files:

-async function blockExternalRequests(page: Page) { ... }
-async function gotoApp(page: Page, path: string) { ... }
-async function expectNoHorizontalOverflow(page: Page) { ... }
-async function expectNoBlockingAxeViolations(page: Page, testInfo: TestInfo) { ... }
+import { blockExternalRequests, gotoApp, expectNoHorizontalOverflow, expectNoBlockingAxeViolations } from "./utils/playwright-ui-helpers";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/ui-specifiers.spec.ts` around lines 1 - 49, Extract
blockExternalRequests, gotoApp, expectNoHorizontalOverflow, and
expectNoBlockingAxeViolations from tests/ui-formulation.spec.ts lines 1-49 into
a shared tests/utils module, exporting them with the required Playwright types.
Remove the duplicate definitions from tests/ui-formulation.spec.ts lines 1-49
and tests/ui-specifiers.spec.ts lines 1-49, and import the helpers from the
shared module in both specs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/app/specifiers/`[slug]/page.tsx:
- Around line 1-16: Improve specifier metadata and filtering safety: in
src/app/specifiers/[slug]/page.tsx lines 1-16, add generateMetadata using the
matched record’s name and summary; in src/app/specifiers/compare/page.tsx lines
1-14, add metadata reflecting compared specifiers; in
src/app/specifiers/map/page.tsx lines 1-11, add static map metadata. In
src/lib/specifiers.ts lines 635-676, introduce and reuse a shared
SpecifierApplicability union for record appliesTo values and both applicability
maps. In src/components/specifiers/specifier-map-page.tsx lines 19-22,
synchronize selection when initialSlug changes, or key the component
accordingly.

In `@src/components/specifiers/specifier-builder-page.tsx`:
- Around line 45-52: Update SpecifierBuilderPage so initialSpecifiers are not
filtered using the hard-coded diagnosisPresets[0] value; determine the intended
diagnosis from the deep link before filtering, or preserve incompatible
selections until the user chooses a compatible diagnosis. Add the smallest
targeted regression test proving a non-MDD deep link retains its requested
specifier, then run the narrowest relevant validation.

In `@src/components/specifiers/specifiers-home-page.tsx`:
- Around line 194-196: Update the user-facing copy in the specifiers home page,
including the explanatory paragraph near search results and the first-result
label around the corresponding result markup, to describe ranking as text
relevance and use “Top match” instead of clinical “fit.” Add or update the
smallest targeted test to assert the revised label, then run the narrowest
relevant validation.

---

Nitpick comments:
In `@src/components/clinical-dashboard/global-search-shell.tsx`:
- Around line 123-131: Extract the shared mode-exclusion logic from
GlobalSearchShellClient and GlobalStandaloneSearchShellClient into a single
shouldRenderDashboardSearchFor(...) helper. Have both components call this
helper with their existing search state and route values, preserving the current
exclusions and document-search mockup behavior so future modes require only one
update.

In `@src/components/clinical-dashboard/master-search-header.tsx`:
- Around line 434-453: Replace the nested ternary assigned to actionMenuSetId
with a lookup map keyed by searchMode, preserving the existing mappings for
prescribing, forms, services, documents, favourites, differentials, specifiers,
formulation, and tools, with "answer" as the fallback. Keep the result typed as
ModeActionSetId and update the map when adding future modes.

In `@tests/ui-specifiers.spec.ts`:
- Around line 1-49: Extract blockExternalRequests, gotoApp,
expectNoHorizontalOverflow, and expectNoBlockingAxeViolations from
tests/ui-formulation.spec.ts lines 1-49 into a shared tests/utils module,
exporting them with the required Playwright types. Remove the duplicate
definitions from tests/ui-formulation.spec.ts lines 1-49 and
tests/ui-specifiers.spec.ts lines 1-49, and import the helpers from the shared
module in both specs.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d17f7f70-876f-43ba-bf7e-4f4054db80de

📥 Commits

Reviewing files that changed from the base of the PR and between 25d7f73 and 888d4a9.

📒 Files selected for processing (34)
  • docs/branch-review-ledger.md
  • docs/site-map.md
  • playwright.config.ts
  • scripts/generate-site-map.ts
  • src/app/page.tsx
  • src/app/specifiers/[[...path]]/page.tsx
  • src/app/specifiers/[slug]/page.tsx
  • src/app/specifiers/builder/page.tsx
  • src/app/specifiers/compare/page.tsx
  • src/app/specifiers/layout.tsx
  • src/app/specifiers/map/page.tsx
  • src/app/specifiers/page.tsx
  • src/components/clinical-dashboard/ClinicalSidebar.tsx
  • src/components/clinical-dashboard/global-search-shell.tsx
  • src/components/clinical-dashboard/master-search-header.tsx
  • src/components/clinical-dashboard/mode-action-popup.tsx
  • src/components/clinical-dashboard/universal-search-command-surface.tsx
  • src/components/specifiers/specifier-builder-page.tsx
  • src/components/specifiers/specifier-compare-page.tsx
  • src/components/specifiers/specifier-map-page.tsx
  • src/components/specifiers/specifier-record-page.tsx
  • src/components/specifiers/specifier-ui.tsx
  • src/components/specifiers/specifiers-home-page.tsx
  • src/lib/app-mode-icons.ts
  • src/lib/app-modes.ts
  • src/lib/specifiers.ts
  • src/lib/universal-search-domains.ts
  • src/lib/universal-search-mode-context.ts
  • src/lib/universal-search.ts
  • tests/app-modes.test.ts
  • tests/specifiers.test.ts
  • tests/ui-formulation.spec.ts
  • tests/ui-specifiers.spec.ts
  • tests/universal-search.test.ts
💤 Files with no reviewable changes (1)
  • src/app/specifiers/[[...path]]/page.tsx

Comment thread src/app/specifiers/[slug]/page.tsx
Comment thread src/components/specifiers/specifier-builder-page.tsx
Comment thread src/components/specifiers/specifiers-home-page.tsx Outdated
@BigSimmo
BigSimmo enabled auto-merge July 14, 2026 16:47
@BigSimmo

Copy link
Copy Markdown
Owner Author

@copilot resolve the merge conflicts on this branch.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Cannot run autofix: This PR has merge conflicts.

Please resolve the conflicts with the base branch and try again.

Alternatively, use @coderabbitai resolve merge conflict to automatically resolve the conflicts.

auto-merge was automatically disabled July 14, 2026 17:02

Head branch was pushed to by a user without write access

Copilot AI commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts on this branch.

Resolved the branch merge conflicts and pushed the fix in commit 4173361.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 8 file(s) based on 3 unresolved review comments.

Files modified:

  • src/app/specifiers/[slug]/page.tsx
  • src/app/specifiers/compare/page.tsx
  • src/app/specifiers/map/page.tsx
  • src/components/specifiers/specifier-builder-page.tsx
  • src/components/specifiers/specifier-map-page.tsx
  • src/components/specifiers/specifiers-home-page.tsx
  • src/lib/specifiers.ts
  • tests/ui-specifiers.spec.ts

Commit: 7a77dde96c03fd6e5e18c8391c2f2e00b318d5d2

The changes have been pushed to the codex/formulation-specifier-separation-current branch.

Time taken: 14m 26s

@BigSimmo
BigSimmo enabled auto-merge (squash) July 14, 2026 17:13
coderabbitai Bot and others added 2 commits July 14, 2026 17:19
Fixed 8 file(s) based on 3 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
BigSimmo added 2 commits July 15, 2026 01:45
…ration-current' into codex/formulation-specifier-separation-current

# Conflicts:
#	src/app/specifiers/[slug]/page.tsx
#	src/app/specifiers/compare/page.tsx
#	src/components/clinical-dashboard/universal-search-command-surface.tsx
#	src/components/specifiers/specifier-builder-page.tsx
#	src/components/specifiers/specifiers-home-page.tsx
#	src/lib/search-command-surface.ts
…ration-current' into codex/formulation-specifier-separation-current

# Conflicts:
#	src/components/specifiers/specifier-builder-page.tsx
#	src/components/specifiers/specifier-map-page.tsx

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 37ae49f158

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/app/specifiers/page.tsx
@BigSimmo

Copy link
Copy Markdown
Owner Author

@copilot resolve the merge conflicts in this pull request

auto-merge was automatically disabled July 14, 2026 18:22

Head branch was pushed to by a user without write access

Copilot AI commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved in commit 638f765. All 8 conflicted files (add/add and content conflicts) have been resolved using the main-branch versions from PR #674, which was the reviewed completion of this work. No conflict markers remain.

@BigSimmo
BigSimmo enabled auto-merge (squash) July 14, 2026 18:26
BigSimmo added 2 commits July 15, 2026 02:28
…cifier-separation-current

# Conflicts:
#	src/app/specifiers/[slug]/page.tsx
#	src/app/specifiers/compare/page.tsx
#	src/app/specifiers/map/page.tsx
#	src/components/clinical-dashboard/universal-search-command-surface.tsx
#	src/components/specifiers/specifier-builder-page.tsx
#	src/components/specifiers/specifier-map-page.tsx
#	tests/ui-smoke.spec.ts
#	tests/ui-specifiers.spec.ts
…ration-current' into codex/formulation-specifier-separation-current

# Conflicts:
#	src/app/specifiers/[slug]/page.tsx
#	src/app/specifiers/compare/page.tsx
#	src/app/specifiers/map/page.tsx
#	src/components/clinical-dashboard/universal-search-command-surface.tsx
#	src/components/specifiers/specifier-builder-page.tsx
#	src/components/specifiers/specifier-map-page.tsx
#	tests/ui-specifiers.spec.ts

Copy link
Copy Markdown
Owner Author

Closing as superseded by #674 ("Complete Specifiers/Formulation separation (review of #672)"), which is already merged into main.

Everything this PR set out to add is already present on main:

  • the specifiers entry in searchCommandSurfaceByMode (src/lib/search-command-surface.ts)
  • the test assertion that specifiers.crossModes includes "formulation" (tests/search-command-surface.test.ts)

Because #674's canonical specifiers block is already in this branch's base, this PR's remaining commits add a second specifiers key to the same object literal, which is what breaks CI:

src/lib/search-command-surface.ts(142,3): error TS1117:
An object literal cannot have multiple properties with the same name.

(Fails the Build and Static PR checks jobs, and hence the PR required gate.)

With no net contribution over main and only the duplicate-key regression remaining, there's nothing left to merge here — closing rather than shipping an empty/no-op change.


Generated by Claude Code

@BigSimmo BigSimmo closed this Jul 14, 2026
auto-merge was automatically disabled July 14, 2026 18:37

Pull request was closed

@BigSimmo BigSimmo reopened this Jul 14, 2026
@supabase

supabase Bot commented Jul 14, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@BigSimmo
BigSimmo enabled auto-merge (squash) July 14, 2026 18:47
@BigSimmo
BigSimmo merged commit 43a8a3e into main Jul 14, 2026
16 checks passed
@BigSimmo
BigSimmo deleted the codex/formulation-specifier-separation-current branch July 17, 2026 06:54
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.

2 participants