Engineering

Architecture decisions

These records preserve the reasoning behind Yoke's design. Read a record's status and superseding decisions before applying an older choice. The architecture describes the current implementation; the wire protocol is normative for control behavior.

Record Decision
0001 — Standalone repository named yoke
0002 — Yoke is a control plane; the media plane is endpoint hardware
0003 — Controllerless pairing consumer-owned state, versioned intents
0004 — HDCP position endpoint hardware's concern, never yoke's
0005 — Control-frame authentication HMAC-SHA256 pre-shared key
0006 — Sans-I/O protocol core with a simulated network
0007 — Sequence-number resumption uses Unix time as the floor
0008 — Implementation language Python, stdlib-only at runtime
0009 — Anti-entropy re-issues intents; rejected intents are evicted
0010 — Denial-of-service hardening of the frame and node layers
0011 — Media and HDCP invariants scope for yoke-designed endpoints
0012 — Durable transition feedback and reserved outbound sequences
0013 — Serialized driver effects and explicit agent lifecycle
0014 — Reconcile only owned Linux USB/IP resources
0015 — Reference media multicast, passive debugging, and input bounds
0016 — Explicit provisioning and validated control inputs
0017 — Retained driver ownership and bounded teardown
0018 — Operator-controlled Linux release updates over Ethernet
0019 — ESP32 local Ethernet firmware updates
ADR 0020 Optional read-only telemetry and terminal monitoring

Protocol behavior changes require updating the normative protocol and recording the decision before implementation. See Contributing for the change workflow.