Skip to content

M6 — Lease expiration + budget + result_chunk + middleware gems + ship #15

@nficano

Description

@nficano

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions