Goal
Lease expiration + budget + progress + result_chunk + middleware gems + ship — the v1.1 finish line.
Scope
Arcp::Lease::LeaseConstraints (ISO-8601 UTC Z only; Time#utc? guard)
Arcp::Runtime::LeaseManager#evaluate checks expires_at via Process.clock_gettime(Process::CLOCK_MONOTONIC) on every authority op
Arcp::Errors::LeaseExpired (retryable: false)
Arcp::Lease::CostBudget capability parser (CCY:amount grammar) + per-currency counters using BigDecimal
- Decrement on
metric { name: cost.*, unit: <ccy>, value: }; try_decrement straight-line (no Async suspension)
Arcp::Errors::BudgetExhausted (retryable: false)
progress body — Arcp::Job::Event::Progress
result_chunk body — Arcp::Job::Event::ResultChunk
JobContext#stream_result returns an Async::Queue whose each yields ResultChunk bodies
- Reject inline + chunked mix per §8.4
- Trace attrs
arcp.lease.expires_at, arcp.budget.remaining
- Samples:
samples/lease_expires_at/, samples/cost_budget/, samples/progress/, samples/result_chunk/
- Side gems tagged 1.1.0:
arcp-rack, arcp-falcon, arcp-rails, arcp-otel
docs/concepts/leases.md, docs/guides/{budgets,result-streaming}.md
CHANGELOG.md v1.1 entry; MIGRATION-v1.1.md final
- Mutation testing (
mutant) nightly job: MSI ≥ 95% on lib/arcp/envelope.rb, lib/arcp/session/capability_set.rb, lib/arcp/lease/cost_budget.rb
- Tag
arcp 1.1.0; publish to RubyGems
Spec §
§8.4, §9.5, §9.6, §11, §12
Gate
bundle exec rake conformance reports every §4–§12 row passing for v1.0 + v1.1. README + MIGRATION-v1.1.md ship. All 18 samples runnable via ruby samples/<name>/run.rb exiting 0.
Goal
Lease expiration + budget + progress + result_chunk + middleware gems + ship — the v1.1 finish line.
Scope
Arcp::Lease::LeaseConstraints(ISO-8601 UTCZonly;Time#utc?guard)Arcp::Runtime::LeaseManager#evaluatechecksexpires_atviaProcess.clock_gettime(Process::CLOCK_MONOTONIC)on every authority opArcp::Errors::LeaseExpired(retryable: false)Arcp::Lease::CostBudgetcapability parser (CCY:amountgrammar) + per-currency counters usingBigDecimalmetric { name: cost.*, unit: <ccy>, value: };try_decrementstraight-line (noAsyncsuspension)Arcp::Errors::BudgetExhausted(retryable: false)progressbody —Arcp::Job::Event::Progressresult_chunkbody —Arcp::Job::Event::ResultChunkJobContext#stream_resultreturns anAsync::QueuewhoseeachyieldsResultChunkbodiesarcp.lease.expires_at,arcp.budget.remainingsamples/lease_expires_at/,samples/cost_budget/,samples/progress/,samples/result_chunk/arcp-rack,arcp-falcon,arcp-rails,arcp-oteldocs/concepts/leases.md,docs/guides/{budgets,result-streaming}.mdCHANGELOG.mdv1.1 entry;MIGRATION-v1.1.mdfinalmutant) nightly job: MSI ≥ 95% onlib/arcp/envelope.rb,lib/arcp/session/capability_set.rb,lib/arcp/lease/cost_budget.rbarcp1.1.0; publish to RubyGemsSpec §
§8.4, §9.5, §9.6, §11, §12
Gate
bundle exec rake conformancereports every §4–§12 row passing for v1.0 + v1.1. README +MIGRATION-v1.1.mdship. All 18 samples runnable viaruby samples/<name>/run.rbexiting 0.