Skip to content

V1.6 review hardening + Release v1.6 #192

@duncanita

Description

@duncanita

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_attemptUnknownAttemptError (both under DAG::Error)
  • Event::TYPES gains :workflow_retrying; TraceRecord::STATUSES gains :retrying

Release checklist

  • Merge PR Project-review hardening: port seams, dispatcher report, serialization round-trip, perf, CI gates #191 (feature work)
  • Release-prep PR:
    • Bump DAG::VERSION to 1.6.0
    • CHANGELOG: rename ## Unreleased to ## 1.6.0 — <date> (content already written)
    • ROADMAP: add rows V1.6 review hardening | Done and Release v1.6 | Done
    • Add spec/r0/v1_6_release_gate_test.rb pinning: Ports::EffectLedger file + complete_effect_* defaults, DispatchAbortedError with #report, def tick(limit:, only_workflow_id: nil), :workflow_retrying in Event::TYPES, DAG::Result.from_h, CHANGELOG/ROADMAP strings (mirror v1_5 gate structure)
    • COVERAGE=1 bundle exec rake green (the new CI gate)
  • Tag v1.6.0 on the merge commit
  • GitHub release v1.6.0 — project-review hardening with the CHANGELOG section as body
  • Mark both roadmap rows Done and move this issue to Done on Project soak rig for parallelism strategies + EINTR fix #2

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions