Problem
basectl test <project> works well for per-project test execution, but there is no workspace-level equivalent. Validating a cross-repo change (e.g., a shared library update affecting multiple downstream projects) requires developers to loop manually across repos or write a one-off shell script.
The workspace manifest already has complete knowledge of which repos are managed and what test commands they declare — this knowledge is currently unused at the workspace level.
Proposed solution
Add basectl workspace test [options] that:
- Reads the workspace manifest to discover all managed projects.
- For each project (or a filtered subset), runs the project's declared test command from
base_manifest.yaml.
- Emits per-project pass/fail results in the same structured format as
workspace check --format json.
Proposed interface
basectl workspace test # run tests for all workspace projects
basectl workspace test --projects proj1,proj2 # run tests for specified projects only
basectl workspace test --fail-fast # stop on first project failure
basectl workspace test --format json # structured JSON output
Execution model
- Serial execution by default (consistent with
docs/check-parallelism.md — predictable output, no interleaved logs).
- Each project's test command runs in the project directory with its environment activated (same as
basectl test <project>).
- Summary at end: N passed, M failed, K skipped (no test command declared).
Acceptance criteria
Problem
basectl test <project>works well for per-project test execution, but there is no workspace-level equivalent. Validating a cross-repo change (e.g., a shared library update affecting multiple downstream projects) requires developers to loop manually across repos or write a one-off shell script.The workspace manifest already has complete knowledge of which repos are managed and what test commands they declare — this knowledge is currently unused at the workspace level.
Proposed solution
Add
basectl workspace test [options]that:base_manifest.yaml.workspace check --format json.Proposed interface
Execution model
docs/check-parallelism.md— predictable output, no interleaved logs).basectl test <project>).Acceptance criteria
basectl workspace testis implemented as a new workspace subcommand.test_commandsfor each managed project in the workspace manifest.--projectsfilter selects a subset of projects by name.--fail-faststops after the first failing project.--format jsonemits structured output consistent with other workspace JSON outputs.test_commandsdeclared are skipped with a skip notice (not an error).docs/stability-tiers.md(Experimental initially)..ai-context/COMMANDS.mdupdated.