Concurrency 3

Closed
BN
3mo ago
+15012-227

Summary by cubic

Adds full support for GitHub Actions concurrency: (workflow and job level) with queuing, cancellation, and pending states. Also introduces strict conformance tooling and property-test profiles in CI.

  • New Features

    • Parse and enforce concurrency groups with single|max queues and cancel-in-progress (workflow, job, and reusable JobSet).
    • Server control plane implements pending queues, promotion, cancellation, and empty-group runtime failure; supports matrix and multi-job runs.
    • Runner handles JobCancellation with graceful cancel + hard kill deadline; cancelled steps log the standard error line and conclude as cancelled.
    • Protocol/client: add ExecutionStatus::Pending, workflow inputs in WorkflowSubmission, and job-level concurrency fields; aksh-runner-client supports --input.
    • CI: add nightly “intensive” property-test schedule and a profile input for fast vs intensive; PRs use the fast profile.
    • Conformance tooling: strict log/step comparator, matrix harness, and capture scripts with updated docs and artifacts.
  • Bug Fixes

    • Use the official message type string "JobCancellation" on the wire and match by jobId; align cancellation timing with the official runner.
    • Normalize number stringification so whole numbers render without a “.0” suffix in expressions/matrix contexts.
    • Reject empty concurrency groups at evaluation/runtime to match GitHub behavior.
    • Add indexmap to support stable map ordering in parser/server.