Problem
basectl workspace pull clones repos that aren't present locally — it bootstraps a workspace. But once repos are present, keeping them current requires developers to git pull across each repo manually or script it themselves. There is no Base-managed command for the daily "sync workspace to latest" operation.
This is a gap in the workspace lifecycle: workspace pull bootstraps, but doesn't maintain currency.
Proposed solution
Add basectl workspace update [options] that:
- Reads the workspace manifest to discover all managed projects.
- For each managed repo (or a filtered subset) that is present on disk:
- Runs
git pull --rebase (or the project's configured update strategy).
- Reports: updated (with commit range), up-to-date, or skipped (dirty working tree or detached HEAD).
- Repos not present locally are reported as "not cloned — run
workspace pull first" (not silently skipped).
Proposed interface
basectl workspace update # update all managed repos
basectl workspace update --repos proj1,proj2 # update specified repos only
basectl workspace update --dry-run # show what would happen, no git operations
basectl workspace update --format json # structured JSON output
Safety constraints
- Dirty working tree: skip the repo and report as "skipped (dirty)" — never rebase over local changes.
- Conflict during rebase: report as "conflict" and leave the repo in conflict state for the developer to resolve — continue updating remaining repos (unless
--fail-fast).
- Never force-reset or discard local changes.
Acceptance criteria
Problem
basectl workspace pullclones repos that aren't present locally — it bootstraps a workspace. But once repos are present, keeping them current requires developers togit pullacross each repo manually or script it themselves. There is no Base-managed command for the daily "sync workspace to latest" operation.This is a gap in the workspace lifecycle:
workspace pullbootstraps, but doesn't maintain currency.Proposed solution
Add
basectl workspace update [options]that:git pull --rebase(or the project's configured update strategy).workspace pullfirst" (not silently skipped).Proposed interface
Safety constraints
--fail-fast).Acceptance criteria
basectl workspace updateis implemented as a new workspace subcommand.git pull --rebase(or equivalent).--reposfilter selects a subset by name.--dry-runprints what would happen without running any git commands.--format jsonemits structured per-repo result array.docs/stability-tiers.md(Experimental initially)..ai-context/COMMANDS.mdupdated.