Skip to content

Commit bdaeb95

Browse files
TMHSDigitalclaude
andauthored
docs: describe the smoke push trigger and the full release-owned file list (#413)
10fcd33 added a push-to-main trigger to blender-smoke.yml so direct pushes are smoke-tested before release, but AGENTS.md, CONTRIBUTING.md, the PR template and showcase/README.md still said there was no push trigger (or no path filter at all). Agents and contributors use these as merge-evidence policy. Also correct, from the workflows as they are now: release.yml runs on every push and gates on commit type plus release-gate.sh (no path filter); floating tags are v<major> and v<major>.<minor>, not v0.1; drift-check is SHA-pinned; label-sync no longer force-recreates labels; and the release-owned version fields include both .claude-plugin files, not only .cursor-plugin/plugin.json. Closes #393 Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent ea853a1 commit bdaeb95

5 files changed

Lines changed: 38 additions & 26 deletions

File tree

‎.github/PULL_REQUEST_TEMPLATE.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ Label every claim.
1717
- **live-run-proven:** exact binary path + the version that binary printed (`blender --version`). Headless harness only. Live MCP does not count.
1818
- **inspection-only:** read the skill / diff / RNA docs; no process ran.
1919

20-
`blender-smoke.yml` has no `push` trigger. Post-merge smoke evidence is the PR-head 5.2 + 4.5 jobs (state the versions from those logs). Apply `needs-5.1` when 5.1 must be CI-proven on the PR; default matrix does not include it.
20+
Merge evidence is the PR-head 5.2 + 4.5 smoke jobs (state the versions from those logs). Smoke also re-runs on the push to `main`; the release gate uses that run only for direct pushes. Apply `needs-5.1` when 5.1 must be CI-proven on the PR; default matrix does not include it.
2121

2222
## Release-owned fields — do not hand-edit
2323

24-
`VERSION`, `CHANGELOG.md`, CLAUDE.md `**Version:**`, ROADMAP.md `**Current:**`, `.cursor-plugin/plugin.json` `"version"`. The release pipeline rewrites those. Do not bump `standards-version` unless the fleet stamp actually moved.
24+
`VERSION`, `CHANGELOG.md`, CLAUDE.md `**Version:**`, ROADMAP.md `**Current:**`, and `"version"` in `.cursor-plugin/plugin.json`, `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`. The release pipeline rewrites those. Do not bump `standards-version` unless the fleet stamp actually moved.
2525

2626
## Checklist
2727

‎AGENTS.md‎

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,14 @@ Blender-Developer-Tools/
7676
- **Squash-merge with branch deletion is the standard.** The PR becomes one
7777
commit on `main`; delete the remote feature branch after merge, then
7878
fast-forward local `main`.
79-
- **Smoke jobs do not re-run on the merge SHA.** `blender-smoke.yml` triggers
80-
on `pull_request` (plus a weekly schedule and manual dispatch) — there is no
81-
`push` trigger. The correct post-merge evidence for example changes is:
82-
both Blender smoke jobs (5.2 LTS and 4.5 LTS) passed on the PR head SHA that
83-
became the sole squash-merged commit, with the actual binary versions
84-
confirmed in the job logs.
79+
- **Smoke runs on the PR head and again on `main`.** `blender-smoke.yml`
80+
triggers on `pull_request`, on `push` to `main` (both with the same
81+
`paths-ignore`: `**.md`, `docs/**`, `assets/**`), weekly, and on manual
82+
dispatch. The merge evidence for example changes is still both Blender smoke
83+
jobs (5.2 LTS and 4.5 LTS) passing on the PR head SHA that became the sole
84+
squash-merged commit, with the actual binary versions confirmed in the job
85+
logs. The push run is what `release-gate.sh` waits for on a direct push to
86+
`main`; for a PR merge the gate reads the PR's own checks.
8587
- **Post-merge, verify green on `main`:** Release (`release.yml`), Validate
8688
(`validate.yml`), Ecosystem drift check (`drift-check.yml`), and Deploy
8789
GitHub Pages (`pages.yml`; paths-filtered, so it does not trigger for every
@@ -92,7 +94,8 @@ Blender-Developer-Tools/
9294
unresolved — wait before merging.
9395
- **Release-owned fields are never hand-edited:** `VERSION`, `CHANGELOG.md`,
9496
the CLAUDE.md `**Version:**` line, the ROADMAP.md `**Current:**` line, and
95-
the manifest `"version"` in `.cursor-plugin/plugin.json`. Generated gallery
97+
the manifest `"version"` in `.cursor-plugin/plugin.json`,
98+
`.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json`. Generated gallery
9699
pages under `docs/gallery/` are regenerated via `scripts/build_gallery.py`,
97100
never hand-edited.
98101
- **Evidence over assertion:** PR bodies must label what was proven by live
@@ -170,23 +173,30 @@ way, and a one-paragraph rationale. 30 to 80 lines is the right size.
170173
5.2 LTS and 4.5 LTS for every PR. 5.1 is weekly cron, the opt-in
171174
`needs-5.1` PR label (`pull_request` types include `labeled`), or
172175
`workflow_dispatch` with a `series` input. Auto-label does not apply
173-
`needs-5.1`. Contributor-facing notes for the smoke lever, the deliberate
174-
lack of a `push` trigger, Pages path filters, and the three-role exit-code
176+
`needs-5.1`. It also runs on `push` to `main` (same `paths-ignore`), which
177+
is what the release gate waits for on a direct push. Contributor-facing
178+
notes for the smoke lever, Pages path filters, and the three-role exit-code
175179
convention live in CONTRIBUTING.md. Examples run
176180
through `tests/smoke/run_example.py` (catalog: `tests/smoke/catalog.json`).
177181
SKIP is exit 77 plus a `SMOKE_SKIP:` reason, and only when `--min-version`
178182
is above this Blender; exit 0 with that marker is a vacuous pass and fails.
179183
Post-exit sidecars are opt-in (`--expect-sidecar`). A leg with zero PASSes
180184
is red. A new example is not shipped until it has a catalog row.
181185
- `drift-check.yml` consumes `Developer-Tools-Directory/.github/actions/
182-
drift-check@v1.15` to enforce ecosystem standards-version markers.
183-
- `release.yml` auto-bumps the version, tags, force-updates floating tags
184-
`v0` and `v0.1`, and runs `release-doc-sync@v1` to rewrite CHANGELOG.md,
185-
CLAUDE.md `**Version:**`, and ROADMAP.md `**Current:**`. It also rewrites
186-
the `"version"` line in `.cursor-plugin/plugin.json` so the manifest tracks
187-
each release. Triggered on push to `main` for content-changing paths only.
188-
- `label-sync.yml` self-heals labels via `gh label create --force` per
189-
label, then applies them to the PR.
186+
drift-check`, pinned by SHA (the pin's comment names the tag), to enforce
187+
ecosystem standards-version markers.
188+
- `release.yml` runs on every push to `main` (no path filter). It releases
189+
only when a commit subject in range is `feat:`/`fix:`/breaking, and only
190+
after `.github/scripts/release-gate.sh` sees green CI for the SHA. It then
191+
bumps the version, tags `vX.Y.Z`, force-updates the floating tags
192+
`v<major>` and `v<major>.<minor>` (currently `v0` and `v0.143`), runs
193+
`release-doc-sync` to rewrite CHANGELOG.md, CLAUDE.md `**Version:**`, and
194+
ROADMAP.md `**Current:**`, rewrites the `"version"` in
195+
`.cursor-plugin/plugin.json`, `.claude-plugin/plugin.json` and
196+
`.claude-plugin/marketplace.json`, and force-pushes the slim plugin build
197+
to the `plugin-dist` branch.
198+
- `label-sync.yml` creates any missing label and applies path-based labels
199+
to same-repo PRs.
190200
- `pages.yml` builds the landing page from the **locally vendored** template
191201
at `scripts/site/` (originally scaffolded from Developer-Tools-Directory's
192202
site-template, now owned by this repo — the fleet template only scaffolds

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ The AI consumes content via:
241241

242242
## Release Hygiene
243243

244-
The release pipeline is automated via `release.yml` on push to `main` for content-changing paths. The `release-doc-sync@v1` step rewrites CHANGELOG.md, this CLAUDE.md `**Version:**` line, and ROADMAP.md `**Current:**` line on each release. Never hand-edit those lines, the action owns them.
244+
The release pipeline is automated via `release.yml` on every push to `main`; it releases only for `feat:`/`fix:`/breaking commit subjects and only after `release-gate.sh` sees green CI. The `release-doc-sync@v1` step rewrites CHANGELOG.md, this CLAUDE.md `**Version:**` line, and ROADMAP.md `**Current:**` line on each release. Never hand-edit those lines, the action owns them.
245245

246246
When adding content to a future version:
247247

‎CONTRIBUTING.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,11 @@ Default PR smoke is Blender 5.2 and 4.5 (`.github/workflows/blender-smoke.yml`).
148148
pick the branch and the `series` input.
149149
- Monday 07:00 UTC cron still runs 5.2, 5.1, and 4.5. Do not treat cron as
150150
PR evidence.
151-
- **There is deliberately no `push` trigger on `blender-smoke.yml`.**
152-
Squash-merging a green PR makes `main` identical to the content already
153-
smoke-tested, so a push job would re-prove the same tree at double the
154-
CI cost. Absence of post-merge smoke is not a coverage gap.
151+
- **`blender-smoke.yml` also runs on `push` to `main`**, with the same
152+
`paths-ignore` as pull requests. It exists so a direct push to `main` is
153+
smoke-tested before `release.yml` releases it: the release gate waits for
154+
that run. For a merged PR the gate reads the PR's own checks, so the PR-head
155+
5.2 and 4.5 jobs remain the merge evidence.
155156
- **`pages.yml` is path-filtered.** A workflow-or-docs-only merge does not
156157
deploy Pages. Observed on `13ea521` (`ci:` #137): Validate, drift-check,
157158
and Release ran; Pages did not. Intentional, not a failed job.

‎showcase/README.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -798,5 +798,6 @@ contact patch on the ground).
798798
## Smoke
799799

800800
`tests/smoke/catalog.json` takes opaque script paths. A showcase row is
801-
enough; `blender-smoke.yml` has no path filter and runs the whole catalog
802-
on every PR. Measure wall-clock before adding the next piece.
801+
enough; `blender-smoke.yml` runs the whole catalog on every PR and every
802+
push to `main` that touches a file outside its `paths-ignore` (`**.md`,
803+
`docs/**`, `assets/**`). Measure wall-clock before adding the next piece.

0 commit comments

Comments
 (0)