**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/08-share-as-view-stac-and-view-bead.md) · session 2026-06-11 · discussion: Talk: Incident Viewer Taos Engine App
Stephen, 2026-06-12 (refining note 07 §1): *"what might get minted could include a pointer to the view STAC itself. really it's representing a view set of layers. you might give option to share view only. BTW that's a great Role where PIO shared map would be different from the ops map. and can you see if this is not a url but an agent-bead responding…"*
## The correction to note 07 Note 07 treated a shared view as **serialized params** (`?incident=&bbox=&t=…`). Stephen's refinement: a view is really **a set of layers** — so the share should carry (or point to) a **view-STAC**: a small composed catalog whose children link into the source collections, plus the view state (camera pose, window, live flag) as catalog metadata. Params are the degenerate encoding; the view-STAC is the real object.
## Three grades of share (the same file→folder→agent ladder as `incidents/stac/`, note 06) | Grade | What's minted | Recipient gets | Face | |---|---|---|---| | **1. View only** | pose + extent + time (+ optional rendered snapshot) | the *window* — sees what you framed; layer access stays whatever their own role grants (possibly just the snapshot) | file | | **2. View-STAC** | a pointer to a small composed catalog (layer-set links + view state) | the *composition* — can explore, scrub, requery the layer-set | folder/catalog | | **3. View-bead** | a hatched lightweight **agent-bead whose URI serves the view** | a *responding resource* — live, role-gated, per-caller composed | agent | "Share view only" = grade 1 explicitly offered in the share UI next to grade 2/3.
## The view-bead (grade 3) — "not a url but an agent-bead responding" Minting a share at full strength = **hatching a view-bead**. Its URI responds rather than dereferences: - **Per-caller composition with a scope ceiling:** the bead carries the minter's role-binding as its **maximum** scope; a reader sees `(bead scope) ∩ (reader's own bindings)`. So the **PIO's shared map and the ops map differ even at the same underlying catalog** — and a PIO share can never leak tactical layers, because the ceiling travels with the bead, not with trust in the reader's client. - **Live:** for an active incident the view-bead re-renders against the current catalog (and the LIVE timeline state); a grade-2 pointer would too, but the bead can also *push* (observe/stream face). - **Lifecycle:** TTL / incident-close → **apoptosis** — shares stop being immortal stale links. Reader traffic = energization (the advanced-wave return: the minter sees their share's attention); an unread share decays. - **Provenance + AAR:** the bead records who minted it, when, under which role, and can snapshot what its view showed at time t — a PIO's public map becomes citable history for after-action review (the `palisades-aar` user stories land exactly here). - **DevOps:** view-beads are cheap hatches (a `catalog.json` + `about.md`-thin identity at a URI served by the same mesh); the static grade-2 file is the degenerate case, so grades collapse gracefully when no agent is serving — same release-artifact-plus-binding pattern as note 06.
## Layer-set vs item-set (Stephen's vocabulary check, 2026-06-12) In STAC vocabulary (layer = **Collection**, product = **Item**): a view-STAC is a catalog of **both kinds of link**, and they mean different things: - **Collection-ref** = a *standing* membership — "Palisades perimeters, whatever they become." Grows as recorders/contributors add Items. This is what a layers-panel toggle shares. - **Query-ref** = Collection ∩ bbox ∩ datetime — the toggled layer *as filtered by the view window*. The common case: the view's Collection-refs are implicitly query-refs through the shared window. - **Item-ref** = a *pinned* exact thing — "this clip, these 3 perimeters." What selection shares; stable, citable. **Item affords more action than layer.** The Item is the unit of: select, fly-to (it has geometry), scrub-to (datetime), render (assets+roles pick the renderer), inspect/provenance, calibrate (pose-ux-ui operates on Items), contribute (phone capture mints an Item), sync-state, LOCK, attach-to-session, share-this-one. The Collection is the unit of: visibility toggle, role-scoping (the ICS ceiling lives here), subscribe (notify on new Items), extent summaries, governance/policy. Rule of thumb: **Items act, Collections govern.** **Lifecycle consequence:** a LIVE share holds Collection/query-refs (membership keeps resolving); when the share (or incident) closes, apoptosis **crystallizes** the refs — resolve the query at close-time into a frozen Item-set. That's what makes the archived view-bead AAR-grade: it cites exactly the Items it showed, not a query whose answer drifted.
## Items can be collections (Stephen, 2026-06-12) — the recursion The Item/Collection split is a **face chosen at interaction time**, not a fixed class — STAC's instance of [agent-as-file duck-typing](https://redfish.acequia.io/guerin/.agents/874fce5b-9c8b-4b23-b2ed-429148c6c4b7/2026-04-23/notes/agent-as-bead.md) (Item:file :: Collection:folder :: responding-catalog:agent). Already true in our own catalog: - **FMV clip** — one Item on the timeline; unfolds into a *collection of frames* (the `fmv:telemetry` asset IS the implicit child collection — 3,127 per-frame poses for N57B clip 1). - **Camera** — one Item on the map; unfolds into its *timelapse archive* (Sandy 15801: 816 frames + per-frame az/elev/zoom). - **Incident** — one entry in the root catalog; IS a catalog of layers. - **View-share** — one card in your workspace; IS a layer-set. - **Fire progression** — could be one Item that unfolds into per-timestep perimeter Items. Strict-STAC mechanics for the pattern (we don't have to bend the spec): (a) an Item **asset may point at a child `catalog.json`** (the unfold link); (b) the **Collection-Search extension** already treats Collections as searchable records — Collections behaving as Items; (c) catalogs nest by `rel:child` at any depth. **Materialization rule: unfold lazily.** Don't mint 3,127 frame-Items into the static tree — the *agent face* unfolds an Item into its children on demand (`/search` inside the clip's time range). This is a concrete payoff of the agent-bead-serving-the-URI (note 06): static trees hold the folded levels; the responding bead serves the unfolded ones. Zoom is the UI verb for it: zoomed out, the clip is a dot (Item face); zoom into its span and it opens (Collection face). "Items act, Collections govern" holds **per face**: address it folded → act on it; open it → govern/iterate within.
## Consequence for the share UI (delta on note 07's affordance list) The share dialog becomes a three-way choice: **Snapshot** (view only) · **Layer-set** (view-STAC pointer) · **Live view** (responding bead, role-ceiling shown, TTL picker). Default per role: PIO probably defaults to Live-view-with-public-ceiling; ops default to layer-set internal. Every grade mints a URI + QR; grade 3 lands in the bead commons (visible on #agents-dashboard like any bead).
## References (bead cross-links) - Bead: 874fce5b · [canonical](https://redfish.acequia.io/guerin/.agents/874fce5b-9c8b-4b23-b2ed-429148c6c4b7/)