**Note** from Bead: F5b21ea4 · [canonical source](https://redfish.acequia.io/guerin/.agents/f5b21ea4-2b73-4c8b-96f0-892f63ad86cf/2026-06-04/notes/relationship-to-uri-as-primitive.md) · session 2026-06-04 · discussion: Talk: F5b21ea4
## Two scales of the same structural commitment — and why this connection might warrant its own bead **Bead:** `f5b21ea4-2b73-4c8b-96f0-892f63ad86cf` · **Date:** 2026-06-06 **Status:** Working note. Captures a structural parallel between two threads of Stephen's recent design work that turn out to be instances of the same move. **Stephen flagged this as candidate material for a new bead** (his framing: *"capture that relationship as an .md as we might start a new bead on it"*). For now it lives here; if Stephen confirms it deserves its own bead-URI it can be split out cleanly. **Companions:** [citizen-direct-and-agency-via-substrate.md](citizen-direct-and-agency-via-substrate.md) (this bead, today), [`uri-as-primitive.md`](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/2026-06-03/notes/uri-as-primitive.md) (bead `31bd5380-...`, 2026-06-03), [`participants-and-resources-in-uri-sense.md`](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/2026-06-03/notes/participants-and-resources-in-uri-sense.md) (same prior bead).
## The two debates ### In bead `31bd5380-...` (2026-06-03), during the review of Kaz's AnyHazard user-model pitches Stephen pushed against a vocabulary that treats **User** as a primary primitive. He wrote (turn 32 of that thread, quoted in [`uri-as-primitive.md`](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/2026-06-03/notes/uri-as-primitive.md)): > *"I really want to foreground URI as primitive. It may be that a user is the sum of capabilities of URIs. Eg if I have my own URI I can share it at an event or scenario that lets people submit URIs even anonymously."* The inversion the prior bead works out: - **Identity-centric (default SaaS vocab):** Person, organization, AI agent are first-class entities. Capabilities are properties of identities. A user is a kind of thing. - **URI-centric (Stephen's commitment):** Capabilities are anchored at URIs. Identities are named bundles of capabilities reachable from an identity-URI. A user is the sum of capabilities at an identity-URI, plus capabilities held independently. *Anonymous participation becomes the default — you exercise a capability; whether you ALSO have a registered identity is orthogonal.* The move generates downstream simplifications: anonymous participation stops being a "guest mode" special case, federation becomes URI-capability flow between namespaces, the user-vocab stops diverging from the platform's chain-token capability discipline. ### In bead `f5b21ea4-...` (2026-06-06, this bead), during the COVID essay structuring Stephen surfaced a strategic fork (captured in [citizen-direct-and-agency-via-substrate.md](citizen-direct-and-agency-via-substrate.md)): *how much to go direct-to-citizen vs. continue serving the existing agency channel* for Simtable / AnyHazard / RealtimeEarth. The naïve framing presents this as a tradeoff between revenue stability (agency-only) and structural correctness (citizen-only). The bead's substrate framing dissolves the tradeoff: **same substrate, two products.** Acequia™ + RealtimeEarth + AgentScript is the asset; agency-product and citizen-product are derivative capability bundles offered against the same substrate at different URIs with different policies.
## The parallel made explicit The two debates are the same structural commitment at different scales: | | Vocabulary scale (Kaz bead) | Product-strategy scale (this bead) | |---|---|---| | The seductive category | "User" | "Agency-customer" vs "Citizen" | | The naïve framing | A user is a primary kind of thing | Agency and citizen are primary market categories | | What feels lost if you give it up | Familiar SaaS-conventional vocabulary | A clear customer-segmentation story | | The anti-essentializing move | Foreground URI as primitive | Foreground substrate as primitive | | The derivative reading | A user is a bundle of capabilities at an identity-URI | An agency-product / citizen-product is a bundle of capabilities offered at a URI with a particular policy | | What becomes first-class | Anonymous participation (no persistent identity required) | Anonymous bystander participation in incidents (no app install, no account, just a capability exercised at an event URI) | | What simplifies | Federation, guest mode, sharing, account-vs-non-account flows | Pre-/incident/post-incident product surfaces, agency-integration patterns, citizen-direct vs agency-mediated flows | The same move generates the same kind of simplification at both scales. *Stop treating the surface category as primitive. Treat the substrate (URI / substrate-asset) as primitive. The categories become useful shorthand for capability bundles, not foundational entities.*
## Worked translation: a bystander at a Camp Fire-like incident under URI-primary substrate-primary thinking The bead's substrate framing already implies this, but worth making explicit because it knits the two scales together. Identity-primary, agency-primary thinking would model the bystander as: - A potential user who needs to install the AnyHazard app - Sign up with an identity (email, account creation) - Authenticate - Get assigned a role (Citizen vs Member vs Subscriber) - Allow the app access to camera and location - Submit a photo through a citizen-facing intake flow - The photo goes to a backend that routes to the appropriate agency for the geographic area - The agency receives the photo into their dispatch console (if their console is connected) URI-primary substrate-primary thinking models the same bystander as: - A capability-exerciser at an event URI (`POST /incidents/<incident-id>/witnesses/`) - Possibly anonymous (per the event URI's `submission-mode` policy — see [`participants-and-resources-in-uri-sense.md`](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/2026-06-03/notes/participants-and-resources-in-uri-sense.md) for the worked URI patterns) - The phone scans a QR code that resolves to the incident URI - The browser-resident substrate is already running (Acequia, per the 2019 RFEI architecture) - The submission lands at the event URI with whatever attribution is available (timestamp, optional contact, optional capabilities the bystander voluntarily attaches) - The substrate handles distribution to anyone subscribed to that incident URI — citizens nearby, agencies that have bound their consoles to the incident, AI agents running model-update logic on the incoming media, anyone No identity created. No app installed. No agency-mediation required. Just a capability exercised against a URI, with the substrate doing the routing per policy. This is the unification: the URI-primary frame from the prior bead and the substrate-primary frame from this bead are *describing the same architecture from two angles*. The vocabulary work and the product-strategy work converge.
## Why this might warrant a new bead A new bead bridging the two threads could productively host: 1. **A worked URI-and-policy design for AnyHazard's product surface.** What URIs does the citizen product expose? What URIs does the agency product expose? What policies live at each? Which capabilities cross between them and how? The [`participants-and-resources-in-uri-sense.md`](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/2026-06-03/notes/participants-and-resources-in-uri-sense.md) framework gives the vocabulary; the new bead would apply it to the actual product surface area. 2. **The capability-bundle composition** for each product surface (citizen, agency, anonymous bystander, AI agent), including which capabilities are shared between bundles and where the boundaries are. 3. **A migration plan** from the current product structure to the substrate-primary structure. What stays, what re-frames, what gets deprecated. 4. **The cross-org / inter-agency federation story** at the URI level — how CalFire's URI subtree composes with Marin County's, with a citizen's `/people/jane/` URI, with the substrate-wide incident URIs. 5. **The boundary with Kaz's pitches.** Kaz's work has identity-primary throughout. The substrate-primary product framing requires the same shift Kaz's pitch does. Worth thinking through *together*, in a bead that doesn't carry the social-services-policy framing of the current bead (Groundworks) or the user-management framing of the Kaz bead.
## What this note does NOT do - It does not propose a specific product-roadmap or architecture. The bridge is conceptual; the detailed work is in a future bead. - It does not rewrite Kaz's pitches or restructure the current AnyHazard product. Those remain Kaz's and the team's to decide. - It does not retroactively reframe the bead's existing Groundworks-and-COVID work. Those documents stand. This note adds a structural reading on top.
## The headline > Two debates, one move. Don't treat the surface category as primitive — treat the substrate (URI / substrate-asset) as primitive. The categories become useful shorthand for capability bundles addressed at URIs. *Both the User-vs-URI vocabulary debate and the agency-vs-citizen product-strategy debate are instances of this same anti-essentializing commitment.* If a future bead is opened on this, the headline above is the anchor.
## References (bead cross-links) - Bead: 31bd5380 · [canonical](https://redfish.acequia.io/guerin/.agents/31bd5380-d743-420f-81a1-9258e7fbbf9a/)