Four Orthogonal MVPs: the sketch round (Incident Host Mvp)

**Note** from Bead: Incident Host Mvp · [canonical source](https://redfish.acequia.io/guerin/.agents/8dda0afd-2c9e-4374-8571-1a77ebf30516/2026-07-07/notes/01-orthogonal-mvp-sketches.md) · session 2026-07-07 · discussion: Talk: Incident Host Mvp

*Working concept from the 2026-07-07 session (session 2); verbatim source in [the chat log](https://redfish.acequia.io/guerin/.agents/8dda0afd-2c9e-4374-8571-1a77ebf30516/2026-07-07/chats/2026-07-07-orthogonal-mvp-sketches.md). Rendered sketch: [orthogonal-mvp-sketches.html](https://redfish.acequia.io/guerin/.agents/8dda0afd-2c9e-4374-8571-1a77ebf30516/2026-07-07/artifacts/sketches/orthogonal-mvp-sketches.html) (v0.1, build 2026-07-07). Method per [sketch-ux](https://redfish.acequia.io/skills/sketch-ux/SKILL.md).*

## The move Stephen asked for possible MVPs sketched "as orthogonal as possible in what they might be." So this round does not sketch UI variants of one MVP. Each of the four sketches is a **whole MVP candidate**, and each bets on a different answer to "what is an incident, who is the first user, and what one new thing gets built." All four compose the same parts list ([app-catalog.md](https://redfish.acequia.io/guerin/.agents/8dda0afd-2c9e-4374-8571-1a77ebf30516/2026-07-07/artifacts/app-catalog.md)) and all four end at the same catalog spine; they differ in which end of the thread you pull first. Orthogonality check (also rendered as a matrix in the sketch header): pick any two candidates and they disagree on every row: what an incident is, first user, time orientation, new build, and the risk retired.

## The four candidates ### 1 · the folder (place) - **Bet:** the MVP is the Host owning a place. One new page (MINT) turns a laptop folder served by [BrowserDAV](https://acequia.io/BrowserDAV/) into `catalog.json` plus attenuated invite tokens. Every existing viewer just GETs the catalog URL. - **Transition shown:** pick folder → mint catalog + tokens → tokens fly to foragers → assets PUT back as catalog items → viewers read. - **Fork (`host-place`):** a) laptop only, honest and fragile · b) trusted parciante node from the start · c) laptop first, [WebDavSync](https://acequia.io/WebDavSync) replication as the durability move. - **Risk retired:** a normal person can hold an incident with no server and no account with us. ### 2 · the wall (presence) - **Bet:** the MVP is the shared now. The Host gesture is naming a group (the join-a-group gesture GeoCamera, CameraMap, and BrowserDAV already share); the product is a live wall that grows as foragers join. - **Transition shown:** type group name → wall assembles from public cams → invite → a stranger's phone becomes a live tile in seconds → the map shows who sees what. - **Fork (`wall-membership`):** a) live cameras only · b) any foraged asset becomes a tile · c) the wall is a view over the catalog filtered to "fresh," with no separate wall state. - **Risk retired:** presence pulls a group into existence faster than an archive does. ### 3 · the workbench (depth) - **Bet:** the MVP is one incident done deeply. A Host panel plus ingest gate on the [Incident Viewer](https://redfish.acequia.io/guerin/apps/incident-viewer/): foraged imagery passes the [through-the-lens](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/repo/dev/through-the-lens-test-v2.html) calibration gate, joins the 3D scene as a posed camera, and TOA plus plume replay in the same scene. Output is a citable `?v=` permalink. - **Transition shown:** image arrives in queue → gate sweep → LOCKED ±px → posed frustum in scene → TOA drape → plume rise → permalink. - **Fork (`calibration-gate`):** a) hard gate, quality guaranteed, queue can starve · b) badge on every item, honest inventory, noisier scene · c) two lanes over one catalog: live and reconstruction-grade. - **Risk retired:** foraged imagery can reach reconstruction grade fast enough to matter. ### 4 · the invitation (edge) - **Bet:** the riskiest assumption is the stranger's first minute, so the MVP is one link. Tap → scoped landing with no account → [GeoCamera](https://acequia.io/GeoCamera) shoots with geo, heading, tilt → the contribution lands with provenance intact. The URL carries a tokenId, never the JWT, per the [token-minting pattern](https://redfish.acequia.io/guerin/.agents/c915581b-4179-409e-9e13-085531521fd9/about.md). - **Transition shown:** mint link → tap → landing → camera → shutter → "your photo is in" → the stranger sees the group's wall. - **Fork (`stranger-reciprocity`):** a) capture only · b) contribution buys a view of the shared picture · c) plus the [forage bookmarklet](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/repo/collector.js) as a desktop path. - **Risk retired:** people who owe us nothing will tap, shoot, and stay.

## The meta fork (`mvp-first`) Which thread gets wired end to end first: 1 folder · 2 wall · 3 workbench · 4 invitation. All five ballots (four per-sketch, one meta) are answerable inside the sketch and file `sketch-answer` requests into this bead's [`request/` dock](https://redfish.acequia.io/guerin/.agents/8dda0afd-2c9e-4374-8571-1a77ebf30516/request/); draining the dock is a bead-step.

## First-cut recommendation (scribe, awaiting Debbie and Stephen) - **`mvp-first` = 1 (the folder), with 4 (the invitation) as the immediate second move.** The folder mints the address every other thread needs; the invitation is the cheapest live test once an address exists to land in. Together they are already the bead's target thread: Host mints, one forager collects, the viewer reads. The wall and the workbench then become views over the same catalog rather than products of their own. - **`host-place` = c** (laptop first, replicate): keeps "the customer is the operator" true while answering the laptop-sleeps question. - **`wall-membership` = c** (the wall is a view): no second source of truth to reconcile, and it matches the anti-reification stance of specifying gates and URIs rather than components. - **`calibration-gate` = c** (two lanes): monitor and reconstruct are already the two faces of the frame note; two filters over one catalog says the same thing in data. - **`stranger-reciprocity` = b** (capture, then the wall): reciprocity is the retention loop, and it costs one read-scoped view.

## Status Open. Ballots live in the sketch; nothing ratified. Logged in [Debbie's sketch log](https://redfish.acequia.io/skills/sketch-ux/sketch-log.md).

## References (bead cross-links) - Bead: Image Pose Uxui · [canonical](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/) - Bead: Slack Integration · [canonical](https://redfish.acequia.io/guerin/.agents/c915581b-4179-409e-9e13-085531521fd9/) - Bead: Wildfire Forager · [canonical](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/)