The #1 GitHub Actions complaint across the two biggest HN threads ("The Pain That Is GitHub Actions" 704p/562c, "I hate GitHub Actions with passion" 490p/341c) is "I cannot run/test/debug it locally." Theme frequency across ~900 flattened comments: local 144, debug 66, breakpoint 5 — dwarfing syntax gripes. act exists but is universally described as a third-party hack.
Actio is uniquely positioned: it already emits the workflow + a .yml.map source-map. actio run would compile, invoke act (or another local runner) on the generated YAML, and map any runtime error/line back to the .actio.yml source — fusing local-dev + debug + source-maps into one command nobody else can offer.
Proposed behavior
actio run [workflow] [-j job] builds to a temp dir, shells out to act with the generated .yml, streams output.
- On a runner error referencing a generated line, resolve through
.yml.map and re-print the originating .actio.yml location (same engine as actio-annotate-action, but local + interactive).
--dry-run prints the act invocation; --keep retains generated output.
- Detect missing
act and print install guidance (do not bundle).
Scope note
Borderline: act is the runtime, Actio only orchestrates + maps. But it is authoring-side tooling over a compile-time artifact (the source-map), not runtime DAG synthesis — stays on the right side of #101. Highest-demand item in the entire research corpus.
Open questions
act vs a thin built-in Docker runner (start by wrapping act).
- Map errors in user
run: bodies (pass through) vs macro-generated lines (map to the macro).
The #1 GitHub Actions complaint across the two biggest HN threads ("The Pain That Is GitHub Actions" 704p/562c, "I hate GitHub Actions with passion" 490p/341c) is "I cannot run/test/debug it locally." Theme frequency across ~900 flattened comments: local 144, debug 66, breakpoint 5 — dwarfing syntax gripes.
actexists but is universally described as a third-party hack.Actio is uniquely positioned: it already emits the workflow + a
.yml.mapsource-map.actio runwould compile, invokeact(or another local runner) on the generated YAML, and map any runtime error/line back to the.actio.ymlsource — fusing local-dev + debug + source-maps into one command nobody else can offer.Proposed behavior
actio run [workflow] [-j job]builds to a temp dir, shells out toactwith the generated.yml, streams output..yml.mapand re-print the originating.actio.ymllocation (same engine as actio-annotate-action, but local + interactive).--dry-runprints theactinvocation;--keepretains generated output.actand print install guidance (do not bundle).Scope note
Borderline:
actis the runtime, Actio only orchestrates + maps. But it is authoring-side tooling over a compile-time artifact (the source-map), not runtime DAG synthesis — stays on the right side of #101. Highest-demand item in the entire research corpus.Open questions
actvs a thin built-in Docker runner (start by wrapping act).run:bodies (pass through) vs macro-generated lines (map to the macro).