Tracking issue for V1.6 — project-review hardening and Release v1.6.
Scope
The feature work is PR #191 (project-review hardening): Ports::EffectLedger split with safe port defaults, removal of method_overridden? reflection, DispatchAbortedError partial reports, tick(only_workflow_id:), durable :workflow_retrying event, full-fidelity to_h/from_h round-trip with Result.from_h, DuplicateWorkflowError/UnknownAttemptError, AttemptOrder/EventPublishing/Snapshot helpers, context-merge and storage-index performance work, cop tightening (Fiber, Kernel.system/spawn/fork, stdlib allowlist), consolidated CI enforcing the SimpleCov gate (100% line / 90% branch), and CONTRACT/CLAUDE/CHANGELOG alignment.
Breaking changes (alpha policy, no compatibility shims):
Ports::Storage.method_overridden? removed; effect methods live in Ports::EffectLedger
Dispatcher#tick raises DAG::Effects::DispatchAbortedError (with #report / #cause) instead of propagating UnknownHandlerError/StandardError directly; dispatcher duck-storages must expose complete_effect_* (or include Ports::EffectLedger)
Success#to_h / Failure#to_h shapes are now full-fidelity; Waiting#to_h added
- Dispatcher error payload keys:
error_class: / returned_class: replace class:
create_workflow duplicate → DuplicateWorkflowError; unknown attempt in commit_attempt → UnknownAttemptError (both under DAG::Error)
Event::TYPES gains :workflow_retrying; TraceRecord::STATUSES gains :retrying
Release checklist
Out of scope (deferred to their own design passes)
- Handler lease-renewal context (
#call(record, ctx) shape) — V1.2 deferral still open
- Workflow-level owner/lease claim for multi-host resume (documented invariant for now)
- Kernel invariants extraction from
Memory::StorageState into shared validators
- Extending Mutant subjects to
Runner / StorageState / Dispatcher
Tracking issue for V1.6 — project-review hardening and Release v1.6.
Scope
The feature work is PR #191 (project-review hardening):
Ports::EffectLedgersplit with safe port defaults, removal ofmethod_overridden?reflection,DispatchAbortedErrorpartial reports,tick(only_workflow_id:), durable:workflow_retryingevent, full-fidelityto_h/from_hround-trip withResult.from_h,DuplicateWorkflowError/UnknownAttemptError, AttemptOrder/EventPublishing/Snapshot helpers, context-merge and storage-index performance work, cop tightening (Fiber, Kernel.system/spawn/fork, stdlib allowlist), consolidated CI enforcing the SimpleCov gate (100% line / 90% branch), and CONTRACT/CLAUDE/CHANGELOG alignment.Breaking changes (alpha policy, no compatibility shims):
Ports::Storage.method_overridden?removed; effect methods live inPorts::EffectLedgerDispatcher#tickraisesDAG::Effects::DispatchAbortedError(with#report/#cause) instead of propagatingUnknownHandlerError/StandardError directly; dispatcher duck-storages must exposecomplete_effect_*(or includePorts::EffectLedger)Success#to_h/Failure#to_hshapes are now full-fidelity;Waiting#to_haddederror_class:/returned_class:replaceclass:create_workflowduplicate →DuplicateWorkflowError; unknown attempt incommit_attempt→UnknownAttemptError(both underDAG::Error)Event::TYPESgains:workflow_retrying;TraceRecord::STATUSESgains:retryingRelease checklist
DAG::VERSIONto1.6.0## Unreleasedto## 1.6.0 — <date>(content already written)V1.6 review hardening | DoneandRelease v1.6 | Donespec/r0/v1_6_release_gate_test.rbpinning:Ports::EffectLedgerfile +complete_effect_*defaults,DispatchAbortedErrorwith#report,def tick(limit:, only_workflow_id: nil),:workflow_retryinginEvent::TYPES,DAG::Result.from_h, CHANGELOG/ROADMAP strings (mirror v1_5 gate structure)COVERAGE=1 bundle exec rakegreen (the new CI gate)v1.6.0on the merge commitv1.6.0 — project-review hardeningwith the CHANGELOG section as bodyOut of scope (deferred to their own design passes)
#call(record, ctx)shape) — V1.2 deferral still openMemory::StorageStateinto shared validatorsRunner/StorageState/Dispatcher