What is wrong
.github/workflows/assign-id.yml:73 sets
DRY_RUN_FLAG="--dry-run-only"
and expands it unquoted into the invocation at line 77-81:
./target/release/forgeplan ci-assign-id \
--pr "$PR_NUMBER" --repo "${{ github.repository }}" \
--base origin/dev --json $DRY_RUN_FLAG > /tmp/assignment.json
forgeplan ci-assign-id has no --dry-run-only flag. Its real flag set is:
--auto-suffix --base --dry-run --head --json --pr --repo --workspace
So the manual dry-run-only input (workflow_dispatch) is the one path that breaks: instead of
a dry run, the step dies on error: unexpected argument '--dry-run-only' found, with
tip: a similar argument exists: '--dry-run'.
Evidence
- clap declaration:
crates/forgeplan-cli/src/main.rs:802 (dry_run: bool, long only)
grep -rn 'dry-run-only' crates/forgeplan-cli/ → no hits
forgeplan ci-assign-id --help on 0.37.0 lists --dry-run, never --dry-run-only
- the workflow's own docs page already documents the rejection:
website/src/content/docs/docs/cli/ci-assign-id.md (the --dry-run-only error transcript)
Fix
Line 73 → DRY_RUN_FLAG="--dry-run". Worth a smoke test of the workflow_dispatch path, since
only that input reaches the broken branch.
Revisit trigger
Reopen/act if a manual dry-run-only dispatch is ever run before this lands - nobody has, which
is why the branch survived.
What is wrong
.github/workflows/assign-id.yml:73setsDRY_RUN_FLAG="--dry-run-only"and expands it unquoted into the invocation at line 77-81:
forgeplan ci-assign-idhas no--dry-run-onlyflag. Its real flag set is:So the manual
dry-run-onlyinput (workflow_dispatch) is the one path that breaks: instead ofa dry run, the step dies on
error: unexpected argument '--dry-run-only' found, withtip: a similar argument exists: '--dry-run'.Evidence
crates/forgeplan-cli/src/main.rs:802(dry_run: bool, long only)grep -rn 'dry-run-only' crates/forgeplan-cli/→ no hitsforgeplan ci-assign-id --helpon 0.37.0 lists--dry-run, never--dry-run-onlywebsite/src/content/docs/docs/cli/ci-assign-id.md(the--dry-run-onlyerror transcript)Fix
Line 73 →
DRY_RUN_FLAG="--dry-run". Worth a smoke test of theworkflow_dispatchpath, sinceonly that input reaches the broken branch.
Revisit trigger
Reopen/act if a manual
dry-run-onlydispatch is ever run before this lands - nobody has, whichis why the branch survived.