fix(workspace): default-write aube-workspace.yaml instead of pnpm-workspace.yaml#382
fix(workspace): default-write aube-workspace.yaml instead of pnpm-workspace.yaml#382
Conversation
…kspace.yaml When `aube approve-builds` (or the install-time auto-seed of unreviewed build scripts) needs to create a workspace yaml from scratch, it was writing `pnpm-workspace.yaml`. The lockfile companion is `aube-lock.yaml` — having the workspace yaml stay pnpm-prefixed is an asymmetry: a fresh `aube install` on a solo project produces a filesystem layout with both names sitting next to each other, mixing vendor namespaces. Switches the default-write filename to `aube-workspace.yaml` so the two aube-generated files share a naming scheme. Backward compat is unchanged: aube already reads both names (with `aube-workspace.yaml` taking precedence), and projects that already ship `pnpm-workspace.yaml` keep mutating that file in place — no silent fork into two parallel configs. ## Test coverage Renames the existing `add_to_allow_builds_creates_pnpm_workspace_when_no_yaml` test to its new behavior, and adds a companion `add_to_allow_builds_writes_to_existing_pnpm_workspace` that pins the backward-compat branch (a project with an existing pnpm-workspace.yaml keeps using it; no `aube-workspace.yaml` is created alongside). 24 workspace tests pass; full workspace suite green.
Greptile SummaryThis PR switches the default write target for workspace YAML creation from Confidence Score: 5/5Safe to merge — isolated one-line fallback change with thorough test and documentation coverage. Single-line logic change in No files require special attention. Important Files Changed
Reviews (2): Last reviewed commit: "fix(workspace): align bats tests + docs ..." | Re-trigger Greptile |
The previous commit flipped `add_to_allow_builds`'s create-from-scratch default to `aube-workspace.yaml`, but four bats tests still asserted `pnpm-workspace.yaml` was created and several doc/help strings still described the old write target. CI hit this on the bats matrix. - Update bats: approve_builds.bats (install-writes-false + npm-style monorepo), global_install.bats (-g approve-builds), lifecycle_scripts.bats (strictDepBuilds=true). - Sync user-facing prose: approve-builds command help (main.rs + aube.usage.kdl + generated docs/cli/), pnpm-users.md migration matrix, security.md recommended-baseline example header, bun-users.md, lifecycle-scripts.md, and the module doc comments in aube/src/commands/approve_builds.rs + aube-scripts/src/lib.rs. - Drop the CHANGELOG Unreleased entry; release-plz cuts that from the conventional-commit subject. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
When
aube approve-builds(or the install-time auto-seed of unreviewed build scripts) needs to create a workspace yaml from scratch, aube was writingpnpm-workspace.yaml. The lockfile companion isaube-lock.yaml— having the workspace yaml stay pnpm-prefixed is an asymmetry: a freshaube installon a solo project produces a filesystem layout with both names sitting next to each other, mixing vendor namespaces.Switches the default write filename to
aube-workspace.yamlso the two aube-generated files share a naming scheme.Backward compat
Unchanged. The read path already prefers
aube-workspace.yamland falls back topnpm-workspace.yaml(constantWORKSPACE_YAML_NAMES = ["aube-workspace.yaml", "pnpm-workspace.yaml"]incrates/aube-manifest/src/workspace.rs:6). The write path's existing-file precedence is unchanged too: a project that already shipspnpm-workspace.yamlkeeps mutating that file in place. The only behavior change is the fallback when neither file exists — that branch now creates the aube-prefixed name.aube-workspace.yamlpresentpnpm-workspace.yamlpresentaube-workspace.yamlaube-workspace.yaml(unchanged)pnpm-workspace.yamlaube-workspace.yaml← changeTest coverage
add_to_allow_builds_creates_pnpm_workspace_when_no_yamltest to its new behavior (add_to_allow_builds_creates_aube_workspace_when_no_yaml).add_to_allow_builds_writes_to_existing_pnpm_workspacethat pins the backward-compat branch — a project with an existingpnpm-workspace.yamlkeeps using it; noaube-workspace.yamlis created alongside.Test plan
cargo test -p aube-manifest workspace— 24 pass (including the 2 covered above)cargo test --workspace --all-targets— all green (~1500 tests)cargo clippy --workspace --all-targets -- -D warnings— cleancargo fmt --check— clean🤖 Generated with Claude Code
Note
Low Risk
Behavior change is limited to the fallback filename used when creating a new workspace YAML; existing files and build-policy logic remain unchanged.
Overview
Changes the default workspace YAML write target for
allowBuildsupdates: when neitheraube-workspace.yamlnorpnpm-workspace.yamlexists, aube now createsaube-workspace.yamlinstead ofpnpm-workspace.yaml(while still mutating an existingpnpm-workspace.yamlin place for backward compatibility).Updates
approve-builds/lifecycle-script documentation, CLI help text, and bats/unit tests to reflect the new filename and to add coverage that existingpnpm-workspace.yamlfiles are not “forked” into a newaube-workspace.yaml.Reviewed by Cursor Bugbot for commit f353258. Bugbot is set up for automated code reviews on this repo. Configure here.