Note 01 — DevOps git discipline + agent orchestration (2026-06-16) (Image Pose Uxui)

**Note** from Bead: Image Pose Uxui · [canonical source](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/2026-06-16/notes/01-devops-and-orchestration.md) · session 2026-06-16 · discussion: Talk: Image Pose Uxui

Stephen (verbatim): *"use devops .git discipline making the app. also give me a dashboard as you orchestrate agents working on this. mount relevant beads for devops workflow."*

## 1. Git discipline (per `#agentify-bead` git-and-beads.md) The ratified rule: **ecology-owned app source lives IN the bead**; vendor clones stay in `Documents/src/` and are mounted by pointer; `.git/` is heavy/cold → gc before sync, exclude from WebDAV sync. Applied here: - **Source of truth = `74c30681…/repo/`** — `git init` there. The calibrator (`calibrate-3d.html` + any `lib/` JS) is authored here; this is what the commons GETs and what holds history. - **Branch-per-step.** `main` holds shipped/verified state. Each WORK-QUEUE step is built on a `step-NN-<slug>` branch → CDP-verified → squash-merged to `main` with a conventional commit (`feat(calibrate): …`, `fix:`, `chore:`). The dev/prod split lesson from `#shape-up-studio` notes: stage on a branch, only merge verified. - **taos-engine = vendor.** NOT copied into `repo/`. The page imports the **public hosted bundle** (`https://redfish.acequia.io/taos/taos-engine.js`, anon + CORS *) exactly as `#ants-in-taos` does; the ion-enabled variant lives at `redfish.acequia.io/.../agentscript/lib/`. We mount, we don't import. - **Deploy = build → WebDAV PUT** to `santafe.live/set-space-time/calibrate-3d.html` (Bearer token, per santafe.live CLAUDE.md). Deploy is a copy out of `repo/`, not the git tree itself. - **Sync hygiene:** `git gc` before any `/bead-sync`; add a sync-exclude convention for `repo/.git/` (`.gitignore` does not gate webdav-sync — `.git/` is many small files / HostGo inode pressure). - **No secrets in the tree:** the BYOK Google key lives in `localStorage` only; never committed, never synced. A `sample-key` (if Stephen provides one) goes in a git-ignored `repo/.env.local` read at build, not hardcoded.

## 2. Orchestration dashboard (per `#agents-dashboard` + the ai-team project.json pattern) "Give me a dashboard as you orchestrate agents" → a **live page the orchestrator and Stephen open to watch the build**. Two layers, reusing existing machinery, no reinvention: - **Global layer (already live):** feed this bead's telemetry into `.agents/dashboard.html` — `running/running.md` (true while a build session holds it), `running/ticks.json` (`{total, byAgent, last, lastBy}`), and append-only `log.md`. The bead then lights up "live" on the commons dashboard with a tailing log. (Currently NO bead populates `running/` — this would be the first.) - **Bead-local layer (the build view):** `74c30681…/dashboard.html` — modeled on `.agents/dashboard.html` aesthetic + the `#agent-coordination-pattern` `project.json` shared-state + pareto-frontier questions UI. It reads a `project.json` (WORK-QUEUE steps × shape-up role owners × hill-chart position × status) and tails `log.md`, ambient-auth same-origin. One card/dot per **step**, colored by the **role agent** that owns it. This is the page Stephen opens to monitor the fan-out.

## 3. The team (shape-up role charters → this build) `#shape-up-studio` already defines the roles; this build instantiates a subset: | Role | Owns in this build | |---|---| | **UX** | the calibration interaction: snapshot-view-as-pose + the campanile UV↔geopoint pin loop; the BYOK startup panel flow | | **UI** | `calibrate-3d.html` layout — image pane ∥ 3D pane, pin overlay, pose readout panel, startup key gate | | **devops** | the `repo/` git repo, branch-per-step, build→PUT deploy to santafe.live, the dashboard telemetry, bead-sync hygiene | | **testing** | CDP **pixel** verification on a real GPU (WebGPU never headless), per-step verify gate before merge | | **liaison** | surfaces the open questions (sample key? solver location? 90s-space writeup?) to Stephen via the dashboard questions UI | Routing is **offer-only** (dock envelopes); the orchestrator does not edit role beads' trees.

## 4. Open questions (devops) 1. **Git remote?** In-bead `repo/` is the source of truth (per the rule). Does Stephen also want a GitHub/origin remote, or is the WebDAV-synced bead the only home? (git-and-beads.md leans WebDAV-as-live-surface, `.git` as the ledger under it — no external remote required.) 2. **Dashboard scope:** is the **bead-local** build dashboard wanted, or is feeding the **global** `.agents/dashboard.html` (the existing one) enough? (Plan does both; the local one is the richer "watch the fan-out" view.) 3. **santafe.live already a git repo?** TBD — confirm before assuming; the deploy is a PUT either way.