The data-form / wire layer for Groove.
Status: experimental (design / seed phase). The least-settled layer of the cleave/groove/spline trio. Spun off as its own repo at owner direction 2026-06-16 (overriding the recommendation to defer it inside groove). Kept deliberately thin.
spline is the serialise + parallelise data-form wire layer — the bytes that Groove
carries. The name is joinery: a spline is the thin strip that seats into a groove on
both boards to carry the join. It presupposes groove and is the material that passes
through it — the typed bytes crossing the joint.
It is not a new serialiser. It is a thin alignment over what consumers already speak:
Control plane |
Bebop — typed, binary, reliable/ordered. Gives Groove’s logical schema a real typed encoding. |
Media plane |
WebRTC / RTP — lossy, low-latency, no head-of-line block. |
(The 2026-06-15 gossamer audit found burble already speaks both — so spline carries
those typed planes rather than inventing a format.)
The data-form is exactly where protocol-squisher originally planned to operate and
stalled. spline is a fresh start: it must NOT recreate the copy/sync seam that stalled
squisher, and must NOT lift code from protocol-squisher / spline (a frozen
provenance archive — evidence, not a source).
This repo is therefore intentionally seed-only for now: scope, non-goals, and open
questions, no lifted implementation. See docs/SEED-QUESTIONS.adoc.
spline is consumed by groove alongside cleave. The B perp C decoupling means spline
stays posture-blind: the cleave membrane contract (lifecycle, permeability, security)
is independent of the wire format, and the rank/lifecycle witness MUST NOT appear in
spline’s byte encoding.
Confirmed as a standalone repo named spline, renamed from the working name weft to
fit the estate’s joinery vocabulary: cleave the surface, groove the protocol,
spline the data-form that seats into the groove. Consumers (gossamer, burble, …)
sit outside this system and keep their own names. See the estate joinery-naming ADR.
The seed questions are answered on paper in docs/decisions/ (2026-07-09); nothing is
wired yet.
-
ADR 0002 — "parallelise" = multiplexing independent typed planes of one groove session over one connection, no head-of-line blocking.
-
ADR 0003 — consumers (burble) own their
.bopschemas; spline owns only the alignment mapping, never a copied schema. -
ADR 0004 — cap tokens = signed manifest records (groove ADR 0010); handles = wire-opaque strings, linear at each endpoint; posture never in bytes (TS-7).
-
ADR 0005 — the four-part bar for leaving seed status; no
src/until it is met.