Skip to content

exec: v1.4 notify only where kept jobs survive idling; crash-duplicate fix split out - #398

Merged
jaredLunde merged 1 commit into
mainfrom
jared/exec-v14-notify-idle-ledger
Oct 18, 2026
Merged

jaredLunde merged 1 commit into
mainfrom
jared/exec-v14-notify-idle-ledger

Conversation

@jaredLunde

Copy link
Copy Markdown
Contributor

Two changes to the v1.4 "Sandbox job notify" spec. As before, the spec, ARCHITECTURE.md, the fixtures and the coverage test change together. Nothing is implemented yet.

Notify only where kept jobs survive idling. Releasing a job removes the heartbeat that kept its sandbox busy, so a sandbox that stops or kills idle processes (a vendor's auto-stop) would lose the job because of v1.4.

  • An endpoint MUST NOT advertise notify unless its deployment says a kept job survives its sandbox going idle. This is an endpoint-side setting, off unless the operator turns it on, and on for the platform's own native endpoint.
  • Native endpoints advertise as before: {"jobs": "v1.3", "notify": "v1.4"}.
  • An endpoint without native jobs advertises notify for the baseline by answering the job probe with {"notify": "v1.4"} and no jobs. A client that predates v1.4 reads that as no native jobs, as it does today.
  • The baseline offers notify only then, and only if it also finds curl and the endpoint honours stdin_base64.
  • Coverage: new probe vectors, including a baseline_notify expectation, and a conformance check, a kept job survives idling.

The job ledger leaves v1.4. v1.4's own guarantee is now that notify adds no window in which an end is reported twice or not at all, beyond those today's code has (N34).

  • The crash window in which a sandbox job's end is reported twice exists today for held streams too: a replica that dies after the turn is persisted but before collect_garbage removes the record.
  • ARCHITECTURE.md now describes that window as a known gap, together with its fix as a separate future change: ledger entries in the transcript's fenced segment batch.
  • Requirements go from 50 to 47, and the section gets shorter.

exec_notify_vectors passes 10/10. The previous test fails on the new probe fixture (2 of 10).

🤖 Generated with Claude Code

https://claude.ai/code/session_01JimHGjsfk2Ktm5GxyZJKKk

…icate fix is its own change

Advertising notify is now an endpoint's promise that a kept job survives
its sandbox going idle, decided by the endpoint's deployment (off unless
turned on). An endpoint without native jobs advertises notify for the
baseline by answering the job probe with {"notify": "v1.4"} and no "jobs";
the baseline offers notify only then.

The job ledger leaves v1.4: notify promises no duplicate or loss window
beyond today's. The crash window in which a sandbox job's end can be
reported twice exists today for held streams too, and ARCHITECTURE.md now
describes it, and its fix, as a separate known gap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JimHGjsfk2Ktm5GxyZJKKk
@jaredLunde
jaredLunde enabled auto-merge October 18, 2026 23:01
@jaredLunde
jaredLunde added this pull request to the merge queue Oct 18, 2026
Merged via the queue into main with commit eb5d65b Oct 18, 2026
13 checks passed
@jaredLunde
jaredLunde deleted the jared/exec-v14-notify-idle-ledger branch October 18, 2026 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant