Extract wire lifecycle contract into star-actor-protocol #29

Merged
lost-rob0t merged 7 commits from extract/wire-lifecycle-contract into main 2026-08-15 12:35:56 +00:00
lost-rob0t commented 2026-08-15 12:33:24 +00:00 (Migrated from github.com)

Scope

Extract the existing portable command/reply/ack/error/cancel lifecycle contract from prototype/ into star-actor-protocol under the one-authority rule.

What changes

  • add final-owned lifecycle envelope construction, validation, identity helpers, control payload semantics, delivery classification, terminal classification, cancellation identity, and typed invalid-wire-envelope-error to star-actor-protocol
  • preserve the existing v1 plist/wire schema and current dispatcher semantics, including reply followed by terminal :completed ACK
  • reduce prototype/message-lifecycle-prototype.lisp to compatibility forwarding plus prototype-only manifest/canonical-JSON composition
  • wire deterministic dispatcher construction/idempotency/cancel identity calls to star-actor-protocol
  • move meaningful lifecycle tests into star-actor-protocol/tests/

Deliberately not extracted

  • deterministic dispatcher queue, scheduling, retry timing, deferred completion, terminal replay storage, duplicate policy, and cancel/completion race arbitration
  • actor mailbox behavior
  • runtime directory/remoting
  • journal/replay persistence
  • canonical JSON implementation

Validation

GitHub Actions is green for the PR head:

  • asdf:test-system :star-actor-protocol ✅
  • asdf:test-system :star-mailbox ✅
  • asdf:test-system :star-sento-compat ✅
  • asdf:test-system :starlang-runtime ✅
  • asdf:test-system :starlang-prototype ✅ — 34 standalone prototype test scripts passed
  • generated interchange artifact validation ✅
  • frozen canonical fixture verification ✅
  • nix flake check --print-build-logs ✅

Extraction metrics

  • aggregate prototype/**/*.lisp: 19,836 → 19,692 LOC (-144)
  • prototype/message-lifecycle-prototype.lisp: 375 → 216 LOC (-159)
  • final star-actor-protocol/src/message-lifecycle.lisp: 422 LOC
  • final protocol test file: +380 / -30 lines in this slice

The local execution environment has no SBCL and cannot resolve GitHub from git, so GitHub Actions was used as the execution gate.

## Scope Extract the existing portable command/reply/ack/error/cancel lifecycle contract from `prototype/` into `star-actor-protocol` under the one-authority rule. ## What changes - add final-owned lifecycle envelope construction, validation, identity helpers, control payload semantics, delivery classification, terminal classification, cancellation identity, and typed `invalid-wire-envelope-error` to `star-actor-protocol` - preserve the existing v1 plist/wire schema and current dispatcher semantics, including reply followed by terminal `:completed` ACK - reduce `prototype/message-lifecycle-prototype.lisp` to compatibility forwarding plus prototype-only manifest/canonical-JSON composition - wire deterministic dispatcher construction/idempotency/cancel identity calls to `star-actor-protocol` - move meaningful lifecycle tests into `star-actor-protocol/tests/` ## Deliberately not extracted - deterministic dispatcher queue, scheduling, retry timing, deferred completion, terminal replay storage, duplicate policy, and cancel/completion race arbitration - actor mailbox behavior - runtime directory/remoting - journal/replay persistence - canonical JSON implementation ## Validation GitHub Actions is green for the PR head: - `asdf:test-system :star-actor-protocol` ✅ - `asdf:test-system :star-mailbox` ✅ - `asdf:test-system :star-sento-compat` ✅ - `asdf:test-system :starlang-runtime` ✅ - `asdf:test-system :starlang-prototype` ✅ — 34 standalone prototype test scripts passed - generated interchange artifact validation ✅ - frozen canonical fixture verification ✅ - `nix flake check --print-build-logs` ✅ ## Extraction metrics - aggregate `prototype/**/*.lisp`: **19,836 → 19,692 LOC (-144)** - `prototype/message-lifecycle-prototype.lisp`: **375 → 216 LOC (-159)** - final `star-actor-protocol/src/message-lifecycle.lisp`: **422 LOC** - final protocol test file: **+380 / -30 lines** in this slice The local execution environment has no SBCL and cannot resolve GitHub from `git`, so GitHub Actions was used as the execution gate.
Sign in to join this conversation.
No description provided.