| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
Review of the live-hold change found the chained two-phase path could not place a hold. §8.1 counts a hold against every grant it names, a chained hold's chain_ids included, but Runtime::hold takes one grant, and authorize_chained / charge_chained placed none, so a point deciding chained calls concurrently still decided each against the whole remainder. jcp-runtime: Runtime::hold_chained authorizes as authorize_chained does and places one hold naming every link in the same step. Its held_uj is the most any link has left, since charge_chained saturates each link at its own ceiling, and it counts against every link, so a sibling delegate's call through a held root is refused as the holder's own next call is. Runtime::settle_chained replaces it with each link's own debit. authorize_chained, authorize_chained_for and charge_chained now say they place and settle no hold. hold_bound says that sealing its figure beside an allow from authorize or authorize_flow, rather than through hold, is not counted live and breaks §8.1 wherever another decision can come before the charge. jcp-receipt: ReceiptLog::append_hold_chained and append_settle_chained seal a chained hold with chain_ids and held_uj, and its settle naming the hold. The replay already read held_uj over chain_ids. SPEC: §8.1 no longer says every other call under a hold is refused. Check 9 refuses every other two-phase call and every one-shot call that would debit anything, where no earlier check refuses it first; a one-shot call costing 0 is still allowed. It states the chained figure and that a sibling through a held ancestor is refused. §4.5's Statement.spent_uj is cumulative µJ debited, never a hold, and "tunable" now covers only the settled part of the exposure: work in flight under a hold at a point is bounded by what that point's own decision left, which no cadence shortens. The C14 bullet says a hold counts from the step that allows its call. The C16 bullet covers a chained hold. Tests: a runtime test holds through a chain and refuses a sibling delegate, the delegate's next call and the root's holder, then settles to each link's own debit. A receipt test seals a chained hold and its settle, and checks the replay restores held_uj on every link, and then each link's debit. C16 checks the same live and on replay. Changelog: none Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| jcp-a2a | ||
| jcp-action-receipt | ||
| jcp-bridge | ||
| jcp-channel | ||
| jcp-cite | ||
| jcp-cli | ||
| jcp-conformance | ||
| jcp-efficiency | ||
| jcp-energy | ||
| jcp-flow | ||
| jcp-gateway | ||
| jcp-grant | ||
| jcp-intercept | ||
| jcp-orchestrate | ||
| jcp-policy | ||
| jcp-prompt | ||
| jcp-receipt | ||
| jcp-runtime | ||
| jcp-schema | ||
| jcp-threshold | ||
| jcp-trace | ||
| jcp-wire | ||
| jcp-x402 | ||