**Note** from Bead: Incident Cataloging · [canonical source](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/2026-06-10/notes/catalog-cataloging-duality.md) · session 2026-06-10 · discussion: Talk: Incident Cataloging
> Stephen, 2026-06-10: "catalog and cataloging are duals. we don't leave catalog, we find its dual." This sharpens the noun/verb framing in [cataloging-as-a-verb](../2026-06-08/notes/cataloging-as-a-verb.md): not a progression (catalog, then cataloging), and not a layer (cataloging on top of catalog). One object, two dual views. To catalog is to operate in the catalog's dual.
## The duality, concretely - **Catalog (primal):** objects at coordinates. Items/entries as **position vectors** (a point cloud in space and time, or an embedding). The read face. The standing structure. - **Cataloging (dual):** the connections among them. References as **covectors**: functionals that pair with positions (a covector applied to a vector yields a scalar, the connection's value/charge). The write face. The live act. Cataloging lives in the **dual space** of the catalog. This is exactly the position-vector / reference-vector pair already in cataloging-as-a-verb: the reference vector is the dual of the position; the advanced-wave four-current is the pairing (primal value out, dual reputation/attention back).
## One duality, many instances (all already in the ecology) | Catalog (primal / read / object) | Cataloging (dual / write / morphism) | |---|---| | `#name` (pull state out, read-edge) | `@name` (push state in via dock, write-edge) | | GET / snapshot | PUT / observe (subscribe) | | STAC `/search` (bbox ∩ datetime ∩ filter) | STAC transactions + subscription | | Item / Collection / Catalog (nodes) | the links/edges that relate them | | position vector (where it sits) | reference covector (the connection) | | the standing shadow (PageRank projection) | the live demand field that casts it | | "what is here / then?" (select) | "connect to this / notify me" (connect) | The `#` / `@` sigils from the beads skill are the duality made syntax: same name, two resolution targets (resource vs mailbox), one pulls state out, the other pushes state in. The dual of **select** is **connect**.
## "We don't leave catalog, we find its dual" The cataloging interface is not a separate app built on top of the catalog. It is the catalog's own operations dualized on the same Items: `select ↦ connect`, `GET ↦ observe`, read-edge ↦ write-edge. This corrects the earlier "build the verb on top of STAC" framing (now fixed in [stac-as-catalog-substrate](stac-as-catalog-substrate.md)). It is not on top; it is the dual.
## Consequence for the build Do not design a second system. Take the catalog (STAC Items/Collections for the Sandy layers) and expose its **dual operations**: - where the catalog answers *what is here / then* (search), the cataloging answers *connect to this / notify me* (subscribe + relate); - reading a layer becomes subscribing to it (the active-field half, L4 / T1); - a query region becomes a standing connection to that region. Same items; reverse the arrows. The taos-engine test is then: render the catalog (Sandy STAC Items as projectors + overlays) AND let Stephen operate the dual (connect/compose/subscribe the layers) in one surface. The render is the primal view; the connecting is the dual view; they are the same scene.
## Open A clean statement of the **duality transform**: what exactly maps a catalog-op to its cataloging-op. Working candidate: flip the sigil (read-edge `#` ↦ write-edge `@`) and replace snapshot with subscribe (`GET ↦ observe`). Is the transform an involution (its own inverse)? If catalog and cataloging are duals, dualizing twice should return the catalog. Worth testing against the operations above.
## Provenance Stephen 2026-06-10. Refines [cataloging-as-a-verb](../2026-06-08/notes/cataloging-as-a-verb.md), the [bead mission](bead-mission-catalog-and-cataloging.md), and corrects the "on top" framing in [stac-as-catalog-substrate](stac-as-catalog-substrate.md).