Move valid_identifier, no_process_identity, no_resource_identity, process_identity_from_wire, read_at, write_at, sync_descriptor, inspect_file, capture_identity, open_registry, public_record, and valid_record_shape out of session_registry.cpp into session_registry_impl.hpp (inline, in glove::control). Exposes the shared helpers needed by the recovery module. session_registry.cpp 3,559 -> 3,096 lines. ctest green.
Move the on-disk constants, unique_fd, opened_registry, registry_identity, error helpers, and session_registry::implementation struct out of session_registry.cpp into session_registry_impl.hpp (internal header). This exposes the internal state needed by the recovery/replay module. session_registry.cpp 3,638 -> 3,559 lines. ctest green.
Move decoded_persisted_record + the 7 replay_lookup structs out of session_registry.cpp into a new session_registry_recovery.hpp internal header. session_registry.cpp 3,678 -> 3,638 lines. Recovery semantics preserved (ctest green).
Move encode_record + decode_record (and the max_record_payload_bytes / strict_read_options constants) out of session_registry.cpp into session_registry_wire.{hpp,cpp}, completing the wire-codec extraction. Byte-for-byte wire format preserved (ctest green). session_registry.cpp 4,387 -> 3,678 lines.
Move record_material, the hash_* functions, terminal_reference, and the wire<->semantic conversion helpers (termination_cause_*, failure_code_*, state_from_wire) out of session_registry.cpp into session_registry_wire.{hpp,cpp}. Byte-for-byte wire format preserved (ctest control_session_registry + gloved_lifecycle green). session_registry.cpp 4,245 -> 3,706 lines.
Register tests/scripts/test_fetch_workerd.py (30 network-free checks of the pinned workerd tool) as the workerd_supply_chain CTest entry, so the supply-chain verification runs in the normal ctest suite.
Bind Glove-owned Pi adoption snapshots to launch profiles and receipts while keeping host state out of private homes. Add an offline hostile-content policy and repeatable Linux service setup.
Model and PTY cannot self-report pass or failure. Glove now runs
each refinement-eval-v1 session through a declarative evaluator that
checks bounded fixture assertions (termination cause, exit code, max
latency, required and forbidden transcript literals) against audited
resource events, then binds the evaluated outcome inside the
authenticated receipt digest. Capability advances to version 1 with
the evaluator landed.
Keep credentials and network access behind authenticated, audited brokers while binding launch adapters, immutable closures, recovery identities, receipts, and cleanup to the approved plan. Add Apple Container and Linux release lanes without weakening the outer sandbox.
Keep agents in a route-less network namespace and pass only private-loopback connections over an inherited Unix descriptor channel. The host relay targets the per-run authenticated proxy, preserving exact allowlists and audit evidence without exposing host networking.