@nanobpm/nano-workforce 0.178.4 → 0.178.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release.yml +34 -0
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
|
@@ -17,6 +17,18 @@ on:
|
|
|
17
17
|
# `main`'s HEAD (the merge_group checks are attached to that commit), so a
|
|
18
18
|
# manual recovery still never ships from a red `main`.
|
|
19
19
|
workflow_dispatch:
|
|
20
|
+
# Self-heal a dropped `push:main` event (#725). The `push`→`workflow_run` chain
|
|
21
|
+
# is the ONLY automatic release path, so a single dropped event (a transient
|
|
22
|
+
# Actions delivery hiccup, or the release-App bypass push racing the queue —
|
|
23
|
+
# both hit #722/#723) wedges the release until a human dispatches. This periodic
|
|
24
|
+
# tick re-runs the SAME green-gate against `main` HEAD (`github.sha`) and lets
|
|
25
|
+
# `semantic-release` — which is idempotent (no-ops when nothing is releasable,
|
|
26
|
+
# never republishes an existing version) — backfill the missed run automatically.
|
|
27
|
+
# It never ships from a red `main` (same required-check gate) and the gate's
|
|
28
|
+
# schedule-scoped dedup below runs `semantic-release` at most once per HEAD SHA,
|
|
29
|
+
# so a healthy `main` costs only the tiny gate job per tick.
|
|
30
|
+
schedule:
|
|
31
|
+
- cron: "*/15 * * * *"
|
|
20
32
|
|
|
21
33
|
# Prevent overlapping releases from racing on the same branch.
|
|
22
34
|
concurrency:
|
|
@@ -37,10 +49,12 @@ jobs:
|
|
|
37
49
|
runs-on: ubuntu-latest
|
|
38
50
|
if: >-
|
|
39
51
|
github.event_name == 'workflow_dispatch' ||
|
|
52
|
+
github.event_name == 'schedule' ||
|
|
40
53
|
(github.event.workflow_run.event == 'push' &&
|
|
41
54
|
github.event.workflow_run.head_branch == 'main' &&
|
|
42
55
|
github.event.workflow_run.conclusion == 'success')
|
|
43
56
|
permissions:
|
|
57
|
+
actions: read # schedule dedup: list this workflow's prior runs for the HEAD SHA
|
|
44
58
|
checks: read
|
|
45
59
|
contents: read
|
|
46
60
|
outputs:
|
|
@@ -52,6 +66,7 @@ jobs:
|
|
|
52
66
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
53
67
|
SHA: ${{ github.event.workflow_run.head_sha || github.sha }}
|
|
54
68
|
REPO: ${{ github.repository }}
|
|
69
|
+
EVENT: ${{ github.event_name }}
|
|
55
70
|
run: |
|
|
56
71
|
set -euo pipefail
|
|
57
72
|
# These must ALL be `success` on the release commit before we ship.
|
|
@@ -77,6 +92,25 @@ jobs:
|
|
|
77
92
|
echo "gate: '$name' = ${concl:-missing}"
|
|
78
93
|
[ "${concl:-missing}" = "success" ] || should=false
|
|
79
94
|
done
|
|
95
|
+
# Schedule-scoped dedup (#725). The scheduled tick exists ONLY to backfill a
|
|
96
|
+
# release whose `push:main` trigger was dropped. If any prior Release run has
|
|
97
|
+
# already reached a terminal `success` for this exact HEAD SHA, the analyzer
|
|
98
|
+
# already ran (via `push`/`workflow_dispatch`, or an earlier tick) — the tree
|
|
99
|
+
# is unchanged, so re-running would just spin an idempotent no-op every tick
|
|
100
|
+
# (e.g. when HEAD is a green no-release `chore:`/`ci:` commit). This dedup is
|
|
101
|
+
# gated to `schedule` so it never perturbs the push path's two-trigger race,
|
|
102
|
+
# where the neutral early trigger also concludes `success` and the LATE
|
|
103
|
+
# trigger must still be allowed to release. The in-progress current run is not
|
|
104
|
+
# yet `success`, so it never counts itself out.
|
|
105
|
+
if [ "$EVENT" = "schedule" ] && [ "$should" = "true" ]; then
|
|
106
|
+
handled="$(gh api \
|
|
107
|
+
"repos/$REPO/actions/workflows/release.yml/runs?head_sha=$SHA&status=completed&per_page=100" \
|
|
108
|
+
--jq '[.workflow_runs[] | select(.conclusion=="success")] | length')"
|
|
109
|
+
if [ "${handled:-0}" -gt 0 ]; then
|
|
110
|
+
echo "gate: HEAD $SHA already analysed by a prior successful Release run — nothing to backfill."
|
|
111
|
+
should=false
|
|
112
|
+
fi
|
|
113
|
+
fi
|
|
80
114
|
echo "should_release=$should" >> "$GITHUB_OUTPUT"
|
|
81
115
|
|
|
82
116
|
release:
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [0.178.5](https://github.com/nanobpm/nano-workforce/compare/v0.178.4...v0.178.5) (2026-09-03)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **ci:** self-heal a dropped push:main event via a scheduled release gate ([#726](https://github.com/nanobpm/nano-workforce/issues/726)) ([3e09ec5](https://github.com/nanobpm/nano-workforce/commit/3e09ec50b1ebd71c19f5bde3daf3771a660ba5c2)), closes [722/#723](https://github.com/722/nano-workforce/issues/723) [#725](https://github.com/nanobpm/nano-workforce/issues/725)
|
|
6
|
+
|
|
1
7
|
## [0.178.4](https://github.com/nanobpm/nano-workforce/compare/v0.178.3...v0.178.4) (2026-09-03)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nanobpm/nano-workforce",
|
|
3
|
-
"version": "0.178.
|
|
3
|
+
"version": "0.178.5",
|
|
4
4
|
"description": "Nano Workforce — an Agent Graph Orchestration application for Agentic SDLC: durable BPMN processes that coordinate a graph of AI agents across the software delivery lifecycle.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "main.ts",
|