Rename --tool orchestration flag to --non-interactive#45
Conversation
There was a problem hiding this comment.
Now I have all the information needed. Let me compile the review:
Findings:
-
Must Fix (Critical):
agents/goal-manager-agent.md:86— The error message still says"goal name required in tool mode"when it should say"goal name required in non_interactive mode"to match the renamed MODE variable. All other references in the diff correctly useMODE=non_interactive. -
Correctness verified:
commands/complete-task.md— AllMODE=toolreferences were correctly updated toMODE=non_interactivethroughout (concern from plan was already addressed in this commit). -
Tests: No test files were changed. Verification shows no scenarios or integration tests reference
--toolflag, so no test updates are required. -
CHANGELOG: The changelog entry correctly describes the rename with
--toolkept as deprecated alias. -
Agent files:
goal-creator.mdandtask-creator.mdcorrectly document--non-interactivewith--toolas deprecated alias. -
Command files: All 6 command files (
complete-goal.md,complete-task.md,create-goal.md,create-task.md,defer-goal.md,defer-task.md) correctly reference--non-interactivewith--toolnoted as deprecated alias.
{
"verdict": "request-changes",
"summary": "The rename from --tool to --non-interactive is mostly correct, but agents/goal-manager-agent.md:86 has an inconsistency where the error message still refers to 'tool mode' instead of 'non_interactive mode'.",
"comments": [
{
"file": "agents/goal-manager-agent.md",
"line": 86,
"severity": "critical",
"message": "Inconsistent: error message says 'goal name required in tool mode' but MODE is renamed to 'non_interactive'. Should say 'goal name required in non_interactive mode'."
}
],
"concerns_addressed": [
"correctness: agents/goal-manager-agent.md:86 still says 'tool mode' in error message — raised as critical comment",
"correctness: commands/complete-task.md Step 3a is consistent with rename — no issue found",
"tests: no test files exercise --tool flag parsing — no test updates needed"
]
}superseded by new automated review
There was a problem hiding this comment.
Based on my complete analysis, here is the review:
Analysis Summary
Diff scope: 10 files changed — all markdown documentation (.md). No Go implementation code touched.
Project type: This is a hybrid project:
vault-cliis a Go CLI binary (the actual tool)commands/andagents/are Claude Code plugin files (markdown)- The
--tool/--non-interactiveflag described in the markdown is a conceptual mode indicator in agent instructions, not a CLI flag of the vault-cli binary
Key finding: The PR claim that --tool is "retained as a deprecated alias (parsers accept both)" is misleading. There are no Go parsers for --tool — the vault-cli binary never had this flag. The flag exists only as a documentation convention in the Claude Code agent/command markdown files. The agents invoke vault-cli via vault-cli --output json for machine-readable output.
{
"verdict": "request-changes",
"summary": "PR makes only documentation changes but the CHANGELOG entry contains a factual inaccuracy: it claims '--tool' is 'kept as a deprecated alias (parsers accept both)' for one release, but there are no parsers in the implementation — the vault-cli Go binary never had a --tool flag. The flag is a documentation convention in Claude Code agent files, not a CLI flag. The CHANGELOG prose should reflect this accurately to avoid user confusion.",
"comments": [
{
"file": "CHANGELOG.md",
"line": 14,
"severity": "major",
"message": "CHANGELOG entry claims '--tool kept as a deprecated alias (parsers accept both) for one release' — but no parsers accept this flag. The vault-cli Go binary (pkg/cli/cli.go) has no --tool flag; agents invoke it via 'vault-cli --output json'. The '--tool' flag is a documentation convention in agent markdown, not a CLI flag. Rewrite to: '...--non-interactive (previously documented as --tool in agent instructions)' so the claim is accurate."
}
],
"concerns_addressed": [
"correctness: commands/create-goal.md etc. — PR description claimed '--tool is retained as deprecated alias' but only markdown documentation was changed, no Go parser code. Verified: vault-cli binary has no --tool flag implementation in pkg/cli/cli.go. The flag is a documentation convention only."
]
}superseded by new automated review
There was a problem hiding this comment.
Review Summary
Verdict: approve
Summary: The flag rename (--tool → --non-interactive, MODE=tool → MODE=non_interactive) is correctly implemented across all 6 commands and 3 agents. The deprecated --tool alias is properly documented as still accepted. One notable item: the new prompts/work-on-headless-non-interactive.md is status: draft — it has not been through dark-factory approval and will not execute until approved.
Must Fix (Critical)
None.
Should Fix (Important)
-
prompts/work-on-headless-non-interactive.mdisstatus: draft— not queued for executionThe new prompt was placed in
prompts/but isstatus: draft. Per the dark-factory workflow in CLAUDE.md, prompts must go through: create → audit → user confirms →dark-factory prompt approve <name>. This prompt has not been approved, so the daemon will not execute it. The refactor is incomplete — the flag rename is done, but the companion fix (work-on headless hang) is stalled in draft.Fix needed: Either approve the prompt via
dark-factory prompt approve work-on-headless-non-interactive, or explicitly leave it as future work and update the CHANGELOG to remove the implication that the headless-hang fix is part of this PR. -
CHANGELOG does not mention the new
prompts/work-on-headless-non-interactive.mdfileThe
## Unreleasedentry describes the--tool→--non-interactiverename but omits that a new prompt file was added. A reader would not know about the draft prompt.
Nice to Have (Optional)
- The
argument-hintin all 6 commands now shows[--non-interactive]but the order incomplete-task.mdandcomplete-goal.mdputs--non-interactivebefore--force— consistent with the other commands but verify this is intentional since--forcewas previously only mentioned in interactive-mode contexts.
{
"verdict": "approve",
"summary": "The --tool → --non-interactive flag rename and MODE=tool → MODE=non_interactive label change are correctly implemented across all commands and agents. The deprecated --tool alias is preserved. One actionable item: prompts/work-on-headless-non-interactive.md is status=draft and will not execute until approved via dark-factory.",
"comments": [
{
"file": "prompts/work-on-headless-non-interactive.md",
"line": 2,
"severity": "major",
"message": "status: draft — prompt is not queued for dark-factory execution. Either approve via 'dark-factory prompt approve work-on-headless-non-interactive' or update CHANGELOG to clarify this is future work."
},
{
"file": "CHANGELOG.md",
"line": 13,
"severity": "nit",
"message": "CHANGELOG entry describes the flag rename but does not mention the new prompts/work-on-headless-non-interactive.md file that was added in this diff."
}
],
"concerns_addressed": [
"correctness: deprecated --tool alias preserved — all 6 commands correctly parse '--non-interactive (or deprecated --tool)' → MODE=non_interactive",
"correctness: MODE=tool → MODE=non_interactive renamed in all agents (goal-creator.md, task-creator.md, goal-manager-agent.md) and all command markdown files",
"tests: concern noted — no Go test files in diff; the flag rename affects Claude Code agent instructions (markdown), not CLI argument parsing; no code-level tests exist to update"
]
}
Why
The
--toolorchestration-mode flag is opaque — it doesn't read as "no prompts / non-interactive". Renamed to--non-interactiveacross the plugin so the flag name matches its behavior. Prep for wiringvault-cli work-on's headless bootstrap to pass it (fixes the 5mclaude session start timed outhang when the UI Start button runswork-on-taskheadlessly and it blocks onAskUserQuestion).What
--tool→--non-interactiveand internal labelMODE=tool→MODE=non_interactivein:create-task,create-goal,complete-task,complete-goal,defer-task,defer-goaltask-creator,goal-creator,goal-manager-agent--toolretained as a deprecated alias (parsers accept both) for one release.## Unreleased(autoRelease bot versions on merge).Follow-ups (separate)
--non-interactivebehavior towork-on-task(skip Phase 4 asks + Phase 5 chain).workon.goappend--non-interactivewhen headless + make the 5m timeout configurable.