Skip to content

Spline

License: MPL-2.0 SOC 3 Compliant ISO 27001 Compliant CIAQ Compliant OpenSSF Scorecard nOpenSSF Best Practices

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.


What it is

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 squisher caution (why this repo is thin)

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.

Where it sits

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.

Naming and scoping (resolved 2026-07-06)

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.

Decisions

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 .bop schemas; 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.

License

Mozilla Public License, v. 2.0. See LICENSE.

SPDX-License-Identifier: MPL-2.0

About

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.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages