**Note** from Bead: Incident Viewer Taos Engine App · [canonical source](https://redfish.acequia.io/guerin/.agents/cbf8b027-e80c-4b9f-8eb3-91d40af072d5/2026-06-11/notes/04-anyhazard-beads-inform-catalog-manager.md) · session 2026-06-11 · discussion: Talk: Incident Viewer Taos Engine App
Stephen's ask (2026-06-11): review what he was trying to express in beads [#31bd5380](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/about.md) (Claude review of Kaz's AnyHazard pitches) and [#9e1d87f5](https://redfish.acequia.io/guerin/.agents/9e1d87f5-a226-4d1a-be05-64c8d5cacf38/about.md) (Gemini parallel review) to inform catalog-manager development, UI standpoint. Both mounted `-a` into the session union.
## The headline: Kaz's Layer Manager IS the catalog manager's requirements doc — and it's already STAC-aware [`effort-2-layer-manager.md`](https://redfish.acequia.io/kaz/pitches/anyhazard-user-model/effort-2-layer-manager.md) says it plainly: *"This app manages the STAC of resources"*, *"One catalog, many sources… a user sees a unified STAC"*, *"Lock / unlock STAC entry."* Its feature areas (unified federated catalog, bbox+time+tag filtering with **filter-state-as-shareable-URL**, saved views, source/trust indicators, resource detail page, session attachment w/ auto-revoke, share/lock/request-access, org pinned resources, soft-delete + cascading-impact preview) are the catalog-manager feature list. Resources-not-files + pointer indirection = STAC Item + assets.
## What Stephen was expressing (the directives embedded in the critique beads) 1. **`user → participant`** (parciante + Zoom anchors). Person / organization / **AI agent** are the three persistent identities; *participant is a session-relationship binding*, host is a **role-binding for a scope**, not a type. Observer = present, unauthenticated, no binding. 2. **Everything at a URI; one connect verb.** The pitch's ~9 sharing/federation/grant/move/attach features collapse to ONE parameterized operation: **bind a resource URI into a destination URI's namespace with scope + TTL** (`inbox/` = share, `incoming/` = federation, `imports/` = session-attach w/ `ttl:session-end`, `subscribers/` = pub-sub). Cross-source dedup *disappears* (one resource, N binding-trails); move-between-devices *disappears* (one URI, routing resolves). 3. **The capability map is not a feature** — it's `GET <participant-URI>` with bindings expanded; **per-caller composition** (Plan-9): the same URI renders a different namespace per caller. "What can I see/do" = how the namespace renders. 4. **Dynamic resources are first-class** — a camera/simulation/stream is a URI *tree* (`latest`, `/stream`, `params/`, `actions/`, `capabilities`, `audit`) — agent-as-file ducktyping at the user-vocabulary level. 5. **Register discipline** — express at the participant-vocabulary level (Document A), keep mechanism (chain tokens, WebDAV, PS256) in Document B. Don't dip into implementation early. 6. From **#9e1d87f5** (Gemini's distinctive adds): one identity/capability model across **Simtable / AnyHazard / realtime.earth / alert.live** (the same viewer set as the STAC duck-typing); **PubSub URIs** — URI as *topic*, `GET …/stream` (SSE) subscribes, `POST` publishes — the missing platform substrate for *observe*; anycast/service URIs decoupled from instance (namespace-served-by-mesh); Global Passport (opt-in cross-subdomain identity).
## Applied to the catalog manager UI The catalog manager (santafe.live cache/catalog manager) is the **dual surface** ([catalog-cataloging-duality](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/2026-06-10/notes/catalog-cataloging-duality.md)): viewers render (primal), the manager connects/curates/subscribes (dual). Same STAC Items, reverse arrows. - **It's a namespace browser, not an admin CRUD app.** The catalog view = the caller's participant-URI view of federated STAC; per-caller composition does the access control; the UI renders what the namespace returns (+ source/trust badge per Collection origin). - **One Bind dialog.** A single share/connect surface parameterized by destination (participant inbox / org incoming / session imports / topic subscribers) + scope + TTL — replaces Kaz's F5.1/F5.2/F5.5/F5.6 and the federation/attach flows as *one* UI component. Default-TTL chips (`session-end`, incident-end, 30d) per F5.5. - **Every row has primal + dual actions:** *View* (open in a viewer — render-kind picked from asset media-type + roles, the duck-typing seam) and *Connect/Subscribe* (standing connection; a saved view F1.6 = a saved search = a **subscription** — "a query region becomes a standing connection"). - **Permissions UI = binding-trails**, not role dropdowns: every grant shows `granted-via` provenance, scope, TTL; dedup renders as one entry with N trails (F1.8 becomes the default representation). Lock = WebDAV `LOCK` on the Item (metadata lock, F5.3 verbatim). - **Filter state is a citable URL** (Kaz F1.2) — same deep-link discipline as note 03's `?incident=&product=&t=`. - **Live Items in the catalog** — cameras/sensors/streams sit beside clips and perimeters; their detail page exposes `latest` / `stream` / `capabilities` per the camera-tree pattern. - **Vocabulary in all UI copy:** participant, host (role), binding, session import — not user/admin/owner-as-types. - **The existing house pattern to extend:** Stephen's API-token dashboard (worked-example PNGs in #31bd5380 `artifacts/`; we used it today to mint the `/taos` read token) — Create-Token-with-custom-paths IS the bind dialog's ancestor: name + scope-paths + read/write + TTL.
## Build-out implied (beyond incident-viewer) STAC instance (Palisades+Sandy) → per-viewer projections (#catalog deliverable 3) → the manager UI above → the *observe* substrate (PubSub/SSE topic URIs — currently a platform gap per #9e1d87f5) → binding/inbox/queue surfaces (request-access, approvals) → audit views (every share/lock/transfer = signed audit entry, per Kaz §4).
## References (bead cross-links) - Bead: 31bd5380 · [canonical](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/) - Bead: Acequia User Model & Architecture Bead · [canonical](https://redfish.acequia.io/guerin/.agents/9e1d87f5-a226-4d1a-be05-64c8d5cacf38/) - Bead: Incident Cataloging · [canonical](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/)