0.10.0 Issue #3 — AIS-CLI plan-batches + solve-problem (STRICT NO-WRITE)
Part of #468 —
Release 0.10.0 — AIS Tooling Interface (CLI + Contracts).
Wave: 3 (CLI-Commands round-out).
Goal
Add the remaining two CLI commands: ais plan-batches (read-only)
and ais solve-problem (strict no-write in 0.10.0). solve-problem
does NOT create GitHub issues automatically; it only validates the
problem text, resolves the repo, optionally emits a local issue-body
markdown, and optionally passes through to solve-issue if --issue N
is provided.
Why separate
Smaller second wave; less risk than initial commands. The strict no-write
constraint requires its own test coverage to prevent regressions.
Dependencies
Acceptance Criteria
Files
New:
ais_cli/commands/plan_batches.py
ais_cli/commands/solve_problem.py
tests/test_ais_cli/test_plan_batches.py
tests/test_ais_cli/test_solve_problem_no_write.py
Tests
- Smoke + dry-run for both commands
- Explicit no-write test: monkey-patch the
github_client module
to raise if create_issue / create_pull_request / similar is
called from any code path in solve-problem
- Secret-redaction: secret-pattern in problem-text is redacted in output
Risk
LOW.
LOC-Budget
< 500 net.
Recommended Model
Small coding model (gpt-4o-mini).
Parallelizable
No (Wave 3; runs after #2 and #1d).
Reference
0.10.0 Issue #3 — AIS-CLI plan-batches + solve-problem (STRICT NO-WRITE)
Goal
Add the remaining two CLI commands:
ais plan-batches(read-only)and
ais solve-problem(strict no-write in 0.10.0).solve-problemdoes NOT create GitHub issues automatically; it only validates the
problem text, resolves the repo, optionally emits a local issue-body
markdown, and optionally passes through to
solve-issueif--issue Nis provided.
Why separate
Smaller second wave; less risk than initial commands. The strict no-write
constraint requires its own test coverage to prevent regressions.
Dependencies
Acceptance Criteria
ais plan-batches --owner X --repo Y [--label L] --jsonworks(delegates to
scripts/plan_issue_batches.py)ais solve-problem --repo <hint> --problem-file problem.md --dry-run --jsonvalidates the problem text and resolves the repo (no GitHub
write, no PR creation)
ais solve-problem ... --emit-issue-body --jsonwrites theissue-body markdown locally to
reports/runs/<run-id>/issue-body.md(NOT to GitHub)
ais solve-problem ... --issue N --dry-run --jsonvalidatesand previews the action for an existing issue (no write)
enforced by an explicit negative test (no
github_client.create_issueor similar is called)
Files
New:
ais_cli/commands/plan_batches.pyais_cli/commands/solve_problem.pytests/test_ais_cli/test_plan_batches.pytests/test_ais_cli/test_solve_problem_no_write.pyTests
github_clientmoduleto raise if
create_issue/create_pull_request/ similar iscalled from any code path in
solve-problemRisk
LOW.
LOC-Budget
< 500 net.
Recommended Model
Small coding model (
gpt-4o-mini).Parallelizable
No (Wave 3; runs after #2 and #1d).
Reference
docs/PLANNING_0.10.0.md§ #3