Library Search Is a Conversation
Rescued from the retired permissions-and-locking plan (R5) — searching the library is something you ask Goldie, never a modal; candidates render in place as spine-less sibling blocks; no search backend exists today
Consolidated 2026-09-25 into Libraries, the current statement. This record is kept as history.
Superseded in part 2026-09-30 by Goldie Finds a Clause and Stages It: S2 (several candidates in place) and S3a (Insert, Replace, Dismiss per candidate) no longer describe Goldie's path. She stages one best pick through the search card's own staged copy; Replace is not hers. S1, S4, S5's asymmetry and S6 stand.
Decision
Searching the library is a conversation with Goldie, never a modal. A Builder who wants an existing clause asks for it in the block panel; the candidates Goldie finds render in place as ordinary-looking sibling blocks with no left spine, and the Builder inserts, replaces or dismisses them from the candidate's own menu.
In plain terms: there is no search box and no pop-up window. You tell Goldie "find me a confidentiality clause" and she lays the options into the document exactly where they would go, drawn without the vertical bar that marks a block as part of the document. You keep the one you want.
Ruled in the permissions-and-locking plan (R5) and the inline-block-authoring plan, 2026-07-26 to 2026-07-29. The source-picker modal (New · Search tabs) that R5 was first specified as is rejected: it made "nothing suitable, draft one instead" a separate branch, and it put a second entry point beside the one Goldie already is.
The six rules (S1–S6)
- S1. Conversational invocation. No dedicated search control; asking Goldie is the entry point, and her opening line advertises it.
- S2. Candidates render in place, where they would land. Not a list below the panel and not inside the source block — they sit in document order at the position they would occupy, reading as ordinary blocks. No left spine: the spine marks an attached block, so its absence is the whole signal that a candidate is not yet part of the document. No badge, no label.
- S3.
Open Goldieworks on a candidate too. Same gesture, same panel — bar, facets, closed padlock. Goldie speaks but declines: "Insert this block to chat about it." A candidate with no chat teaches nothing; a refusal states the condition and teaches the model in one line. - S3a. Insert / Replace live on the candidate's menu, beside
Open Goldie, withDismissto drop it. The menu acts on the document; the bar acts on the candidate. - S4. Both actions are
write-structure. Inserting from the library is Builder-only — authoring a block is not inserting one — so a Maker never sees the action panel, though they may still ask and get an answer about what exists. - S5. Replace is the destructive one. Insert is additive and reversible by deletion; Replace discards authored text, so it is the action any future protection refuses first. (The plan phrased this as "refuses on a locked block"; the per-block lock was since removed by Maker Fills, Builder Builds, so the surviving rule is the asymmetry, not the lock.)
- S6. "Nothing suitable" routes to drafting. Asking Goldie to find a clause is also how a user discovers none exists, and the conversational shape gives a free path to "then draft me one."
Current vs Target
Current — no search backend exists today. The backend R5 recorded as done
on 2026-07-29 (blocks.searchText, the search_text index, convex/blockSearch.ts
and the searchLibrary query in convex/blockLibrary.ts) was deleted with the
folio unification; the searchText field and index described in
Blocks Schema → Library Search are a
record of removed code. The UI half (S1–S6) was never built.
Target. A scoped library query over sealed editions, per A Library Is a Shelf, Not a Folio, with S1–S6 as the interaction contract. The rebuild is a Backlog task; this page is its authority.
Consequences
- No agent or screen may add a search modal, tab, or dedicated search control under the R5 name.
- Any rebuilt
searchLibrarymust return candidates renderable as real blocks against the destination document's namespace, so S2 can draw them in place. - The retired plan's other permissions rulings live in Content Writes Receive One Server-Constructed Authority and Maker Fills, Builder Builds.
Which Libraries to Search Is Chosen on the Search Card
Owner rulings 2026-09-28 (GB-245) — the search card is the only place to choose which Libraries a search reaches; its chips filter this search only; the last chip "+ More Libraries" opens the Libraries page; once a chip changes, "Keep selection" saves the chips one level up and clears the item's own list; the menu's Search in Libraries row and its "Inherited from" notes are gone.
A Library Says Where It Is Used
Owner rulings 2026-10-09 — who can see a Library stays with its seats; where it is used is set on the Library, Everywhere (My workspace) or Only these projects, and edited from either side. Every Library card opens one modal, Join | Use in (Joined, or Owned, for its first tab), where Leave lives too. A Project's menu gets Libraries, ticking its project-only Libraries; Everywhere Libraries show locked. The Add modal is one search with the All + filter control, which narrows one search and saves nothing. Active Libraries, the Add modal's Library tab, and a Project's own Library list are retired.