From 753a7234500bba4abfcdf3d1b8dfe97c61e5c913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Guilhermo=20de=20Barros=20Val=C3=A9rio?= Date: Sat, 17 Oct 2026 05:45:18 +0200 Subject: [PATCH] release: v0.16.0 The version moves to 0.16.0 in plugin.json, flake.nix and every documented pin, and the Unreleased CHANGELOG section becomes v0.16.0. It carries #163: wiring.py fails on a dispatch whose type it cannot read, and the new `wiring.py --lint-devkit`, run in devkit-ci, fails on that or on a devkit listener with no devkit sender. It is a minor for the new flag; nothing in it is breaking. This is the first release since every consumer has a bump-ready caller on main, so its bump PRs are marola-dev/marola#859's live test: each should merge within minutes of its CI going green. Part of marola-dev/marola#859 Tested: python3 scripts/release.py --check 0.16.0 rc=0; every changed line is the same line with 0.15.1 -> 0.16.0 plus the CHANGELOG heading; devkit-quality.sh (incl. --lint-devkit) rc=0 Co-Authored-By: Claude --- .github/workflows/notify-devkit-test.yml | 2 +- .github/workflows/notify-devkit.yml | 2 +- .github/workflows/notify-umbrella.yml | 2 +- CHANGELOG.md | 2 +- README.md | 18 ++++----- docs/4-reference_workflows.md | 38 +++++++++---------- flake.nix | 2 +- .../marola-devkit/.claude-plugin/plugin.json | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/notify-devkit-test.yml b/.github/workflows/notify-devkit-test.yml index 215346e..b4cad8c 100644 --- a/.github/workflows/notify-devkit-test.yml +++ b/.github/workflows/notify-devkit-test.yml @@ -8,6 +8,6 @@ permissions: {} jobs: notify: - uses: marola-dev/marola-devkit/.github/workflows/notify-devkit.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/notify-devkit.yml@v0.16.0 secrets: pr_bot_key: ${{ secrets.PR_BOT_KEY }} diff --git a/.github/workflows/notify-devkit.yml b/.github/workflows/notify-devkit.yml index 8a74cce..c6f9d89 100644 --- a/.github/workflows/notify-devkit.yml +++ b/.github/workflows/notify-devkit.yml @@ -15,7 +15,7 @@ # jobs: # notify: # if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_repository.full_name == github.repository -# uses: marola-dev/marola-devkit/.github/workflows/notify-devkit.yml@v0.15.1 +# uses: marola-dev/marola-devkit/.github/workflows/notify-devkit.yml@v0.16.0 # secrets: # pr_bot_key: ${{ secrets.PR_BOT_KEY }} # diff --git a/.github/workflows/notify-umbrella.yml b/.github/workflows/notify-umbrella.yml index 98fce8e..929a021 100644 --- a/.github/workflows/notify-umbrella.yml +++ b/.github/workflows/notify-umbrella.yml @@ -13,7 +13,7 @@ # branches: [main] # jobs: # notify: -# uses: marola-dev/marola-devkit/.github/workflows/notify-umbrella.yml@v0.15.1 +# uses: marola-dev/marola-devkit/.github/workflows/notify-umbrella.yml@v0.16.0 # secrets: # pr_bot_key: ${{ secrets.PR_BOT_KEY }} # diff --git a/CHANGELOG.md b/CHANGELOG.md index e270c91..0ddcd4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Each release moves `plugin.json`'s `version`, the flake package version and ever together. A consumer adopts one by bumping its flake input, its workflow `@v…`/`devkit-ref` and its marketplace `ref` at once. -## Unreleased +## v0.16.0 — 2026-10-17 - `wiring.py` reports a `/dispatches` call whose type it cannot read, and `--check` fails on it; `wiring.py --lint-devkit` fails on that, or on a `repository_dispatch` type no devkit workflow sends, in the devkit's own workflows, and devkit CI runs it on every PR (#163). diff --git a/README.md b/README.md index ddc4986..56a451b 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@ and trailer tools, the git hooks, the org invariants block, the issue forms and workflows, and a Claude Code plugin with the generic skills, agents and hooks. Every marola repo consumes it at a pinned version, and its own AGENTS.md says which pieces it opts out of. -**Status:** this is v0.15.1; each repo pins its own version. Changes per release are in +**Status:** this is v0.16.0; each repo pins its own version. Changes per release are in [CHANGELOG.md](https://github.com/marola-dev/marola-devkit/blob/main/CHANGELOG.md). ## Try it ```bash -nix run github:marola-dev/marola-devkit/v0.15.1#docs-lint -- --self-test # any tool, no checkout +nix run github:marola-dev/marola-devkit/v0.16.0#docs-lint -- --self-test # any tool, no checkout nix develop # in a checkout: every tool on PATH, plus the lint toolchain just quality # this repo's gates claude --plugin-dir plugins/marola-devkit # the plugin, from this checkout @@ -83,7 +83,7 @@ The vendored skills are pinned in `plugins/marola-devkit/skills/skills.lock` ```nix inputs.marola-devkit = { - url = "github:marola-dev/marola-devkit/v0.15.1"; + url = "github:marola-dev/marola-devkit/v0.16.0"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -103,7 +103,7 @@ import? '.devkit/devkit.just' A repo that defines a recipe with the same name needs `set allow-duplicate-recipes`. -Each tool is also a flake app: `nix run github:marola-dev/marola-devkit/v0.15.1#uprd`. +Each tool is also a flake app: `nix run github:marola-dev/marola-devkit/v0.16.0#uprd`. **Git hooks** are opt-in: `git config core.hooksPath .devkit/.githooks`. The contract a consuming repo implements is two recipes in its own justfile: @@ -132,7 +132,7 @@ working exactly as before. { "extraKnownMarketplaces": { "marola-devkit": { - "source": { "source": "github", "repo": "marola-dev/marola-devkit", "ref": "v0.15.1" } + "source": { "source": "github", "repo": "marola-dev/marola-devkit", "ref": "v0.16.0" } } }, "enabledPlugins": { "marola-devkit@marola-devkit": true } @@ -205,9 +205,9 @@ One caller, needing a second checkout of this repo for its own scripts: ```yaml jobs: agents-check: - uses: marola-dev/marola-devkit/.github/workflows/agents-check.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/agents-check.yml@v0.16.0 with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 ``` This repo calls five of them on its own pull requests (`python-ci`, `static-ci` and @@ -237,12 +237,12 @@ on: jobs: gemini: if: github.event.requested_team.slug == 'gemini' - uses: marola-dev/marola-devkit/.github/workflows/gemini-review.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/gemini-review.yml@v0.16.0 secrets: # not `inherit`: merge-key-check rejects it in a repo that holds the merge key GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} PR_BOT_KEY: ${{ secrets.PR_BOT_KEY }} with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 check-command: "" # a fast gate that needs no Nix, e.g. node scripts/site_check.js ``` diff --git a/docs/4-reference_workflows.md b/docs/4-reference_workflows.md index ad5ad9b..81dfb5d 100644 --- a/docs/4-reference_workflows.md +++ b/docs/4-reference_workflows.md @@ -36,7 +36,7 @@ those if it wants them. ```yaml jobs: build-test: - uses: marola-dev/marola-devkit/.github/workflows/scala-ci.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/scala-ci.yml@v0.16.0 ``` | Input | Default | Notes | @@ -55,7 +55,7 @@ Ruff check + format, then a caller-supplied newline list of self-test commands ( ```yaml jobs: python-ci: - uses: marola-dev/marola-devkit/.github/workflows/python-ci.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/python-ci.yml@v0.16.0 with: self-test-commands: | python3 scripts/release.py --self-test @@ -88,7 +88,7 @@ with a justfile: ```yaml jobs: static-ci: - uses: marola-dev/marola-devkit/.github/workflows/static-ci.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/static-ci.yml@v0.16.0 with: hadolint-files: | Dockerfile @@ -129,7 +129,7 @@ on: branches: [main] jobs: notify: - uses: marola-dev/marola-devkit/.github/workflows/notify-umbrella.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/notify-umbrella.yml@v0.16.0 secrets: pr_bot_key: ${{ secrets.PR_BOT_KEY }} ``` @@ -168,7 +168,7 @@ permissions: {} jobs: notify: if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_repository.full_name == github.repository - uses: marola-dev/marola-devkit/.github/workflows/notify-devkit.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/notify-devkit.yml@v0.16.0 secrets: pr_bot_key: ${{ secrets.PR_BOT_KEY }} ``` @@ -195,9 +195,9 @@ on: workflow_dispatch: jobs: sync: - uses: marola-dev/marola-devkit/.github/workflows/labels-sync.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/labels-sync.yml@v0.16.0 with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 ``` | Input | Default | Notes | @@ -231,9 +231,9 @@ Compares this repo's `AGENTS.md` invariants block against the pinned devkit's `a ```yaml jobs: agents-check: - uses: marola-dev/marola-devkit/.github/workflows/agents-check.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/agents-check.yml@v0.16.0 with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 ``` | Input | Default | Notes | @@ -271,11 +271,11 @@ on: branches: [main] jobs: api-docs: - uses: marola-dev/marola-devkit/.github/workflows/api-docs.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/api-docs.yml@v0.16.0 permissions: contents: write with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 ``` The calling job needs `permissions: contents: write` even though only the `publish` sub-job uses @@ -312,9 +312,9 @@ on: types: [opened, reopened, ready_for_review, synchronize, labeled, unlabeled] jobs: fill: - uses: marola-dev/marola-devkit/.github/workflows/pr-body.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/pr-body.yml@v0.16.0 with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 ``` | Input | Default | Notes | @@ -344,7 +344,7 @@ on: types: [closed] jobs: cancel: - uses: marola-dev/marola-devkit/.github/workflows/ci-short-circuit.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/ci-short-circuit.yml@v0.16.0 ``` No inputs, no secrets. Uses the default `GITHUB_TOKEN` (`actions: write`, declared in the @@ -383,12 +383,12 @@ on: jobs: gemini: if: github.event.requested_team.slug == 'gemini' - uses: marola-dev/marola-devkit/.github/workflows/gemini-review.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/gemini-review.yml@v0.16.0 secrets: # not `inherit`: merge-key-check rejects it in a repo that holds the merge key GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} PR_BOT_KEY: ${{ secrets.PR_BOT_KEY }} with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 check-command: "" # e.g. node scripts/site_check.js ``` @@ -425,9 +425,9 @@ permissions: pull-requests: write jobs: update: - uses: marola-dev/marola-devkit/.github/workflows/skills-update.yml@v0.15.1 + uses: marola-dev/marola-devkit/.github/workflows/skills-update.yml@v0.16.0 with: - devkit-ref: v0.15.1 + devkit-ref: v0.16.0 secrets: pr_bot_key: ${{ secrets.PR_BOT_KEY }} ``` @@ -446,7 +446,7 @@ when `pr_bot_key` is absent. With neither, the job behaves as before. ## bot-token (composite action) -`uses: marola-dev/marola-devkit/.github/actions/bot-token@v0.15.1` mints an installation token for +`uses: marola-dev/marola-devkit/.github/actions/bot-token@v0.16.0` mints an installation token for `marola-pr-bot` or `marola-merge-bot` on named `marola-dev` repos, and points git at that bot's identity for the rest of the job (MIP-0086 §5.4). A composite action cannot read secrets, so the caller passes `app-id` (`vars.PR_BOT_APP_ID` or `vars.MERGE_BOT_APP_ID`) and `private-key` diff --git a/flake.nix b/flake.nix index 12f4304..920b09b 100644 --- a/flake.nix +++ b/flake.nix @@ -65,7 +65,7 @@ # find lib/, fixtures/, .github/labels.yml and agents/invariants.md relative to themselves. devkit = pkgs.stdenvNoCC.mkDerivation { pname = "marola-devkit"; - version = "0.15.1"; + version = "0.16.0"; src = lib.cleanSource self; nativeBuildInputs = [ pkgs.makeWrapper ]; buildInputs = [ pkgs.bash python ]; diff --git a/plugins/marola-devkit/.claude-plugin/plugin.json b/plugins/marola-devkit/.claude-plugin/plugin.json index e86f986..815feac 100644 --- a/plugins/marola-devkit/.claude-plugin/plugin.json +++ b/plugins/marola-devkit/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "marola-devkit", - "version": "0.15.1", + "version": "0.16.0", "description": "MIP and issue-flow skills, the MIP reviewer agents, and the format/stop/session hooks shared by every marola repo (MIP-0070)", "author": { "name": "marola-dev"