Skip to content

fix(wfctl): add missing cmd-build pipeline to wfctl.yaml#416

Closed
intel352 wants to merge 1 commit into
mainfrom
fix/wfctl-build-missing-pipeline
Closed

fix(wfctl): add missing cmd-build pipeline to wfctl.yaml#416
intel352 wants to merge 1 commit into
mainfrom
fix/wfctl-build-missing-pipeline

Conversation

@intel352

Copy link
Copy Markdown
Contributor

Summary

  • wfctl build (and all subcommands: wfctl build image, wfctl build go, etc.) fail with error: cli trigger: no pipeline registered for command "build" because the cmd-build pipeline was missing from wfctl.yaml
  • The build command was correctly registered in main.go's commands map and listed in the wfctl.yaml command descriptions, but the corresponding cmd-build: workflow pipeline was absent
  • Added cmd-build: following the identical pattern used by all other cmd-* pipelines

Root Cause

Every wfctl command requires two registrations:

  1. Entry in commands map in main.go → present for build
  2. cmd-<name>: pipeline in wfctl.yamlmissing for build

The ci and dev commands had their pipelines; build did not.

Test Plan

  • wfctl build --help no longer errors with "no pipeline registered"
  • WFCTL_BUILD_DRY_RUN=1 wfctl build image --config app.yaml prints the planned docker build command
  • wfctl build --dry-run --config app.yaml runs the full build orchestration in dry-run mode

Discovered while migrating GoCodeAlone/buymywishlist to v0.14.1 wfctl build + wfctl ci init primitives.

🤖 Generated with Claude Code

wfctl build and all its subcommands (wfctl build image, wfctl build go,
etc.) were routing through the CLI workflow engine but the corresponding
cmd-build pipeline was absent from wfctl.yaml, causing:

  error: cli trigger: no pipeline registered for command "build"

The fix adds the cmd-build pipeline following the same pattern as all
other cmd-* pipelines (trigger: cli + step.cli_invoke delegate).

Discovered while migrating buymywishlist to v0.14.1 wfctl build + ci init
primitives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 19, 2026 09:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the missing cmd-build CLI pipeline to wfctl.yaml so the already-registered wfctl build command is actually routable by the CLI trigger and no longer fails with “no pipeline registered”.

Changes:

  • Added pipelines.cmd-build wired to trigger.type: cli with command: build
  • Delegates execution to the existing Go implementation via step.cli_invoke (consistent with other cmd-* pipelines)

@intel352

Copy link
Copy Markdown
Contributor Author

Duplicate of #415 — closing this one; #415 is the canonical fix and was filed first.

@intel352 intel352 closed this Apr 19, 2026
@intel352 intel352 deleted the fix/wfctl-build-missing-pipeline branch April 19, 2026 09:12
@github-actions

Copy link
Copy Markdown

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:245: parsing iteration count: invalid syntax
baseline-bench.txt:322482: parsing iteration count: invalid syntax
baseline-bench.txt:639367: parsing iteration count: invalid syntax
baseline-bench.txt:934004: parsing iteration count: invalid syntax
baseline-bench.txt:1254549: parsing iteration count: invalid syntax
baseline-bench.txt:1566886: parsing iteration count: invalid syntax
benchmark-results.txt:245: parsing iteration count: invalid syntax
benchmark-results.txt:325788: parsing iteration count: invalid syntax
benchmark-results.txt:637660: parsing iteration count: invalid syntax
benchmark-results.txt:961313: parsing iteration count: invalid syntax
benchmark-results.txt:1292796: parsing iteration count: invalid syntax
benchmark-results.txt:1606474: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 7763 64-Core Processor                
                            │ baseline-bench.txt │        benchmark-results.txt        │
                            │       sec/op       │    sec/op      vs base              │
InterpreterCreation-4              3.102m ± 219%   3.147m ± 234%       ~ (p=0.180 n=6)
ComponentLoad-4                    3.607m ±   9%   3.614m ±   6%       ~ (p=0.589 n=6)
ComponentExecute-4                 1.932µ ±   1%   1.961µ ±   1%  +1.55% (p=0.002 n=6)
PoolContention/workers-1-4         1.081µ ±   1%   1.096µ ±   4%  +1.39% (p=0.009 n=6)
PoolContention/workers-2-4         1.074µ ±   6%   1.100µ ±   3%       ~ (p=0.258 n=6)
PoolContention/workers-4-4         1.130µ ±   4%   1.100µ ±   1%       ~ (p=0.058 n=6)
PoolContention/workers-8-4         1.079µ ±   1%   1.099µ ±   1%  +1.85% (p=0.002 n=6)
PoolContention/workers-16-4        1.082µ ±   1%   1.103µ ±   2%  +1.94% (p=0.002 n=6)
ComponentLifecycle-4               3.566m ±   1%   3.637m ±   1%  +2.00% (p=0.002 n=6)
SourceValidation-4                 2.220µ ±   1%   2.300µ ±   1%  +3.63% (p=0.002 n=6)
RegistryConcurrent-4               790.5n ±   5%   812.5n ±   2%       ~ (p=0.065 n=6)
LoaderLoadFromString-4             3.570m ±   1%   3.664m ±   0%  +2.64% (p=0.002 n=6)
geomean                            17.34µ          17.62µ         +1.59%

                            │ baseline-bench.txt │        benchmark-results.txt         │
                            │        B/op        │     B/op      vs base                │
InterpreterCreation-4               2.027Mi ± 0%   2.027Mi ± 0%       ~ (p=0.615 n=6)
ComponentLoad-4                     2.180Mi ± 0%   2.180Mi ± 0%       ~ (p=0.818 n=6)
ComponentExecute-4                  1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4         1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                2.183Mi ± 0%   2.183Mi ± 0%       ~ (p=0.790 n=6)
SourceValidation-4                  1.984Ki ± 0%   1.984Ki ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                1.133Ki ± 0%   1.133Ki ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4              2.182Mi ± 0%   2.182Mi ± 0%       ~ (p=0.249 n=6)
geomean                             15.25Ki        15.25Ki       +0.00%
¹ all samples are equal

                            │ baseline-bench.txt │        benchmark-results.txt        │
                            │     allocs/op      │  allocs/op   vs base                │
InterpreterCreation-4                15.68k ± 0%   15.68k ± 0%       ~ (p=1.000 n=6)
ComponentLoad-4                      18.02k ± 0%   18.02k ± 0%       ~ (p=1.000 n=6)
ComponentExecute-4                    25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4           25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                 18.07k ± 0%   18.07k ± 0%       ~ (p=1.000 n=6) ¹
SourceValidation-4                    32.00 ± 0%    32.00 ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                  2.000 ± 0%    2.000 ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4               18.06k ± 0%   18.06k ± 0%       ~ (p=1.000 n=6) ¹
geomean                               183.3         183.3       +0.00%
¹ all samples are equal

pkg: github.com/GoCodeAlone/workflow/middleware
                                  │ baseline-bench.txt │       benchmark-results.txt       │
                                  │       sec/op       │   sec/op     vs base              │
CircuitBreakerDetection-4                  287.6n ± 7%   286.0n ± 4%       ~ (p=0.818 n=6)
CircuitBreakerExecution_Success-4          21.48n ± 0%   21.54n ± 0%  +0.30% (p=0.024 n=6)
CircuitBreakerExecution_Failure-4          66.29n ± 0%   66.31n ± 0%       ~ (p=0.784 n=6)
geomean                                    74.26n        74.21n       -0.08%

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │        B/op        │    B/op     vs base                │
CircuitBreakerDetection-4                 144.0 ± 0%     144.0 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │     allocs/op      │ allocs/op   vs base                │
CircuitBreakerDetection-4                 1.000 ± 0%     1.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
                                 │ baseline-bench.txt │       benchmark-results.txt        │
                                 │       sec/op       │    sec/op     vs base              │
JQTransform_Simple-4                     866.7n ± 29%   902.8n ± 24%       ~ (p=0.240 n=6)
JQTransform_ObjectConstruction-4         1.446µ ±  0%   1.455µ ±  1%  +0.66% (p=0.004 n=6)
JQTransform_ArraySelect-4                3.300µ ±  1%   3.329µ ±  1%       ~ (p=0.065 n=6)
JQTransform_Complex-4                    37.85µ ±  1%   37.65µ ±  1%       ~ (p=0.065 n=6)
JQTransform_Throughput-4                 1.777µ ±  1%   1.792µ ±  2%       ~ (p=0.132 n=6)
SSEPublishDelivery-4                     74.03n ±  1%   72.41n ±  0%  -2.19% (p=0.002 n=6)
geomean                                  1.655µ         1.666µ        +0.62%

                                 │ baseline-bench.txt │        benchmark-results.txt         │
                                 │        B/op        │     B/op      vs base                │
JQTransform_Simple-4                   1.273Ki ± 0%     1.273Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4       1.773Ki ± 0%     1.773Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4              2.625Ki ± 0%     2.625Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                  16.22Ki ± 0%     16.22Ki ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4               1.984Ki ± 0%     1.984Ki ± 0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                     0.000 ± 0%       0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                 +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │       benchmark-results.txt        │
                                 │     allocs/op      │ allocs/op   vs base                │
JQTransform_Simple-4                     10.00 ± 0%     10.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4         15.00 ± 0%     15.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4                30.00 ± 0%     30.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                    324.0 ± 0%     324.0 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4                 17.00 ± 0%     17.00 ± 0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                     0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                             ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/schema
                                    │ baseline-bench.txt │       benchmark-results.txt       │
                                    │       sec/op       │   sec/op     vs base              │
SchemaValidation_Simple-4                    1.101µ ± 2%   1.133µ ± 9%  +2.95% (p=0.009 n=6)
SchemaValidation_AllFields-4                 1.665µ ± 8%   1.665µ ± 3%       ~ (p=1.000 n=6)
SchemaValidation_FormatValidation-4          1.584µ ± 4%   1.601µ ± 1%       ~ (p=0.227 n=6)
SchemaValidation_ManySchemas-4               1.806µ ± 2%   1.803µ ± 3%       ~ (p=0.784 n=6)
geomean                                      1.513µ        1.527µ       +0.96%

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │        B/op        │    B/op     vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │     allocs/op      │ allocs/op   vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │       sec/op       │    sec/op     vs base               │
EventStoreAppend_InMemory-4                1.211µ ± 22%   1.160µ ± 15%        ~ (p=0.818 n=6)
EventStoreAppend_SQLite-4                  1.671m ±  8%   1.351m ±  7%  -19.16% (p=0.002 n=6)
GetTimeline_InMemory/events-10-4           13.40µ ±  2%   14.64µ ±  3%   +9.26% (p=0.002 n=6)
GetTimeline_InMemory/events-50-4           75.00µ ± 21%   80.67µ ± 21%        ~ (p=0.240 n=6)
GetTimeline_InMemory/events-100-4          118.8µ ±  1%   128.5µ ±  1%   +8.18% (p=0.002 n=6)
GetTimeline_InMemory/events-500-4          613.6µ ±  0%   658.5µ ±  2%   +7.31% (p=0.002 n=6)
GetTimeline_InMemory/events-1000-4         1.255m ±  1%   1.361m ±  2%   +8.51% (p=0.002 n=6)
GetTimeline_SQLite/events-10-4             106.7µ ±  1%   113.9µ ±  5%   +6.77% (p=0.002 n=6)
GetTimeline_SQLite/events-50-4             244.2µ ±  1%   266.1µ ±  1%   +9.00% (p=0.002 n=6)
GetTimeline_SQLite/events-100-4            412.7µ ±  4%   447.0µ ±  1%   +8.30% (p=0.002 n=6)
GetTimeline_SQLite/events-500-4            1.748m ±  0%   1.911m ±  2%   +9.34% (p=0.002 n=6)
GetTimeline_SQLite/events-1000-4           3.409m ±  5%   3.702m ±  1%   +8.59% (p=0.002 n=6)
geomean                                    218.6µ         228.7µ         +4.60%

                                   │ baseline-bench.txt │        benchmark-results.txt         │
                                   │        B/op        │     B/op      vs base                │
EventStoreAppend_InMemory-4                 780.5 ± 10%     791.0 ± 7%       ~ (p=0.900 n=6)
EventStoreAppend_SQLite-4                 1.985Ki ±  2%   1.984Ki ± 3%       ~ (p=0.844 n=6)
GetTimeline_InMemory/events-10-4          7.953Ki ±  0%   7.953Ki ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4          46.62Ki ±  0%   46.62Ki ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4         94.48Ki ±  0%   94.48Ki ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4         472.8Ki ±  0%   472.8Ki ± 0%       ~ (p=1.000 n=6)
GetTimeline_InMemory/events-1000-4        944.3Ki ±  0%   944.3Ki ± 0%       ~ (p=0.273 n=6)
GetTimeline_SQLite/events-10-4            16.74Ki ±  0%   16.74Ki ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4            87.14Ki ±  0%   87.14Ki ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4           175.4Ki ±  0%   175.4Ki ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4           846.1Ki ±  0%   846.1Ki ± 0%       ~ (p=0.067 n=6)
GetTimeline_SQLite/events-1000-4          1.639Mi ±  0%   1.639Mi ± 0%       ~ (p=0.364 n=6)
geomean                                   67.28Ki         67.35Ki       +0.11%
¹ all samples are equal

                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │     allocs/op      │  allocs/op   vs base                │
EventStoreAppend_InMemory-4                  7.000 ± 0%    7.000 ± 0%       ~ (p=1.000 n=6) ¹
EventStoreAppend_SQLite-4                    53.00 ± 0%    53.00 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-10-4             125.0 ± 0%    125.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4             653.0 ± 0%    653.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4           1.306k ± 0%   1.306k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4           6.514k ± 0%   6.514k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-1000-4          13.02k ± 0%   13.02k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-10-4               382.0 ± 0%    382.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4              1.852k ± 0%   1.852k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4             3.681k ± 0%   3.681k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4             18.54k ± 0%   18.54k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-1000-4            37.29k ± 0%   37.29k ± 0%       ~ (p=1.000 n=6) ¹
geomean                                     1.162k        1.162k       +0.00%
¹ all samples are equal

Benchmarks run with go test -bench=. -benchmem -count=6.
Regressions ≥ 20% are flagged. Results compared via benchstat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants