The Verify workspace versions match tag step in .github/workflows/release.yml encodes charter's current convention: all packages/*/package.json versions must match the release tag. This works today because charter does synchronized version bumps across all 11 workspace packages.
If charter ever adopts independent per-package versioning (e.g., @stackbilt/cli@1.0.0 while @stackbilt/blast@0.12.5), this guard needs to be reworked to validate each package against its own expected version rather than against a single tag value.
Current code
TAG="${{ github.event.inputs.tag || github.ref_name }}"
EXPECTED="${TAG#v}"
FAIL=0
for p in packages/*/package.json; do
V=$(node -p "require('./$p').version")
N=$(node -p "require('./$p').name")
if [[ "$V" != "$EXPECTED" ]]; then
echo "::error::$N version $V does not match tag $EXPECTED"
FAIL=1
fi
done
Filed so that any future discussion of per-package versioning surfaces the workflow change as a prerequisite rather than a forgotten dependency. Not urgent — unified versioning works today and there's no concrete plan to migrate.
Originally flagged by CodeBeast review of #118.
The
Verify workspace versions match tagstep in.github/workflows/release.ymlencodes charter's current convention: allpackages/*/package.jsonversions must match the release tag. This works today because charter does synchronized version bumps across all 11 workspace packages.If charter ever adopts independent per-package versioning (e.g.,
@stackbilt/cli@1.0.0while@stackbilt/blast@0.12.5), this guard needs to be reworked to validate each package against its own expected version rather than against a single tag value.Current code
Filed so that any future discussion of per-package versioning surfaces the workflow change as a prerequisite rather than a forgotten dependency. Not urgent — unified versioning works today and there's no concrete plan to migrate.
Originally flagged by CodeBeast review of #118.