bead-bind-startup — bead-orchestrator (Orchestrator)

**Bead document** from Bead: Orchestrator · [canonical source](https://redfish.acequia.io/guerin/.agents/4c6470f9-b74a-4aba-b436-5e998f469cce/bead-bind-startup.md) · discussion: Talk: Orchestrator

**You are binding the bead-orchestrator.** Current focus: a **design + coordination bead** (opened 2026-06-14). The agent-face is scaffolded, relevant beads mounted; the now-**six** duties are sketched but **none are bound yet** — open questions await Stephen. Newest (2026-06-20): **Duty 6, links as first-class primitives** — a link is a resource with its own URI (`<link/>`), `end1`/`end2` just URIs, living anywhere; a background orama harvest scans chats for bead-ids and keeps links fresh; `collaborative-beads` `48a76785`'s membrane is the first real `<link/>`. See [2026-06-20/notes/03-links-as-first-class-primitives.md](2026-06-20/notes/03-links-as-first-class-primitives.md). (Prior: **Duty 5, master scheduler** — the **World** driving `world.ask(beads, b => b.step())`; execute-face [`agent.mjs`](agent.mjs).) **Do this first:** read [2026-06-14/notes/00-orchestrator-charter.md](2026-06-14/notes/00-orchestrator-charter.md) (Duties 1-4 + open Qs), then [2026-06-18/notes/02-master-scheduler-world-ask.md](2026-06-18/notes/02-master-scheduler-world-ask.md) (Duty 5), then skim [about.md](about.md) and [`agent.mjs`](agent.mjs).

## Operative onboarding - **Goal** — be the mayordomo of the bead commons: monitor conformance, version-duck-type, sync + elect leaders across endpoints, bridge SW caches to CORS origins. Observe and *offer*; never force-write into other beads. - **Mounted commons** — see [names.json](names.json): handler (`fe7fbaf5`), router (`82bd6fa4`), hosting (`7049c694`), duck-typing (`d9dfa5e4`), agent.md prototype (`5595c7f1`), + protocol/skills. - **Constraints** — parciante ethics; offer-only (dock envelopes), no edits to third-party bead trees; no cloud keys in the commons (BYOK node-side); `protocolVersion` + the `orchestrator` block in `agent.json` are PROPOSED, not ratified.

## Todo / next actions (linked) - [ ] Get Stephen to bind the 6 open questions in [00-orchestrator-charter.md](2026-06-14/notes/00-orchestrator-charter.md) §"Open questions" + the 5 in [01-agent-step-and-determinism.md](2026-06-16/notes/01-agent-step-and-determinism.md) §8. - [ ] **Duty 6 links scaffolded** (note 03): bind the 7 open Qs in §7 (where links live; URI scheme — GUID vs `hash(end1,end2,type)`; `names.json` future; type vocabulary + directionality; auto-materialize vs offer-only; confidence threshold; retro-model `collaborative-beads` as a `<link/>`?). Then: build `skills/harvest-links.mjs` (query orama-bead `6f5044df` → upsert `<link/>` resources → offer backlink dock envelopes), and decide if the link primitive gets its **own bead/slice**. `links.json` does not exist anywhere yet. - [ ] **Duty 5 master scheduler scaffolded** (note 02 + `agent.mjs`): the World's `world.ask(beads, b => b.step())`. Next: wire the `stepBead` transport seam (local `import().step()` vs dock/handler), couple to the Duty-3 lease, pick the clock home, and ratify the per-bead `scheduler` sub-card into `beads.md`. 6 open Qs in note 02 §7. - [ ] **`agent.step` is designed** (note 01): steady-state tick = deterministic `step.mjs`, no LLM. Build order: (1) compile `skills/protocol-spec.json` from `beads.md` (the one LLM-authored piece); (2) write pure `conformance-scan.mjs` (`scanBead(files,spec)->findings`); (3) `step.mjs` shell (`step(ctx)->Plan`) + a runner that applies the Plan; (4) `sync-plan.mjs` + `lease.mjs` + `adapters/`. Escalations go to a queue, never an inline model call. - [ ] Once Duty 2 is bound: settle the version label scheme + write a first adapter (`adapters/0.2-to-0.3.mjs`) and the `Accept-Bead-Version` negotiation hook. - [ ] Once Duty 3 is bound: design the lease record (`lease.json` vs `acequia.leases`) + election policy; coordinate with hosting bead [`7049c694`](https://redfish.acequia.io/guerin/.agents/7049c694-e45b-4116-a887-49e64885ac8e/about.md). - [ ] Once Duty 4 is bound: prototype the windows/CV cache→CORS bridge subagent first.

## Resume contract This bead is dirty-gate background-synced when a chat advances it. On `/bead-close-chat`: flush emerging concepts into `notes/`, flush the verbatim chat log, refresh this file + `about.md` session log, background `/bead-sync`.

## References (bead cross-links) - Bead: Home Port Forward Hosting · [canonical](https://redfish.acequia.io/guerin/.agents/7049c694-e45b-4116-a887-49e64885ac8e/)