Implement protocol-neutral Common Lisp core and deterministic replay #4

Open
opened 2026-08-03 07:47:14 +00:00 by lost-rob0t · 1 comment
lost-rob0t commented 2026-08-03 07:47:14 +00:00 (Migrated from github.com)

Depends on

Goal

Build the Common Lisp core so protocol behavior can be tested deterministically before native or live integration.

Scope

  • typed public conditions
  • snowflake parsing, ordering, and timestamp operations
  • JSON decoding that preserves absent/null/value state
  • immutable dispatch-event representation
  • raw octet and unknown-field preservation
  • transport protocol and fake transport
  • virtual clock
  • append-only replay transcript reader
  • real-time, accelerated, and deterministic virtual-time modes
  • stable event identifiers and raw digests

Constraints

  • no Discord account or network dependency
  • no mutable cache object is exposed through the event sink
  • no reverse dependency on star-discord-watch
  • raw transport handles never enter events, checkpoints, logs, or fixtures

Exit gate

  • deterministic replay produces identical identifiers and digests across runs
  • absent, null, and present values remain distinguishable
  • unknown fields survive parse and replay
  • cancellation, fragmented frames, stale timers, and out-of-order terminal events have fixture coverage
  • production ASDF systems load without Python
## Depends on - #1 ## Goal Build the Common Lisp core so protocol behavior can be tested deterministically before native or live integration. ## Scope - typed public conditions - snowflake parsing, ordering, and timestamp operations - JSON decoding that preserves absent/null/value state - immutable dispatch-event representation - raw octet and unknown-field preservation - transport protocol and fake transport - virtual clock - append-only replay transcript reader - real-time, accelerated, and deterministic virtual-time modes - stable event identifiers and raw digests ## Constraints - no Discord account or network dependency - no mutable cache object is exposed through the event sink - no reverse dependency on `star-discord-watch` - raw transport handles never enter events, checkpoints, logs, or fixtures ## Exit gate - deterministic replay produces identical identifiers and digests across runs - absent, null, and present values remain distinguishable - unknown fields survive parse and replay - cancellation, fragmented frames, stale timers, and out-of-order terminal events have fixture coverage - production ASDF systems load without Python
lost-rob0t commented 2026-08-03 09:23:09 +00:00 (Migrated from github.com)

Claiming the first actual client slice on codex/issue-4-client-core-a1.

This pass will implement a usable Common Lisp client surface, not more manifest work:

  • actor-style client state and mailbox;
  • explicit transport protocol;
  • deterministic replay transport;
  • start/step/poll/stop lifecycle;
  • immutable dispatch events with raw payload retention;
  • regression tests proving ordered delivery and clean shutdown.

The slice stays fixture-only so CI remains deterministic, but the public API is the client API that the later native Gateway transport will plug into.

Claiming the first actual client slice on `codex/issue-4-client-core-a1`. This pass will implement a usable Common Lisp client surface, not more manifest work: - actor-style client state and mailbox; - explicit transport protocol; - deterministic replay transport; - start/step/poll/stop lifecycle; - immutable dispatch events with raw payload retention; - regression tests proving ordered delivery and clean shutdown. The slice stays fixture-only so CI remains deterministic, but the public API is the client API that the later native Gateway transport will plug into.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/cl-discord-self#4
No description provided.