Repository navigation
agent harness v0.5.0
v0.5.0
The fifth release of @judgment-pack/harness, as an attested package asset and a Go module tagged by the release workflow. It holds one decision the Desk's swap (judgment-pack-desk#537) needs before it binds approvals: an act tool's approval no longer waits inside the tool call; the run pauses and continues on the person's decision. Each change was reviewed in a clean-room round recorded on its pull request, and the whole release diff in one clean-room review recorded on #83 and re-read at the release head. There is no registry package.
What v0.5.0 holds
- ADR-0008, the approval pause (#74, pull request #79; amends ADR-0006 §2): the host's approval policy answers
allow,refuseoraskwhere each engine hands anactcall to the host; onaskthe adapter emitsapproval_requestedwith the call, the checkpoint carries it underapprovalwith statuspaused, the checkpoint is saved durably and the run ends, holding no promise, invocation or provider account open; the host continues the restored checkpoint with the decision (approvalDecision: the call id, approved or refused, the person's note); approved runs the call once, withapprovedacknowledged before the execution andexecutedwith the result after it, and a restored approval whose result was never written is answered as an unknown outcome, never run again; refused carries the refused result and the note, framed as data; the continuation is the shape ADR-0007 gives a delegation (one line, one data block, the context index) on every engine and both Go adapters, counted as a model request or an invocation with nothing invented; one pending approval per checkpoint, a second act refused with a guardrail; children, Plan mode, the critic and the reformat run never reach the pause; the in-call reader is gone; certification scenario 8 on every engine and both Go adapters, with restarts played from the checkpoint's JSON text at the pause and after the executed write (a restored approved call is answered unknown in unit tests in both languages); five mutants caught in both languages. - The pre-release batch (#81; closes #71 and #80):
modelRequestsis optional on the delegation figures (provenance.json) and required only where the checkpoint's unit ismodel-requests, so an agent-capability figure carries no invented 0 and a sum over both capabilities counts model requests only (the Go types hold it as a pointer; a v0.4.0 checkpoint still reads); a refused approval continuation emits oneguardrailwith reasonapproval refusedafter the written refusal, in both languages, carried by the vector;approvalPolicyand the guardrail reasons carried by vectors, with the members probe taking each enum value out and requiring a vector to fail; scenario 8 asserts the stable prefix across the pause on the vercel, deepagents and Go model legs (the per-run framing marker normalised; its cost is #82); ADR-0007 §3 and ADR-0008 §3/§5 say so. - The release rows (#84; closes #83): on the Go
einoadapter an act call that needs approval gets its own call id even on a non-interactive run, and Go's decision keeps the call's arguments and refuses a call whose arguments differ, so a decision can never be taken by a later call of the same tool (driven end to end on eino, with the same order in both languages and a host whose authorisation fails first); the reversed-order case on deepagents too; the approval vectorspause.json,wrong-call-id.json,policy.jsonand the newstale-decision.jsoncompared by scenario 8 in both languages; the gate's own refusals at execute time carry the reasonapproval stale, andapproval refusedmeans only the policy's or the person's refusal; ADR-0008 §4 and the wire contract record that the TypeScript coordinator counts the continuation's invocation within the continued response only and that Go requiresInput.Checkpointon an approved continuation; nine mutants caught across both languages.## What the Desk must do to adopt it
judgment-pack-desk#537 (the swap's binding) and its approval seam, held until this release: the event set gains approval_requested; the task view shows the pending call (name, source, arguments, a note field) with approve and refuse; the continue call carries the decision as the budget grant does; the checkpoint reader reads approval; the approval reader of judgment-pack-desk#529 becomes the policy (allow | refuse | ask: Auto within limits answers allow for the tools the person has set, ask otherwise). Then judgment-pack-desk#548 (tool sources) and #546 (the prompt parts) as filed.
What it does not hold
#82 (the framing marker carried across a pause so the tools prefix is byte-identical; a cache cost, not a boundary); the Desk's adoption (judgment-pack-desk#537's approval seam, #548, #546).
Installing and verifying
Install the tarball from this release and pin it by the digest in checksums.txt; the Go module by go get github.com/Judgment-Pack/judgment-pack-agent/go@v0.5.0 with go.sum committed. Verify the attestation as docs/releasing.md describes before pinning.