# Timeline

When each piece started and landed, and the estimate for what is still open. Rendered by the docs site from [plan.yaml](https://tractat-us.github.io/bee/project/plan.yaml).

Times are in America/New_York (ET). Durations run from start to merge, or for a decision, to its ruling.

## Done

Only finished work, on the dates it ran. Open work has no bar: its estimates are below.

```mermaid
gantt
    dateFormat YYYY-MM-DD HH:mm
    axisFormat %m-%d %H:%M
    section Done
    Kotlin/wasm and the renderer in one page (spike 1) : task_1, 2026-11-06 19:59, 2026-11-06 20:31
    The board lattice and its projection (spike 2, part 1) : task_2, 2026-11-06 20:38, 2026-11-06 21:02
    The relay (spike 2, part 2) : task_3, 2026-11-06 21:13, 2026-11-06 21:44
    The browser driver and two browsers (spike 2, part 3) : task_4, 2026-11-06 21:55, 2026-11-06 22:30
    Bridge mechanics (spike 3, first half) : task_5, 2026-11-06 20:47, 2026-11-06 21:12
    Claims (spike 4) : task_6, 2026-11-06 20:42, 2026-11-07 19:00
    Claims blocked by kuilt learner admission  fix kuilt first, or work around it in bee? : bee_11, 2026-11-06 20:44, 2026-11-07 09:43
    Join, which completes spikes 3 and 4 : task_7, 2026-11-07 16:49, 2026-11-07 21:17
    Join the bridge, the board and claims : bee_27, 2026-11-07 16:49, 2026-11-07 21:01
    Detect a dead board link from the claims link, or from a per-spoke view? : bee_28, 2026-11-07 16:51, 2026-11-07 18:53
    Detect a crashed agent from its claims link : bee_32, 2026-11-07 19:27, 2026-11-07 21:10
    A late win whose link dies is released only by a later wait on that surface : bee_31, 2026-11-07 19:23, 2026-11-07 21:17
    Give back a late win whose claims link died, on the next link : bee_33, 2026-11-07 20:18, 2026-11-07 21:17
    A wait's reserve can no longer fail, so make it fail loudly : bee_37, 2026-11-07 21:10, 2026-11-07 21:28
    Move kuilt to 0.7.0-dev.1696 : bee_40, 2026-11-07 21:15, 2026-11-07 21:19
    A board change elsewhere may re-create the field someone is typing in : bee_43, 2026-11-07 21:36, 2026-11-08 14:00
    Decision  an agent that dies while the host is down keeps its claims forever : bee_44, 2026-11-07 21:36, 2026-11-08 12:26
    Any website open on the laptop can use the board  check Origin and Host on /ws/* : bee_45, 2026-11-07 21:44, 2026-11-07 23:40
    A tab left open across a host wipe pushes its old board, claim views included, into the new host : bee_46, 2026-11-07 22:07, 2026-11-07 23:49
    A Sketch can still reach the network through WebRTC, which CSP doesn't cover : bee_49, 2026-11-07 22:41, 2026-11-08 12:30
    ClaimsSmokeTest and FrameBoundTest fail intermittently in the smoke job : bee_53, 2026-11-07 23:31, 2026-11-08 00:27
    Refuse cross-site requests by Fetch Metadata  a no-Origin GET can still fill the pairing slots : bee_54, 2026-11-07 23:40, 2026-11-08 00:36
    The host can hang up on an over-bound frame without its 1009 close frame : bee_58, 2026-11-08 00:15, 2026-11-08 12:35
    Decision  a Sketch can forge the viewer's choice in Chromium, by focusing itself : bee_60, 2026-11-08 01:01, 2026-11-08 12:35
    Decision  any local process can admit a second screen by writing a human-attributed admit : bee_64, 2026-11-08 12:33, 2026-11-08 12:42
    Surface data semantics  merge or replace, concurrent card order, leaf encoding : bee_14, 2026-11-06 20:51, 2026-11-07 09:43
    Sketch and the companion adapter (spike 5, the acceptance test) : task_8, 2026-11-07 21:13, 2026-11-08 13:49
    Durability of the board (spike 6) : task_9, 2026-11-07 21:15, 2026-11-07 22:21
    A second screen, joined by LAN pairing (spike 7) : task_10, 2026-11-07 21:20, 2026-11-07 22:51
    Task 10's follow-up calls : bee_42_calls, 2026-11-07 21:35, 2026-11-08 12:26
    Working-day surfaces  Board, Poll, orphan decisions, history strip : task_11, 2026-11-08 12:44, 2026-11-08 13:59
    (a) LatticeDotFun, a dot store that joins its payloads : kuilt_3132, 2026-11-07 17:27, 2026-11-07 20:29
    (b) CausalMap, one shared context for a map and its nested stores : kuilt_3136, 2026-11-07 18:01, 2026-11-07 20:43
```

| Item                                                                                             | Started              | Landed               | Took   | Links                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------ | -------------------- | -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Kotlin/wasm and the renderer in one page (spike 1)                                               | 2026-11-06 19:59 EST | 2026-11-06 20:31 EST | 32 min | [Plan, Task 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), [bee#8](https://github.com/tractat-us/bee/pull/8), [Spike 1 report](https://tractat-us.github.io/bee/spikes/2026-11-spike-1-renderer-glue/index.md)         |
| The board lattice and its projection (spike 2, part 1)                                           | 2026-11-06 20:38 EST | 2026-11-06 21:02 EST | 24 min | [Plan, Task 2](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), [bee#9](https://github.com/tractat-us/bee/pull/9), [Spike 2 report](https://tractat-us.github.io/bee/spikes/2026-11-spike-2-crdt-behind-a2ui/index.md)                        |
| The relay (spike 2, part 2)                                                                      | 2026-11-06 21:13 EST | 2026-11-06 21:44 EST | 31 min | [Plan, Task 3](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-3-the-relay-spike-2-part-2), [bee#15](https://github.com/tractat-us/bee/pull/15), [bee#29, deltas not whole boards](https://github.com/tractat-us/bee/pull/29)                                                                        |
| The browser driver and two browsers (spike 2, part 3)                                            | 2026-11-06 21:55 EST | 2026-11-06 22:30 EST | 35 min | [Plan, Task 4](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), [bee#16](https://github.com/tractat-us/bee/pull/16)                                                                                                                            |
| Bridge mechanics (spike 3, first half)                                                           | 2026-11-06 20:47 EST | 2026-11-06 21:12 EST | 25 min | [Plan, Task 5](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-5-bridge-mechanics-spike-3-first-half), [bee#13](https://github.com/tractat-us/bee/pull/13), [Spike 3 report](https://tractat-us.github.io/bee/spikes/2026-11-spike-3-bridge-mechanics/index.md)                                      |
| Claims (spike 4)                                                                                 | 2026-11-06 20:42 EST | 2026-11-07 19:00 EST | 22.3 h | [Plan, Task 6](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-6-claims-spike-4), [bee#10](https://github.com/tractat-us/bee/pull/10), [bee#26, learner grace](https://github.com/tractat-us/bee/pull/26), [Spike 4 report](https://tractat-us.github.io/bee/spikes/2026-11-spike-4-claims/index.md) |
| Claims blocked by kuilt learner admission: fix kuilt first, or work around it in bee?            | 2026-11-06 20:44 EST | 2026-11-07 09:43 EST | 13.0 h | [bee#11](https://github.com/tractat-us/bee/issues/11)                                                                                                                                                                                                                                                                           |
| Join, which completes spikes 3 and 4                                                             | 2026-11-07 16:49 EST | 2026-11-07 21:17 EST | 4.5 h  | [Plan, Task 7](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                                                            | 2026-11-07 16:49 EST | 2026-11-07 21:01 EST | 4.2 h  | [bee#27](https://github.com/tractat-us/bee/pull/27)                                                                                                                                                                                                                                                                             |
| Detect a dead board link from the claims link, or from a per-spoke view?                         | 2026-11-07 16:51 EST | 2026-11-07 18:53 EST | 2.0 h  | [bee#28](https://github.com/tractat-us/bee/issues/28)                                                                                                                                                                                                                                                                           |
| Detect a crashed agent from its claims link                                                      | 2026-11-07 19:27 EST | 2026-11-07 21:10 EST | 1.7 h  | [bee#32](https://github.com/tractat-us/bee/pull/32)                                                                                                                                                                                                                                                                             |
| A late win whose link dies is released only by a later wait on that surface                      | 2026-11-07 19:23 EST | 2026-11-07 21:17 EST | 1.9 h  | [bee#31](https://github.com/tractat-us/bee/issues/31)                                                                                                                                                                                                                                                                           |
| Give back a late win whose claims link died, on the next link                                    | 2026-11-07 20:18 EST | 2026-11-07 21:17 EST | 59 min | [bee#33](https://github.com/tractat-us/bee/pull/33)                                                                                                                                                                                                                                                                             |
| A wait's reserve can no longer fail, so make it fail loudly                                      | 2026-11-07 21:10 EST | 2026-11-07 21:28 EST | 18 min | [bee#37](https://github.com/tractat-us/bee/issues/37), [bee#41](https://github.com/tractat-us/bee/pull/41)                                                                                                                                                                                                                      |
| Move kuilt to 0.7.0-dev.1696                                                                     | 2026-11-07 21:15 EST | 2026-11-07 21:19 EST | 4 min  | [bee#40](https://github.com/tractat-us/bee/pull/40)                                                                                                                                                                                                                                                                             |
| A board change elsewhere may re-create the field someone is typing in                            | 2026-11-07 21:36 EST | 2026-11-08 14:00 EST | 16.4 h | [bee#43](https://github.com/tractat-us/bee/issues/43), [bee#63](https://github.com/tractat-us/bee/pull/63)                                                                                                                                                                                                                      |
| Decision: an agent that dies while the host is down keeps its claims forever                     | 2026-11-07 21:36 EST | 2026-11-08 12:26 EST | 14.8 h | [bee#44](https://github.com/tractat-us/bee/issues/44), [bee#62](https://github.com/tractat-us/bee/pull/62)                                                                                                                                                                                                                      |
| Any website open on the laptop can use the board: check Origin and Host on /ws/\*                | 2026-11-07 21:44 EST | 2026-11-07 23:40 EST | 1.9 h  | [bee#45](https://github.com/tractat-us/bee/issues/45), [bee#51](https://github.com/tractat-us/bee/pull/51)                                                                                                                                                                                                                      |
| A tab left open across a host wipe pushes its old board, claim views included, into the new host | 2026-11-07 22:07 EST | 2026-11-07 23:49 EST | 1.7 h  | [bee#46](https://github.com/tractat-us/bee/issues/46), [bee#52](https://github.com/tractat-us/bee/pull/52)                                                                                                                                                                                                                      |
| A Sketch can still reach the network through WebRTC, which CSP doesn't cover                     | 2026-11-07 22:41 EST | 2026-11-08 12:30 EST | 13.8 h | [bee#49](https://github.com/tractat-us/bee/issues/49), [bee#66, spec limit](https://github.com/tractat-us/bee/pull/66)                                                                                                                                                                                                          |
| ClaimsSmokeTest and FrameBoundTest fail intermittently in the smoke job                          | 2026-11-07 23:31 EST | 2026-11-08 00:27 EST | 56 min | [bee#53](https://github.com/tractat-us/bee/issues/53), [bee#57](https://github.com/tractat-us/bee/pull/57)                                                                                                                                                                                                                      |
| Refuse cross-site requests by Fetch Metadata: a no-Origin GET can still fill the pairing slots   | 2026-11-07 23:40 EST | 2026-11-08 00:36 EST | 56 min | [bee#54](https://github.com/tractat-us/bee/issues/54), [bee#55](https://github.com/tractat-us/bee/pull/55)                                                                                                                                                                                                                      |
| The host can hang up on an over-bound frame without its 1009 close frame                         | 2026-11-08 00:15 EST | 2026-11-08 12:35 EST | 12.3 h | [bee#58](https://github.com/tractat-us/bee/issues/58), [bee#69](https://github.com/tractat-us/bee/pull/69)                                                                                                                                                                                                                      |
| Decision: a Sketch can forge the viewer's choice in Chromium, by focusing itself                 | 2026-11-08 01:01 EST | 2026-11-08 12:35 EST | 11.6 h | [bee#60](https://github.com/tractat-us/bee/issues/60), [bee#38](https://github.com/tractat-us/bee/pull/38)                                                                                                                                                                                                                      |
| Decision: any local process can admit a second screen by writing a human-attributed admit        | 2026-11-08 12:33 EST | 2026-11-08 12:42 EST | 9 min  | [bee#64](https://github.com/tractat-us/bee/issues/64), [bee#68](https://github.com/tractat-us/bee/pull/68)                                                                                                                                                                                                                      |
| Surface data semantics: merge or replace, concurrent card order, leaf encoding                   | 2026-11-06 20:51 EST | 2026-11-07 09:43 EST | 12.9 h | [bee#14](https://github.com/tractat-us/bee/issues/14)                                                                                                                                                                                                                                                                           |
| Sketch and the companion adapter (spike 5, the acceptance test)                                  | 2026-11-07 21:13 EST | 2026-11-08 13:49 EST | 16.6 h | [Plan, Task 8](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), [bee#38](https://github.com/tractat-us/bee/pull/38)                                                                                                                  |
| Durability of the board (spike 6)                                                                | 2026-11-07 21:15 EST | 2026-11-07 22:21 EST | 1.1 h  | [Plan, Task 9](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-9-durability-of-the-board-spike-6), [bee#39](https://github.com/tractat-us/bee/pull/39)                                                                                                                                               |
| A second screen, joined by LAN pairing (spike 7)                                                 | 2026-11-07 21:20 EST | 2026-11-07 22:51 EST | 1.5 h  | [Plan, Task 10](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-10-a-second-screen-spike-7), [bee#42](https://github.com/tractat-us/bee/pull/42)                                                                                                                                                     |
| Task 10's follow-up calls                                                                        | 2026-11-07 21:35 EST | 2026-11-08 12:26 EST | 14.8 h | [bee#42](https://github.com/tractat-us/bee/pull/42)                                                                                                                                                                                                                                                                             |
| Working-day surfaces: Board, Poll, orphan decisions, history strip                               | 2026-11-08 12:44 EST | 2026-11-08 13:59 EST | 1.2 h  | [Plan, Task 11](https://tractat-us.github.io/bee/superpowers/plans/2026-11-06-bee-v1/#task-11-working-day-surfaces-board-poll-orphan-decisions-history-strip), [bee#70, Notions Poll and Board](https://github.com/tractat-us/bee/pull/70), [bee#75, orphan decisions](https://github.com/tractat-us/bee/pull/75)               |
| (a) LatticeDotFun, a dot store that joins its payloads                                           | 2026-11-07 17:27 EST | 2026-11-07 20:29 EST | 3.0 h  | [kuilt#3132](https://github.com/tractat-us/kuilt/pull/3132)                                                                                                                                                                                                                                                                     |
| (b) CausalMap, one shared context for a map and its nested stores                                | 2026-11-07 18:01 EST | 2026-11-07 20:43 EST | 2.7 h  | [kuilt#3136](https://github.com/tractat-us/kuilt/pull/3136)                                                                                                                                                                                                                                                                     |

## Open

Each estimate is a range of wall-clock time from start to merge, leaving out time waiting on Iain.

### In flight

- **A client whose FullState is over the frame bound redials and resends it forever**. Started 2026-11-08 12:33 EST.\
  Links: [bee#65](https://github.com/tractat-us/bee/issues/65), [bee#76](https://github.com/tractat-us/bee/pull/76)
- **Shared causal context for JsonCrdt (epic)**. Started 2026-11-07 14:36 EST. Estimate: 1–3 days, low confidence.\
  Basis: From the issue being filed to the last slice merging. (a) and (b) each took about 3 h from PR open to merge. (c) waits on three design calls for Iain, with no PR yet, and (d)–(g) are not filed. What remains is a chain of three: (c), then (d), then (e)–(g) in parallel, at 3–12 h each.\
  Links: [kuilt#3126](https://github.com/tractat-us/kuilt/issues/3126)
- **kuilt-raft: prune a removed peer's replication state, and reset it at election**. Started 2026-11-07 17:29 EST.\
  Links: [kuilt#3133](https://github.com/tractat-us/kuilt/pull/3133)
- **session: the RoomHost contract doesn't say whether onRoom ends when its connection tears**. Started 2026-11-07 20:28 EST.\
  Links: [kuilt#3129](https://github.com/tractat-us/kuilt/issues/3129), [kuilt#3141, slice 1](https://github.com/tractat-us/kuilt/pull/3141)

### Waiting on Iain

- **(c) A dot-store Rga**. Started 2026-11-07 18:54 EST.\
  Links: [kuilt#3137](https://github.com/tractat-us/kuilt/issues/3137), [Design gate](https://github.com/tractat-us/kuilt/issues/3137#issuecomment-6716124347)
- **kuilt-raft: a node stops campaigning once its removal is committed**. Started 2026-11-07 17:32 EST.\
  Links: [kuilt#3134](https://github.com/tractat-us/kuilt/pull/3134)
- **Pair a real phone over the LAN**. Started 2026-11-08 12:26 EST.\
  Links: [bee#42](https://github.com/tractat-us/bee/pull/42), [Steps: Showing the board on another screen](https://tractat-us.github.io/bee/setup/#showing-the-board-on-another-screen)
- **Turn off auto-close in bee's settings**. Started 2026-11-08 12:26 EST.\
  Links: [Ruling on bee#6](https://github.com/tractat-us/bee/issues/6#issuecomment-6724665300)
- **Contributor agreement text and a signing check**\
  Links: [Epic bee#6](https://github.com/tractat-us/bee/issues/6)

### Blocked

- **Surface data semantics: object writes replace, card order is an Rga of ids**. Started 2026-11-07 09:51 EST.\
  Links: [bee#19](https://github.com/tractat-us/bee/pull/19)
- **ClaimTable: drop duplicate log entries through kuilt's ClientSessionTable**. Started 2026-11-07 15:43 EST.\
  Links: [bee#23](https://github.com/tractat-us/bee/issues/23)

### Next

- **Give the host its own peer kind, and keep bee_clear off its surfaces**. Started 2026-11-08 12:44 EST.\
  Links: [bee#71](https://github.com/tractat-us/bee/issues/71)
- **The bridge refuses wait and list on the host's pairing surfaces**. Started 2026-11-08 12:44 EST.\
  Links: [bee#72](https://github.com/tractat-us/bee/issues/72)
- **Give each e2e spec that writes records its own host, and run two workers**. Started 2026-11-08 12:44 EST.\
  Links: [bee#74](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**. Started 2026-11-08 12:52 EST.\
  Links: [bee#77](https://github.com/tractat-us/bee/issues/77)
- **Boot grace: two survivors holding different stale entries make a dead agent look seen**. Started 2026-11-08 12:52 EST.\
  Links: [bee#78](https://github.com/tractat-us/bee/issues/78)
- **A bee-notions edit can ship a stale bundle while webpack reports up to date**. Started 2026-11-08 12:59 EST.\
  Links: [bee#80](https://github.com/tractat-us/bee/issues/80)
- **The bridge can't append to an array, so agent Polls lose their options basis**. Started 2026-11-08 13:10 EST.\
  Links: [bee#81](https://github.com/tractat-us/bee/issues/81)
- **Fence an orphan decision's proposal by the orphan token**. Started 2026-11-08 13:40 EST.\
  Links: [bee#83](https://github.com/tractat-us/bee/issues/83)
- **Sketch Send bar: close the remaining arming gaps with aria-disabled and a click guard**. Started 2026-11-08 13:49 EST.\
  Links: [bee#84](https://github.com/tractat-us/bee/issues/84)
- **PairingChannelTest's hang-up case fails every time it runs alone**. Started 2026-11-08 13:59 EST.\
  Links: [bee#85](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**. Started 2026-11-07 21:25 EST.\
  Links: [kuilt#3142](https://github.com/tractat-us/kuilt/issues/3142)
- **store: IndexedDbDurableStore lets synchronous JS throws escape as JsException, which no catch (Exception) sees**. Started 2026-11-07 21:41 EST.\
  Links: [kuilt#3143](https://github.com/tractat-us/kuilt/issues/3143)
- **Quilter drops a delta or FullState over the seam's payload budget without a word**. Started 2026-11-07 21:58 EST.\
  Links: [kuilt#3144](https://github.com/tractat-us/kuilt/issues/3144)
- **WebSocket installs take no frame bound, so one header can allocate 2 GiB**. Started 2026-11-07 22:25 EST.\
  Links: [kuilt#3145](https://github.com/tractat-us/kuilt/issues/3145)
- **Server looms accept a WebSocket handshake from any web page: no Origin or Host check**. Started 2026-11-07 23:01 EST.\
  Links: [kuilt#3146](https://github.com/tractat-us/kuilt/issues/3146)
- **Quilter: a caller can't wait until its own write is acknowledged**. Started 2026-11-08 10:02 EST.\
  Links: [kuilt#3147](https://github.com/tractat-us/kuilt/issues/3147), [bee#38](https://github.com/tractat-us/bee/pull/38)
- **Star overlays: a spoke's Quilter can't sendTo another spoke, so a mid-stream joiner never heals its cursor**. Started 2026-11-08 12:33 EST.\
  Links: [kuilt#3148](https://github.com/tractat-us/kuilt/issues/3148)
- **Relay: attest each record's author by the connection that first delivered it**. Started 2026-11-08 12:42 EST.\
  Links: [kuilt#3149](https://github.com/tractat-us/kuilt/issues/3149), [bee#68](https://github.com/tractat-us/bee/pull/68)
- **Move Ktor to 3.6.1: Netty and WebSocket drop a session's last frame on 3.5.2**. Started 2026-11-08 13:00 EST.\
  Links: [kuilt#3150](https://github.com/tractat-us/kuilt/issues/3150)

### Later

- **Serve the board over HTTPS on the LAN, so LAN pages are secure contexts**. Started 2026-11-08 12:44 EST.\
  Links: [bee#73](https://github.com/tractat-us/bee/issues/73)
- **Dogfood: bee as the board for its own development**\
  Links: [bee#21](https://github.com/tractat-us/bee/issues/21)
- **kuilt References policy: allow references to public tractat-us projects**\
  Links: [Epic bee#6](https://github.com/tractat-us/bee/issues/6)
