@@ -92,6 +92,15 @@ process primitives outside the shared host-command port. R11 applies these rules
9292dynamic, and re-export edges; package-owned tests may import their own public façade. Contracts may
9393depend on kernel vocabulary but never on concrete platform packages or daemon implementation types.
9494
95+ Durable-capture mechanics shared by more than one implementation live in the private
96+ ` @agent-device/capture-kit ` workspace package, with the enforced direction
97+ ` kernel < contracts < capture-kit < platform/provider/daemon ` . Contracts retains pure vocabulary and
98+ plan models; process supervision, live-handle implementations, recovery helpers, runtime codecs, and
99+ capture parsers do not live there. ` capture-kit ` is a domain package for durable capture, not a generic
100+ platform-common package, and it preserves the package façades' implementation-lazy loading boundary.
101+ Its introduction carries the normal workspace-package compliance surface: ` check:affected `
102+ selection, R11/R13 package enumeration, and the composite typecheck project list.
103+
95104Canonical family, ` AppleOS ` , public-leaf, and selector identity remain declared in
96105` @agent-device/kernel/device ` . Platform-module metadata references one canonical family; during
97106coexistence the legacy plugin registry derives its family identity from the same declaration rather
@@ -330,11 +339,14 @@ but reattachment never scans telemetry to rebuild state.
330339
331340Every authoritative home exposes a deterministic facet-owned lookup or enumeration path after
332341process loss. Its neutral record carries session/device identity, the exact runtime-owner reference,
333- descriptor and metadata, an ownership/fence token, and a lifecycle state sufficient to distinguish
334- starting, active, completing, completed, and cleanup-pending recovery. A new handle is not exposed
335- until the persisted ownership fence is acquired. Every finish/cleanup attempt holds that ownership
336- guard through destructive work and the persisted transition, or delegates to an operation that
337- atomically enforces the token, so a prior owner cannot later terminate a transferred resource.
342+ descriptor and metadata, an ownership/fence token, and one of two persisted lifecycle states:
343+ ` open ` or ` completed ` . In-progress distinctions such as starting, active, completing, and
344+ cleanup-pending are phase metadata on the open record, not additional lifecycle states. The fence and
345+ the descriptor remain authoritative across every open phase; cleanup uncertainty therefore cannot be
346+ encoded as a terminal lifecycle. A new handle is not exposed until the persisted ownership fence is
347+ acquired. Every finish/cleanup attempt holds that ownership guard through destructive work and the
348+ persisted transition, or delegates to an operation that atomically enforces the token, so a prior
349+ owner cannot later terminate a transferred resource.
338350
339351Persisting a descriptor does not make external-resource start and descriptor write atomic. A
340352platform whose native tool cannot close that crash window retains a platform-owned orphan marker or
0 commit comments