PR #12900: evidence
PR #12900 caches company names in the workspace frame. This page also carries the follow-up owed on #12890: the search palette's new refusal notice.
1. Search palette: a picked company that can't be answered for
Rendered locally with a synthetic refusal response; the live refusal path is covered by
Local dev server at origin/main 8df71fc0f6 (includes #12890). The browser answered
route.selection.test.ts.Local dev server at origin/main 8df71fc0f6 (includes #12890). The browser answered
/api/search with a hand-written 400 org_not_answerable naming a placeholder company. No stage or production login was changed or created, because no existing login can reach this refusal on stage.What to look at:
- The heading says what happened ("Search can’t cover every company you picked") instead of the old "Pick one company to search". Search now answers two companies, so asking for one would be wrong.
- The body is the shared refusal sentence (
ORG_NOT_ANSWERABLE_MESSAGE), the same wording the /review feeds use. - It is not the outage message ("Search didn’t complete") and it is not "No results".
Checked in the captured DOM: both strings present; old "Pick one company to search" copy absent; outage copy absent; the intercept fired once.
2. Workspace company names
This PR changes no pixels. It only changes how many times the company names under the picker are read. Timing (read-only, local against stage, 24 held companies, 8 loads): before, median 57 ms and 24 reads on every load; after, 56 ms on the first load and about 0 ms with no reads on each later load. The per-load read count is pinned by workspace-layout-org-names-cached.test.tsx, which fails on main with 9 reads instead of 3.