# Decisions

Questions put to Iain, and how he ruled. Rendered by the docs site from [plan.yaml](https://tractat-us.github.io/bee/project/plan.yaml).

## Decisions

### Claims blocked by kuilt learner admission: fix kuilt first, or work around it in bee?

Done. [bee#11](https://github.com/tractat-us/bee/issues/11)

Ruled 2026-11-07: Fix kuilt first: a learner reconciler, then removal after a grace (kuilt#3120). bee bumps its kuilt pin and finishes Task 6 once kuilt publishes. ([ruling](https://github.com/tractat-us/bee/issues/11#issuecomment-6708367111))

### Detect a dead board link from the claims link, or from a per-spoke view?

Done. [bee#28](https://github.com/tractat-us/bee/issues/28)

Ruled 2026-11-07: Detect a crash from the claims link: a node dropped after its learner grace is a PeerLost. ([ruling](https://github.com/tractat-us/bee/issues/28#issuecomment-6714701528))

### Decision: an agent that dies while the host is down keeps its claims forever

Done. [bee#44](https://github.com/tractat-us/bee/issues/44), [bee#62](https://github.com/tractat-us/bee/pull/62)

Ruled 2026-11-08: Option (a), a boot grace. ([ruling](https://github.com/tractat-us/bee/issues/44#issuecomment-6724665507))

### A Sketch can still reach the network through WebRTC, which CSP doesn't cover

Done. [bee#49](https://github.com/tractat-us/bee/issues/49), [bee#66, spec limit](https://github.com/tractat-us/bee/pull/66)

Ruled 2026-11-08: Accepted as a v1 limit and documented in the spec; revisit when an engine ships a control. ([ruling](https://github.com/tractat-us/bee/issues/49#issuecomment-6724762977))

### The host can hang up on an over-bound frame without its 1009 close frame

Done. [bee#58](https://github.com/tractat-us/bee/issues/58), [bee#69](https://github.com/tractat-us/bee/pull/69)

Ruled 2026-11-08: The host must deliver the 1009; done by moving Ktor to 3.6.1. ([ruling](https://github.com/tractat-us/bee/issues/58#issuecomment-6724762759))

### Decision: a Sketch can forge the viewer's choice in Chromium, by focusing itself

Done. [bee#60](https://github.com/tractat-us/bee/issues/60), [bee#38](https://github.com/tractat-us/bee/pull/38)

Ruled 2026-11-08: Option (a): the page commits the choice, outside the frame. ([ruling](https://github.com/tractat-us/bee/issues/60#issuecomment-6724762579))

### Decision: any local process can admit a second screen by writing a human-attributed admit

Done. [bee#64](https://github.com/tractat-us/bee/issues/64), [bee#68](https://github.com/tractat-us/bee/pull/68)

Ruled 2026-11-08: Option A for v1: state the limit. No new gate may rest on peer kind. ([ruling](https://github.com/tractat-us/bee/issues/64#issuecomment-6724838405))

### Surface data semantics: merge or replace, concurrent card order, leaf encoding

Done. [bee#14](https://github.com/tractat-us/bee/issues/14)

Ruled 2026-11-07: Object writes replace, card order is an Rga of ids, and the prefix leaf encoding stands. ([ruling](https://github.com/tractat-us/bee/issues/14#issuecomment-6708367416))

### Task 10's follow-up calls

Done. [bee#42](https://github.com/tractat-us/bee/pull/42)

Ruled 2026-11-08: Add PeerKind.Host as a label; accept claim-free admits and have the bridge refuse pairing surfaces; HTTPS on the LAN after the demo; a host per e2e file that writes records. ([ruling](https://github.com/tractat-us/bee/issues/6#issuecomment-6724665300))

## Rulings on other items

### Join, which completes spikes 3 and 4

[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). Ruled 2026-11-07: The post-Task-7 review hold is lifted. #27 lands first, then #32 and #33. Tasks 8, 9 and 10 start in parallel from main once #27 merges, and Iain reviews #27's deviations after the fact. ([ruling](https://github.com/tractat-us/bee/issues/6#issuecomment-6715926429))

### A board change elsewhere may re-create the field someone is typing in

[A board change elsewhere may re-create the field someone is typing in](https://github.com/tractat-us/bee/issues/43). Ruled 2026-11-08: Not a bug. ([ruling](https://github.com/tractat-us/bee/issues/43#issuecomment-6725706047))

### Shared causal context for JsonCrdt (epic)

[Shared causal context for JsonCrdt (epic)](https://github.com/tractat-us/kuilt/issues/3126). Ruled 2026-11-07: Reset and replace; migrate by re-seed; move every nested use to the shared-context CausalMap. The (a)–(g) split is confirmed. ([ruling](https://github.com/tractat-us/kuilt/issues/3126))
