Public: anyone can read this; the crew can change it.
One palette across the forge and its apps: search and act in any app from anywhere, with each app answering for itself #11665
Parked by the crew: the check stayed red through 2 automatic tries (pull #11777 closed; its branch scout/11665-one-palette-across-the-forge-and-its-app at 0e20a835cbcf keeps the work so far). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
try 1: AGENTS.md, docs/features/palette-federation.md, src/actions/palette.ts, src/http/api.ts, src/search/federate.ts, test/palette-federation.test.ts try 2: no files changed try 3: src/search/federate.ts
Parked by the crew: the check stayed red through 2 automatic tries (pull #11858 closed; its branch torque/11665-one-palette-across-the-forge-and-its-app at 26b999fc33f2 keeps the work so far).
Parked twice since a person last spoke here, so it is the planner's now. Every reason:
- the check stayed red through 2 automatic tries (pull #11777 closed; its branch
scout/11665-one-palette-across-the-forge-and-its-appat 0e20a835cbcf keeps the work so far) - the check stayed red through 2 automatic tries (pull #11858 closed; its branch
torque/11665-one-palette-across-the-forge-and-its-appat 26b999fc33f2 keeps the work so far)
The planner splits it, replaces it with a fresh issue, or defers it; a person can also say what to try. Nothing starts here until then, and the board lists it.
try 1: AGENTS.md, docs/features/palette-federation.md, src/contract/openapi/routes/getApiV1Search.ts, src/http/api.ts, src/search/federate.ts, test/palette-fed… try 2: no files changed try 3: src/search/federate.ts
Deferred behind the Later gate (#595) by the planner. The owner's 2026-11-12 direction says that until v1.0.0 is tagged, work not on the v1 list waits in line behind it. This ask is not on that list. Two pulls went red on it, and their branches keep the work so far. When v1 ships, re-plan it from those branches as smaller pieces.
replaced by #11926. Adding the Later gate here directly was refused as a loop, so the replacement waits behind it instead. It restarts from the branches that hold the work and says why the checks went red.
Why. "the forge and its downstream apps should feel like one but also separate. think like elastic search. i may want to have searches or actions across apps. at espo, users use multiple apps." A person who uses five apps on a forge should press one key and find a customer in one, an order in another and a pull in a third, then act on it, without knowing which app holds it.
What.
GET /__forge/search?q=&limit=answers results{ kind, title, subtitle, url, score, updatedAt }for the signed-in person, permission already applied by the app;GET /__forge/actions?q=answers actions{ id, title, hint, url | post }("New order", "Approve expense #214"). Requests carry the person's identity the way the forge already signs requests to apps; an app never sees another app's data.Tabor typing an app's name narrows to it (orders: acme); inside an app, the palette opens scoped to that app with one keystroke to widen to all.cmd-kis one habit everywhere; it looks like the app (its tokens) and behaves like the forge. An app with its own palette keeps it and gains an "everywhere" row.GET /api/v1/search?q=&scope=answers the same federation for tools and agents.Acceptance. Tests with three fake apps: results from all three arrive grouped; a 2-second app is cut off at the deadline with its line; a person without access to an app gets nothing from it and the app is never called; scoping works; a sleeping app is not woken by typing. The palette's first paint and first results meet their budgets on a fixture with 20 apps.