Skip to content

fix(cli): keep bulk JSON output parseable [EXT-70] - #293

Merged
ruby-automation merged 2 commits into
mainfrom
ext-70-json-stdout
Sep 28, 2026
Merged

ruby-automation merged 2 commits into
mainfrom
ext-70-json-stdout

Conversation

@ruby-automation

@ruby-automation ruby-automation commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • reject confirmation and partial project/assignee prompts in JSON mode with stderr diagnostics before mutation
  • emit one JSON value for ID and bulk move dry-runs and no-match results
  • preserve text-mode interaction while routing prompt-required JSON calls away from stdout
  • preserve EXT-69's fail-closed destructive confirmations after integrating current main
  • document the Phase 12 JSON contract

Linear issue: https://linear.app/the-rubyists/issue/EXT-70/keep-json-stdout-valid-when-bulk-commands-require-prompts

Verification

  • mise exec -- mix setup — passed
  • mise exec -- mix ci — passed (58 root tests, 618 app tests, Credo clean, audits clean)
  • focused mutation, move, and prompt tests — passed (138 tests)
  • GitHub Actions run 36374663750 — Test and change detection passed; Burrito regression skipped because no Burrito-impacting files changed

The branch integrates current main with a regular merge, so the update was pushed without force-pushing.

@ruby-automation ruby-automation changed the title EXT-70: Keep JSON stdout valid for bulk commands fix(cli): keep bulk JSON output parseable [EXT-70] Sep 28, 2026
bougyman
bougyman previously approved these changes Sep 28, 2026
@ruby-automation

Copy link
Copy Markdown
Contributor Author

Automated review is approved and there are no review comments to action. The first Test run failed only because the PR title was not Conventional Commits compliant; I corrected it to fix(cli): keep bulk JSON output parseable [EXT-70], and the rerun passed.

Merge current main into the JSON output fix while retaining EXT-69 confirmation semantics.
@ruby-automation

Copy link
Copy Markdown
Contributor Author

Rework completed for the EXT-69 integration review:

  • Addressed the requested conflict fix by merging current main (which contains EXT-69) into this branch without force-pushing.
  • Updated both text-mode destructive move confirmations to use Prompt.confirm_destructive?/1, preserving EXT-69's fail-closed behavior for blank or EOF input.
  • Preserved the JSON prompt guards, exact-match resolution, and both Phase 12 decision entries.
  • No other review comments were outstanding; the prior automated review was approved.

Verification:

  • mise exec -- mix ci — passed (58 root tests, 618 app tests, Credo clean, audits and usage-rule checks clean).
  • Focused mutation/move/prompt suite — passed (138 tests).
  • GitHub Actions run 36374663750 — Test and change-detection checks passed; Burrito regression skipped because no Burrito-impacting files changed.

@ruby-automation
ruby-automation merged commit d03b838 into main Sep 28, 2026
6 checks passed
@ruby-automation
ruby-automation deleted the ext-70-json-stdout branch September 28, 2026 13:12
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