Skip to content

Commit 3b0738a

Browse files
chore(release): unblock 5.3.0 — version lockstep sync + npm-publish chaining (#804)
Every semantic-release run was blocked at the prepublishOnly safety gate: validate-publish.js (Check 5) requires .aiox-core/package.json to match the root version, but semantic-release only bumps the root manifest. Fixes: - scripts/sync-version-lockstep.js: syncs .aiox-core/package.json and compat/aiox-core/package.json (version + @aiox-squads/core dependency pin) to the target version. Idempotent, standalone-usable. - .releaserc.json: @semantic-release/exec prepare step runs the sync with ${nextRelease.version} — the gate now passes inside the release run. - semantic-release.yml: after a non-dry-run release, explicitly dispatch npm-publish.yml (stable, all) via gh workflow run — the GITHUB_TOKEN tag/ release events do not chain workflows (anti-recursion); workflow_dispatch is the documented exception (same pattern as release.yml trigger-npm-publish). Requires the new actions:write permission. - Version bump 5.2.9 -> 5.3.0 committed across the three manifests (repo convention: chore(release) bump PRs), so the chained npm-publish.yml can publish the legacy aiox-core wrapper at 5.3.0 from the committed tree. Context: docs/handoffs (aiox-cockpit) 2026-07-11-env-normalization- consolidation.md, Fase 4. The orphan v5.3.0 tag from the failed attempt was deleted; baseline tag for semantic-release remains v5.2.8 (next: 5.3.0, minor, driven by the feat commits in #800/#801). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 0ad5a9f commit 3b0738a

8 files changed

Lines changed: 328 additions & 9 deletions

File tree

.aiox-core/install-manifest.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
# - SHA256 hashes for change detection
88
# - File types for categorization
99
#
10-
version: 5.2.9
11-
generated_at: "2026-07-10T16:41:41.241Z"
10+
version: 5.3.0
11+
generated_at: "2026-07-11T16:43:33.419Z"
1212
generator: scripts/generate-install-manifest.js
1313
file_count: 1164
1414
files:
@@ -3837,7 +3837,7 @@ files:
38373837
type: monitor
38383838
size: 818
38393839
- path: package.json
3840-
hash: sha256:d8dbe037240a366d545ca4259d2059e705b709706dcf2a18a5a52d9b543b7ed9
3840+
hash: sha256:b9b72ceb7aff3d535f0fbd573eb0f1e37872b115cf91ac5fae17188fea115a2c
38413841
type: other
38423842
size: 1445
38433843
- path: product/checklists/accessibility-wcag-checklist.md

.aiox-core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@aiox-squads/core-internal",
3-
"version": "5.2.9",
3+
"version": "5.3.0",
44
"description": "Internal package manifest for AIOX framework — declares runtime dependencies consumed by scripts under .aiox-core/. This is NOT published independently; it ships inside @aiox-squads/core (the top-level package). Kept name-distinct from the parent (`-internal` suffix) to avoid npm registry confusion. Version follows the parent package.",
55
"private": true,
66
"main": "index.js",

.github/workflows/semantic-release.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ permissions:
4646
issues: write
4747
pull-requests: write
4848
id-token: write
49+
actions: write # chain npm-publish.yml via workflow_dispatch (legacy wrapper + workspace packages)
4950

5051
jobs:
5152
# Release job - CI validation handled by branch protection rules
@@ -172,6 +173,21 @@ jobs:
172173
npx semantic-release
173174
fi
174175
176+
- name: Chain npm-publish (legacy wrapper + workspace packages)
177+
if: inputs.dry_run != true
178+
env:
179+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
180+
run: |
181+
# The tag/release created by semantic-release uses GITHUB_TOKEN, which does
182+
# NOT trigger npm-publish.yml's push/release triggers (GitHub Actions
183+
# anti-recursion). workflow_dispatch via API is the documented exception —
184+
# same pattern release.yml relies on in its trigger-npm-publish job.
185+
# npm-publish.yml is idempotent (should_publish skips versions already in
186+
# the registry), so dispatching after a no-release run is a safe no-op.
187+
gh workflow run npm-publish.yml --ref main -f publish_mode=stable -f packages=all
188+
echo "✅ npm-publish.yml dispatched (stable, all packages)"
189+
echo "### 🔗 Chained npm-publish.yml (stable, all)" >> $GITHUB_STEP_SUMMARY
190+
175191
- name: Release Summary
176192
if: success()
177193
run: |

.releaserc.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
["@semantic-release/npm", {
3535
"npmPublish": true
3636
}],
37+
["@semantic-release/exec", {
38+
"prepareCmd": "node scripts/sync-version-lockstep.js ${nextRelease.version}"
39+
}],
3740
"@semantic-release/github"
3841
]
3942
}

compat/aiox-core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aiox-core",
3-
"version": "5.2.9",
3+
"version": "5.3.0",
44
"description": "Compatibility wrapper for @aiox-squads/core.",
55
"license": "MIT",
66
"bin": {
@@ -15,7 +15,7 @@
1515
"README.md"
1616
],
1717
"dependencies": {
18-
"@aiox-squads/core": "5.2.9"
18+
"@aiox-squads/core": "5.3.0"
1919
},
2020
"engines": {
2121
"node": ">=18"

package-lock.json

Lines changed: 217 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@aiox-squads/core",
3-
"version": "5.2.9",
3+
"version": "5.3.0",
44
"description": "Synkra AIOX: AI-Orchestrated System for Full Stack Development - Core Framework",
55
"bin": {
66
"aiox": "bin/aiox.js",
@@ -171,6 +171,7 @@
171171
},
172172
"devDependencies": {
173173
"@semantic-release/changelog": "^6.0.3",
174+
"@semantic-release/exec": "^7.1.0",
174175
"@semantic-release/git": "^10.0.1",
175176
"@types/jest": "^30.0.0",
176177
"@typescript-eslint/eslint-plugin": "^8.46.2",

0 commit comments

Comments
 (0)