@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.
@@ -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.4",
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",