# Project

Where bee stands, rendered by the docs site from [plan.yaml](https://tractat-us.github.io/bee/project/plan.yaml). The [v1 plan](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/index.md) says what each task is; this section says where each one is.

Waiting on Iain (5)

- [(c) A dot-store Rga](https://github.com/tractat-us/kuilt/issues/3137): A design gate is posted, with three calls for Iain before implementation. bee#19 and Task 11 wait on the chain that starts here.
- [kuilt-raft: a node stops campaigning once its removal is committed](https://github.com/tractat-us/kuilt/pull/3134): A spec-critical engine change that departs from the issue's suggested fix; needs Iain's review before merge.
- [Pair a real phone over the LAN](https://github.com/tractat-us/bee/pull/42): The e2e never binds off loopback, so mDNS, the macOS firewall, Wi-Fi isolation and mobile Safari or Chrome are unproven.
- [Turn off auto-close in bee's settings](https://github.com/tractat-us/bee/issues/6#issuecomment-6724665300): Settings, General, Issues; a UI toggle only, to match the rest of tractat-us.
- [Contributor agreement text and a signing check](https://github.com/tractat-us/bee/issues/6): A lawyer writes it, not an agent. Needed before the repo accepts outside contributions.

As of **2026-11-08 14:02 EST**, when the plan was last reconciled with GitHub. Times are in America/New_York (ET).

Sources: [v1 plan](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/index.md), [Epic: bee v1 (bee#6)](https://github.com/tractat-us/bee/issues/6), [Merged pull requests](https://github.com/tractat-us/bee/pulls?q=is%3Apr+is%3Amerged).

## Counts

| Status          | Items  |
| --------------- | ------ |
| Done            | 33     |
| In flight       | 4      |
| Waiting on Iain | 5      |
| Blocked         | 2      |
| Next            | 23     |
| Later           | 3      |
| **All**         | **70** |

## Board

- **Done** · 33

  ______________________________________________________________________

  - [Kotlin/wasm and the renderer in one page (spike 1)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-1-kotlinwasm-and-the-renderer-in-one-page-spike-1-plus-all-build-wiring)
  - [The board lattice and its projection (spike 2, part 1)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-2-the-board-lattice-and-its-projection-spike-2-part-1)
  - [The relay (spike 2, part 2)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-3-the-relay-spike-2-part-2)
  - [The browser driver and two browsers (spike 2, part 3)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-4-the-browser-driver-and-two-browsers-spike-2-part-3)
  - [Bridge mechanics (spike 3, first half)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-5-bridge-mechanics-spike-3-first-half)
  - [Claims (spike 4)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-6-claims-spike-4)
  - [Claims blocked by kuilt learner admission: fix kuilt first, or work around it in bee?](https://github.com/tractat-us/bee/issues/11)
  - [Join, which completes spikes 3 and 4](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-7-join-which-completes-spikes-3-and-4)
  - [Join the bridge, the board and claims](https://github.com/tractat-us/bee/pull/27)
  - [Detect a dead board link from the claims link, or from a per-spoke view?](https://github.com/tractat-us/bee/issues/28)
  - [Detect a crashed agent from its claims link](https://github.com/tractat-us/bee/pull/32)
  - [A late win whose link dies is released only by a later wait on that surface](https://github.com/tractat-us/bee/issues/31)
  - [Give back a late win whose claims link died, on the next link](https://github.com/tractat-us/bee/pull/33)
  - [A wait's reserve can no longer fail, so make it fail loudly](https://github.com/tractat-us/bee/issues/37)
  - [Move kuilt to 0.7.0-dev.1696](https://github.com/tractat-us/bee/pull/40)
  - [A board change elsewhere may re-create the field someone is typing in](https://github.com/tractat-us/bee/issues/43)
  - [Decision: an agent that dies while the host is down keeps its claims forever](https://github.com/tractat-us/bee/issues/44)
  - [Any website open on the laptop can use the board: check Origin and Host on /ws/\*](https://github.com/tractat-us/bee/issues/45)
  - [A tab left open across a host wipe pushes its old board, claim views included, into the new host](https://github.com/tractat-us/bee/issues/46)
  - [A Sketch can still reach the network through WebRTC, which CSP doesn't cover](https://github.com/tractat-us/bee/issues/49)
  - [ClaimsSmokeTest and FrameBoundTest fail intermittently in the smoke job](https://github.com/tractat-us/bee/issues/53)
  - [Refuse cross-site requests by Fetch Metadata: a no-Origin GET can still fill the pairing slots](https://github.com/tractat-us/bee/issues/54)
  - [The host can hang up on an over-bound frame without its 1009 close frame](https://github.com/tractat-us/bee/issues/58)
  - [Decision: a Sketch can forge the viewer's choice in Chromium, by focusing itself](https://github.com/tractat-us/bee/issues/60)
  - [Decision: any local process can admit a second screen by writing a human-attributed admit](https://github.com/tractat-us/bee/issues/64)
  - [Surface data semantics: merge or replace, concurrent card order, leaf encoding](https://github.com/tractat-us/bee/issues/14)
  - [Sketch and the companion adapter (spike 5, the acceptance test)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-8-sketch-and-the-companion-adapter-spike-5-the-acceptance-test)
  - [Durability of the board (spike 6)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-9-durability-of-the-board-spike-6)
  - [A second screen, joined by LAN pairing (spike 7)](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-10-a-second-screen-spike-7)
  - [Task 10's follow-up calls](https://github.com/tractat-us/bee/pull/42)
  - [Working-day surfaces: Board, Poll, orphan decisions, history strip](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-11-working-day-surfaces-board-poll-orphan-decisions-history-strip)
  - [(a) LatticeDotFun, a dot store that joins its payloads](https://github.com/tractat-us/kuilt/pull/3132)
  - [(b) CausalMap, one shared context for a map and its nested stores](https://github.com/tractat-us/kuilt/pull/3136)

- **In flight** · 4

  ______________________________________________________________________

  - [A client whose FullState is over the frame bound redials and resends it forever](https://github.com/tractat-us/bee/issues/65)
  - [Shared causal context for JsonCrdt (epic)](https://github.com/tractat-us/kuilt/issues/3126)
  - [kuilt-raft: prune a removed peer's replication state, and reset it at election](https://github.com/tractat-us/kuilt/pull/3133)
  - [session: the RoomHost contract doesn't say whether onRoom ends when its connection tears](https://github.com/tractat-us/kuilt/issues/3129)

- **Waiting on Iain** · 5

  ______________________________________________________________________

  - [(c) A dot-store Rga](https://github.com/tractat-us/kuilt/issues/3137)
  - [kuilt-raft: a node stops campaigning once its removal is committed](https://github.com/tractat-us/kuilt/pull/3134)
  - [Pair a real phone over the LAN](https://github.com/tractat-us/bee/pull/42)
  - [Turn off auto-close in bee's settings](https://github.com/tractat-us/bee/issues/6#issuecomment-6724665300)
  - [Contributor agreement text and a signing check](https://github.com/tractat-us/bee/issues/6)

- **Blocked** · 2

  ______________________________________________________________________

  - [Surface data semantics: object writes replace, card order is an Rga of ids](https://github.com/tractat-us/bee/pull/19)
  - [ClaimTable: drop duplicate log entries through kuilt's ClientSessionTable](https://github.com/tractat-us/bee/issues/23)

- **Next** · 23

  ______________________________________________________________________

  - [Give the host its own peer kind, and keep bee_clear off its surfaces](https://github.com/tractat-us/bee/issues/71)
  - [The bridge refuses wait and list on the host's pairing surfaces](https://github.com/tractat-us/bee/issues/72)
  - [Give each e2e spec that writes records its own host, and run two workers](https://github.com/tractat-us/bee/issues/74)
  - [The bridge's board socket sends no pings, so a half-open link can outlast the boot grace](https://github.com/tractat-us/bee/issues/77)
  - [Boot grace: two survivors holding different stale entries make a dead agent look seen](https://github.com/tractat-us/bee/issues/78)
  - [A bee-notions edit can ship a stale bundle while webpack reports up to date](https://github.com/tractat-us/bee/issues/80)
  - [The bridge can't append to an array, so agent Polls lose their options basis](https://github.com/tractat-us/bee/issues/81)
  - [Fence an orphan decision's proposal by the orphan token](https://github.com/tractat-us/bee/issues/83)
  - [Sketch Send bar: close the remaining arming gaps with aria-disabled and a click guard](https://github.com/tractat-us/bee/issues/84)
  - [PairingChannelTest's hang-up case fails every time it runs alone](https://github.com/tractat-us/bee/issues/85)
  - (d) JsonCrdt v2 core and path API
  - (e) Migration by re-seed, and a format tag
  - (f) Quilter frontier wiring (kuilt#2177)
  - (g) Writerside and sample rewrite, and the ORMap guard
  - [quilter: no signal that a replica has caught up with the peer it joined](https://github.com/tractat-us/kuilt/issues/3142)
  - [store: IndexedDbDurableStore lets synchronous JS throws escape as JsException, which no catch (Exception) sees](https://github.com/tractat-us/kuilt/issues/3143)
  - [Quilter drops a delta or FullState over the seam's payload budget without a word](https://github.com/tractat-us/kuilt/issues/3144)
  - [WebSocket installs take no frame bound, so one header can allocate 2 GiB](https://github.com/tractat-us/kuilt/issues/3145)
  - [Server looms accept a WebSocket handshake from any web page: no Origin or Host check](https://github.com/tractat-us/kuilt/issues/3146)
  - [Quilter: a caller can't wait until its own write is acknowledged](https://github.com/tractat-us/kuilt/issues/3147)
  - [Star overlays: a spoke's Quilter can't sendTo another spoke, so a mid-stream joiner never heals its cursor](https://github.com/tractat-us/kuilt/issues/3148)
  - [Relay: attest each record's author by the connection that first delivered it](https://github.com/tractat-us/kuilt/issues/3149)
  - [Move Ktor to 3.6.1: Netty and WebSocket drop a session's last frame on 3.5.2](https://github.com/tractat-us/kuilt/issues/3150)

- **Later** · 3

  ______________________________________________________________________

  - [Serve the board over HTTPS on the LAN, so LAN pages are secure contexts](https://github.com/tractat-us/bee/issues/73)
  - [Dogfood: bee as the board for its own development](https://github.com/tractat-us/bee/issues/21)
  - [kuilt References policy: allow references to public tractat-us projects](https://github.com/tractat-us/bee/issues/6)
