I3228 — The UI's search finds any entity the registry addresses and offers the moves its status admits
Give /ui a search of its own (Ctrl/Cmd+K), answered on /ui from objects.search over every addressable kind, each result naming why it matched from SearchHit's new additive `matched` field and, for an issue, the moves its status admits (imported from I2902's status-to-move table), leading to the entity's page or the move's form.
BLOKOVÁNO vlna 1 · p3 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I2902 is done. The status is derived from that, not declared.
Cíl
Give /ui a search of its own (Ctrl/Cmd+K), answered on /ui from objects.search over every addressable kind, each result naming why it matched from SearchHit's new additive `matched` field and, for an issue, the moves its status admits (imported from I2902's status-to-move table), leading to the entity's page or the move's form.
Proč
Asked as a command palette on 2026-09-10, 2026-10-04 and 2026-10-11 (entity search plus actions instead of an 80-item menu); the Cockpit already has a palette over capabilities, graphs and objects. I2902 (2b) is only on branch docs/the-idd-workspace-reads-at-a-glance, not on master or in this tree, so plan validate cannot accept it as a depends_on id; the start gate is an acceptance criterion instead. scripts/lib/cockpit-probe.mjs never visits /ui. Sources: chatgpt-majordomus:c102#5, chatgpt-majordomus:c186#5, chatgpt-majordomus:c227#2, chatgpt-majordomus:c172#2.
Aktuální stav
The UI's search form submits to /cockpit/search (ui/shell.rs), so /ui has no search of its own; share/ui/ui.js wires '/', Ctrl/Cmd+K to that field; objects.search returns SearchHit {object, snippet?} in URI order with no matched field; share/cockpit/palette.js reads /api/v1/capabilities, /graphs, /objects; scripts/lib/cockpit-probe.mjs never visits /ui.
Cílový stav
One search projection serves both surfaces; no list of entries is kept by a script.
Rozsah
- share/ui/ui.js
- apps/majordomus-cli/src/ui/shell.rs
- share/cockpit/palette.js
- apps/majordomus-cli/src/capability/builtin/objects.rs
- scripts/ui
- docs/MAJORDOMUS_UI.md
- .ai/repo/project/intents
Mimo rozsah
- A semantic or LLM search
Závislosti
Kritéria přijetí
- A new issue appears in the search with no edit
- Each result shows its match reason
- docs/MAJORDOMUS_UI.md describes the /ui search, its match reasons and what it does on the published snapshot
- SearchHit gains an additive `matched` field (identity, title, description or content) through its canonical declaration and `majordomus generate`, and the release analysis records it as a minor output change
- The /ui search answers on /ui itself instead of submitting to /cockpit/search
- The keyboard walk (open, query, choose, reach the entity's page) is a browser case under test/cases in the ui job, numbered by scripts/case-numbers next; the PR rewrites criterion search-reaches-every-entity to `evidence: test` with that path
- On the published snapshot the search is disabled or links to the live server and says why; it never shows an empty answer as 'no results'
- The search overlay fits 390 px with no horizontal scroll
- An issue's moves are imported from I2902's status-to-move table; this issue does not start until .ai/repo/project/issues/I2902.yaml is on origin/master
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib ui::shell
- majordomus generate --check
- scripts/ui audit
Požadované důkazy
- browser case under test/cases walking the /ui search keyboard-only
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3228.yaml. Read it back with majordomus plan show I3228.