IW-552: A flag value beginning with a double dash is refused as missing #788
Open
claude
wants to merge 21 commits from
IW-552 into main
pull from: IW-552
merge into: iterative-works:main
iterative-works:main
iterative-works:IW-75
iterative-works:IW-80
iterative-works:IW-111
iterative-works:IW-122
iterative-works:IW-152
iterative-works:IW-189
iterative-works:IW-197
iterative-works:IW-227
iterative-works:IW-339
iterative-works:IW-350
iterative-works:IW-353
iterative-works:IW-398
iterative-works:IW-425
iterative-works:IW-429
iterative-works:IW-430
iterative-works:IW-438
iterative-works:IW-440
iterative-works:IW-441
iterative-works:IW-442
iterative-works:IW-443
iterative-works:IW-452
iterative-works:IW-455
iterative-works:IW-456
iterative-works:IW-468
iterative-works:IW-469
iterative-works:IW-477
iterative-works:IW-492
iterative-works:IW-494
iterative-works:IW-543
iterative-works:IW-565
iterative-works:IW-568
iterative-works:IW-569
iterative-works:IW-570
iterative-works:IW-572
iterative-works:IW-577
iterative-works:IW-579
iterative-works:IW-584
iterative-works:IW-585
iterative-works:IW-586
iterative-works:IW-598
iterative-works:IW-783
iterative-works:IW-773
iterative-works:IW-770
iterative-works:IW-642
iterative-works:IW-643
iterative-works:IW-644
iterative-works:IW-649
iterative-works:IW-654
iterative-works:IW-661
iterative-works:IW-662
iterative-works:IW-666
iterative-works:IW-667
iterative-works:IW-754
iterative-works:IW-741
iterative-works:IW-740
iterative-works:IW-733
iterative-works:IW-724
iterative-works:IW-719
iterative-works:IW-755
iterative-works:IW-700
iterative-works:IW-756
iterative-works:IW-759
iterative-works:IW-795
iterative-works:IW-699
iterative-works:IW-796
iterative-works:IW-797
iterative-works:IW-750
iterative-works:IW-671
iterative-works:IW-681
iterative-works:IW-762
iterative-works:IW-790
iterative-works:IW-557
iterative-works:IW-548
iterative-works:IW-706
iterative-works:IW-513
iterative-works:IW-551
iterative-works:IW-707
iterative-works:IW-712
iterative-works:IW-708
iterative-works:IW-701
iterative-works:IW-690
iterative-works:IW-687
iterative-works:IW-682
iterative-works:IW-679
iterative-works:IW-749
iterative-works:IW-672
iterative-works:IW-744
iterative-works:IW-745
iterative-works:IW-678
iterative-works:IW-670
iterative-works:IW-734
iterative-works:IW-730
iterative-works:IW-610
iterative-works:IW-612
iterative-works:IW-607
iterative-works:IW-718
iterative-works:IW-718-phase-01
iterative-works:IW-715
iterative-works:IW-710
iterative-works:IW-702
iterative-works:IW-608
iterative-works:IW-675
iterative-works:IW-676
iterative-works:IW-677
iterative-works:IW-691
iterative-works:IW-599
iterative-works:IW-652
iterative-works:IW-651
iterative-works:IW-650
iterative-works:IW-656
iterative-works:IW-636
iterative-works:IW-631
iterative-works:IW-613
iterative-works:IW-637
iterative-works:IW-628
iterative-works:IW-629
iterative-works:IW-622
iterative-works:IW-623
iterative-works:IW-620
iterative-works:IW-616
iterative-works:IW-606
iterative-works:IW-601
iterative-works:IW-581
iterative-works:IW-491
iterative-works:IW-583
iterative-works:IW-578
iterative-works:IW-555
iterative-works:dashboard-control-plane
iterative-works:IW-556
iterative-works:IW-566
iterative-works:IW-544
iterative-works:IW-558
iterative-works:IW-517
iterative-works:chore/bump-version-0.15.0
iterative-works:chore/bump-version-0.14.0
iterative-works:IW-463
iterative-works:merge-url-after-a-separator
iterative-works:IW-497
iterative-works:IW-512
iterative-works:IW-526
iterative-works:dashboard-layer-dependencies
iterative-works:chore/bump-version-0.13.0
iterative-works:docs/skills-0.13.0
iterative-works:chore/bump-version-0.12.0
iterative-works:docs/api-0.12.0
iterative-works:phase-gate-followups
iterative-works:chore/bump-version-0.11.0
iterative-works:chore/regenerate-skills-0.11.0
iterative-works:batch-implement-blockers
iterative-works:IW-476
iterative-works:IW-436
iterative-works:IW-437
iterative-works:IW-422
iterative-works:IW-399
iterative-works:docs/forgejo-fj-cli-guidance
iterative-works:fix/forgejo-commit-status-field
iterative-works:wip/dashboard-control-plane-effort
iterative-works:feat/sbt-server-cleanup
iterative-works:IW-389
iterative-works:IW-382
iterative-works:IW-382-phase-02
iterative-works:IW-382-phase-01
iterative-works:wip/decide-outcome-ci-statuses
iterative-works:IW-347
iterative-works:chore/bump-version-0.6.1
iterative-works:IW-347-phase-02
iterative-works:fix-ssh-url-parsing
iterative-works:IW-347-phase-01
iterative-works:IW-346
iterative-works:IW-346-phase-02
iterative-works:IW-346-phase-01
iterative-works:IW-345
iterative-works:IW-345-phase-04
iterative-works:IW-345-phase-03
iterative-works:IW-345-phase-02
iterative-works:IW-345-phase-01
iterative-works:IW-344
iterative-works:IW-344-phase-03
iterative-works:IW-344-phase-02
iterative-works:IW-344-phase-01
iterative-works:fix-bloop-daemon-leak
iterative-works:fix-start-team-identifier
iterative-works:IW-340
iterative-works:IW-340-phase-01
iterative-works:fix-release-script-after-IW-106
iterative-works:add-build-iw-cli-skills
iterative-works:session-setup-hooks
iterative-works:IW-331
iterative-works:IW-106
iterative-works:IW-323
iterative-works:IW-323-phase-04
iterative-works:IW-323-phase-02
iterative-works:IW-323-phase-01
iterative-works:release/0.3.7
iterative-works:fix/claude-sync-and-batch-flag
iterative-works:fix/batch-implement-resume
iterative-works:chore/bump-0.3.6
iterative-works:fix/gitlab-work-items-url
iterative-works:fix/glab-mr-list-state-flag
iterative-works:chore/bump-version-0.3.5
iterative-works:IW-309
iterative-works:IW-305
iterative-works:IW-305-phase-01
iterative-works:IW-292
iterative-works:IW-292-phase-03
iterative-works:IW-292-phase-01
iterative-works:IW-289
iterative-works:fix/glab-mr-create-flags
iterative-works:IW-289-phase-07
iterative-works:IW-289-phase-06
iterative-works:IW-289-phase-05
iterative-works:IW-289-phase-02
iterative-works:IW-289-phase-01
iterative-works:IW-275
iterative-works:IW-275-phase-03
iterative-works:IW-275-phase-02
iterative-works:IW-275-phase-01
iterative-works:fix/glab-phase-advance
iterative-works:IW-274
iterative-works:IW-274-phase-05
iterative-works:IW-274-phase-03
iterative-works:IW-274-phase-02
iterative-works:IW-274-phase-01
iterative-works:IW-188
iterative-works:IW-188-phase-06
iterative-works:IW-188-phase-05
iterative-works:IW-272
iterative-works:IW-202
iterative-works:IW-188-phase-04
iterative-works:IW-188-phase-03
iterative-works:IW-202-phase-04
iterative-works:IW-202-phase-03
iterative-works:IW-202-phase-02
iterative-works:IW-202-phase-01
iterative-works:chore/bump-version-0.3.4
iterative-works:fix/phase-commit-uncommitted-files
iterative-works:release-automation
iterative-works:feat/update-command
iterative-works:chore/bump-version-0.3.0
iterative-works:wip/status-server-query
iterative-works:fix/register-team-and-error-handling
iterative-works:IW-148
iterative-works:docs-update-iw222
iterative-works:IW-222
iterative-works:IW-222-phase-04
iterative-works:IW-222-phase-03
iterative-works:IW-222-phase-01
iterative-works:IW-205
iterative-works:IW-205-phase-03
iterative-works:IW-205-phase-02
iterative-works:fix/ci-test-timeout
iterative-works:IW-206
iterative-works:IW-206-phase-07
iterative-works:IW-206-phase-06
iterative-works:IW-206-phase-05
iterative-works:IW-206-phase-04
iterative-works:IW-206-phase-03
iterative-works:IW-203
iterative-works:fix/ci-and-scalafix
iterative-works:IW-196
iterative-works:IW-175
iterative-works:IW-100
iterative-works:IW-100-phase-01
iterative-works:IW-164
iterative-works:IW-126
iterative-works:IW-126-phase-01
iterative-works:IW-103
iterative-works:IW-82
iterative-works:IW-82-phase-05
iterative-works:IW-82-phase-01
iterative-works:IW-92
iterative-works:IW-79
iterative-works:fix/github-issue-id-prefix
iterative-works:IW-88
iterative-works:IW-92-phase-01
iterative-works:IW-88-phase-01
iterative-works:IW-90
iterative-works:IW-74
iterative-works:IW-107
iterative-works:IW-79-phase-05
iterative-works:IW-79-phase-01
iterative-works:IW-72
iterative-works:IW-63
iterative-works:IW-46
iterative-works:46
iterative-works:46-phase-06
iterative-works:46-phase-05
iterative-works:48
iterative-works:IWLE-132
iterative-works:IWLE-131
iterative-works:IWLE-131-phase-03
iterative-works:IWLE-131-phase-02
iterative-works:IWLE-100
iterative-works:IWLE-76-phase-02
No reviewers
Labels
Clear labels
agent-ready
bug
Something isn't working
contract
Run the tool-contract suite on this PR
documentation
Improvements or additions to documentation
duplicate
This issue or pull request already exists
enhancement
New feature or request
good first issue
Good for newcomers
help wanted
Extra attention is needed
invalid
This doesn't seem right
needs-human
needs-input
Intake asked the human a question on the issue; waiting for the answer
question
Further information is requested
wontfix
This will not be worked on
No labels
agent-ready
bug
contract
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-human
needs-input
question
wontfix
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/iw-cli!788
Loading…
Reference in a new issue
No description provided.
Delete branch "IW-552"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
A value-taking flag followed by a token that starts with
--was refused as "requires a value", although the value was given.iw issue create --title T --description "--max-turns ..."failed this way; IW-610 hit the same withreview-state update --display-subtext "--comments command".Defects fixed
Rejection.MissingValueconflated "no value was given" with "a value was given but is flag-shaped". The parser now hasRejection.FlagShapedValue(name, token). When the next token is not a flag of this command (and not--help), the refusal names the token and shows the inline form--flag='<token>'that passes it. When the next token is a declared flag of the command or--help, the refusal stays "requires a value" with no inline hint (option a, as answered on the issue). The rule that a--token is never taken as a separate value is unchanged.Testing
CommandArgParserTest: 7 tests for both rejection shapes (single and repeated flags, inline declared flag,--help).HelpTest: two-line rendering of the new rejection.IssueHarnessTest:issue createwith a flag-shaped description asserts the new message, exit 1, no tracker call.Release notes
See
project-management/issues/IW-552/release-notes.md(Czech).Closes #552
🤖 Generated with Claude Code
Issue: IW-552 Phase: 1 - Rejection.MissingValue conflates "no value was given" with "a value was given but is flag-shaped" This commit marks the checkpoint for phase 1 context generation. Use dx-fix IW-552 to return to this point. 🤖 Generated with Claude Code Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Rejection.MissingValue conflates "no value was given" with "a value was given but is flag-shaped" Artifacts: - phase-01-tasks.md 🤖 Generated with Claude Code Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Conflicting files
Implement: rework for review 24
The rework phase merged into IW-552 through #800; this pull request carries it.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.