You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implements the bug fixes and quality work the open issues called for:
- #26 resume-token validation and event replay: new ResumeRegistry tracks
issued tokens until the window elapses; SessionActor validates the
token + principal on reconnect, restores the original session id, and
replays events past last_event_seq. Terminal envelopes (job.result,
job.error) are now included in replay so a resuming client sees the
final state.
- #27 subscribe_job default attach: an explicit subscribe always sends
job.subscribe (unless the client is the submitter); the subscribe
feature is required for every observer subscribe.
- #28 subscription history replay: EventLog now indexes envelopes by job
id; SessionActor.handle_subscribe replays from the job index so a
late-joining observer sees prior events regardless of which session
produced them.
- #29 stream_result writer totals: ChunkWriter#close persists totals back
to the context, and finish reads from those totals so the non-block
writer path no longer raises TypeError.
- #30 budget currency denial: try_spend! raises BudgetExhausted when a
currency is absent from a budgeted lease while still allowing all
spending on unbudgeted leases.
- #31 lease_constraints.max_budget: LeaseConstraints now parses
max_budget as a CostBudget and enforces it before lease construction;
over-budget submits raise LeaseSubsetViolation.
- #32 client waiter safety: pending waiters are registered before the
outbound envelope is sent so a fast reply cannot beat them. Reply
matching is keyed strictly on reply_to. get_result handles a nil
dequeue with ProtocolViolation instead of NoMethodError.
- #33 session.bye on close: client.close sends session.bye before
flipping @closed, so the peer receives the close reason exactly once.
- #36 RBS + Steep: signatures for the resume registry, event log,
subscription manager, lease constraints, and feature constants were
added/updated. Steep is wired into CI on the small file set whose
sigs are accurate today; remaining files are flagged as ongoing work.
- #37 branch coverage: added unit + integration specs covering transport
EOF paths, body decoders, lease branches, client waiter races, resume
registry expiry, and pagination stability. Branch coverage rose from
56% to 80%+ and a SimpleCov minimum (line 90, branch 80) now guards
regressions.
- #38 list_jobs pagination: jobs are walked from an insertion-ordered
index keyed by a monotonic seq cursor instead of re-sorting the entire
table per page; cursors stay stable when new jobs are submitted
between page reads.
Also fixes a pre-existing race in JobManager#submit where the post-task
`status: 'running'` assignment could clobber an agent's terminal status.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments