@ikon85/agent-workflow-kit 0.42.0 → 0.42.1

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/README.md CHANGED
@@ -469,6 +469,10 @@ the old way. Decision record:
469
469
 
470
470
  ## Release notes
471
471
 
472
+ ### 0.42.1
473
+
474
+ - changed: `docs/agents/skills/orchestrate-wave.md`
475
+
472
476
  ### 0.42.0
473
477
 
474
478
  - added: `docs/adr/0010-model-roster-replaces-the-optimization-dial.md`
@@ -1,5 +1,5 @@
1
1
  {
2
- "kitVersion": "0.42.0",
2
+ "kitVersion": "0.42.1",
3
3
  "files": [
4
4
  {
5
5
  "path": ".agents/skills/ask-matt/SKILL.md",
@@ -2,12 +2,165 @@
2
2
  <!-- agent-workflow-kit: project-extension/v1; skill=orchestrate-wave -->
3
3
  # Project layer — orchestrate-wave
4
4
 
5
- These stable sections are intentionally empty until the kit has proven its own landing recipe. The skill uses its generic fallback meanwhile.
5
+ Filled 2026-07-27 after Welle 18 (#289) ran the whole loop end-to-end recon,
6
+ build, integrate, verify, land, tag, publish — and proved the recipe below. The
7
+ sections were deliberately empty until then; the generic fallback carried that
8
+ run and cost it a `degraded` start plus a hand-derivation of every command here.
9
+
10
+ This repo has **no database, no dev server, no typecheck step and no browser
11
+ surface**, so several generic phases collapse to very little. Where that is the
12
+ case the section says so rather than inventing a command.
6
13
 
7
14
  ## §Setup
15
+
16
+ Nothing to start. No DB, no tunnel, no service, no dev server — Phase 0's
17
+ "start what live-verify needs" is a no-op here.
18
+
19
+ Two things that are *not* no-ops:
20
+
21
+ - `git config core.hooksPath .githooks` once per clone (worktrees inherit it).
22
+ - `npm install` in the wave worktree after fast-forwarding to `origin/main` —
23
+ the lockfile is untracked, so dependencies do not travel with the branch.
24
+
8
25
  ## §Builder Commands
26
+
27
+ Per-slice gate, run by the implementer before reporting back:
28
+
29
+ ```sh
30
+ npm test # test:node (node --test) + test:python (unittest)
31
+ ```
32
+
33
+ The fast pre-commit lints run automatically via `.githooks/pre-commit`
34
+ (~3 s, skill/manifest lints). A slice is not "green" on the fast lints alone.
35
+
9
36
  ## §Builder Hard Rules
37
+
38
+ - **Never `--no-verify`.** pre-commit and pre-push are the backstop, not an
39
+ obstacle.
40
+ - **English-first prose** in every published skill; the language census in the
41
+ maintainer suite enforces it.
42
+ - **No hardcoded board values** — labels, headings, field IDs and status names
43
+ come from `docs/agents/board-sync.md`; the portability lint blocks literals.
44
+ - **Dual-surface mirror in the same PR.** A changed `.claude/skills/<s>/SKILL.md`
45
+ needs its `.agents/skills/<s>/SKILL.md` mirror via `codex-adapter-sync` in the
46
+ same PR, never after merge.
47
+ - **Shipped-file changes must preserve the manifest/reconcile contract.**
48
+
10
49
  ## §Integration Suites
50
+
51
+ Both frameworks, every time — `npm test` runs both and a red in either is a red:
52
+
53
+ ```sh
54
+ npm test
55
+ ```
56
+
57
+ - `test:node` — `node --test` (665 tests as of 0.42.0)
58
+ - `test:python` — `python3 -m unittest discover -s scripts -p 'test_*.py'`
59
+ (522 tests as of 0.42.0)
60
+
61
+ There is no typecheck step in this repo; do not look for one. Several
62
+ negative-path tests print `[FAIL] …` lines **by design** — only the runner's own
63
+ summary and exit code decide red or green.
64
+
11
65
  ## §Verify Recipe
66
+
67
+ Central verify is the `/local-ci` full gate, run from the wave worktree root.
68
+ It mirrors the CI `test` job step for step:
69
+
70
+ ```sh
71
+ git fetch origin main
72
+ npm test
73
+ npm run kit:staleness
74
+ npm run release:guard -- --base "$(git merge-base origin/main HEAD)"
75
+ npm pack --dry-run
76
+ ```
77
+
78
+ - **No branch-name-derived guard exists here**, so the generic skill's warning
79
+ about an integrated verify branch blocking with no baseline does not apply.
80
+ No skip or override is needed.
81
+ - **No browser, no headless login, no screenshots, no console check, no DB
82
+ compare, no design/brand check.** This repo ships text; "assert the AC as a
83
+ user-visible outcome" means reading the artefact the slice produced (an ADR,
84
+ a skill body, a script's output) and the tests that pin it.
85
+ - **`release:guard` red with "shipped delta has no version bump" is not a
86
+ failure of the wave** — it means the wave touched the shipped consumer set and
87
+ the release metadata is missing. See §Landing.
88
+ - **A flaky red is possible.** `scripts/codex-exec.test.mjs` contains
89
+ timing-sensitive tests that fail under CPU contention (#345). Re-run the single
90
+ test in isolation before treating it as a real red; a test that is green in
91
+ isolation and red under load is contention, not the wave.
92
+
12
93
  ## §Headless Login
94
+
95
+ Not applicable. No application, no browser surface, no authenticated session.
96
+ Never invent a login recipe for this repo.
97
+
13
98
  ## §Landing
99
+
100
+ **One PR for the whole wave**, base `main`. `main` is protected by the
101
+ `main protection` ruleset: a PR is required, the CI job **`test`** (job name, not
102
+ the workflow name `CI`) must be green with the branch up to date, and there are
103
+ no bypass actors — `gh pr merge --admin` does not help.
104
+
105
+ - `Closes #<n>` on its own line per leaf; `Part of #<anchor>` for the anchor,
106
+ never `closes`.
107
+ - Body via temp file + `--body-file`, and **run `gh` from the repo** (it resolves
108
+ the target repo from the cwd).
109
+
110
+ **Anchor reconcile, on PR create and on merge:**
111
+
112
+ ```sh
113
+ python3 scripts/board-sync.py anchor-sync <anchor#> --dry-run # review first
114
+ python3 scripts/board-sync.py anchor-sync <anchor#>
115
+ ```
116
+
117
+ `anchor-sync` only works on a **promoted** anchor whose body carries a slice
118
+ table between `<!-- slice-table:start -->` and `<!-- slice-table:end -->`. A
119
+ stub-shaped anchor (a bullet list of slices, `wave-stub` label) makes it a no-op
120
+ that exits 1 with "no slice table found — nothing to sync". That is a promotion
121
+ gap, not a sync failure: install the table with the columns
122
+ `| # | Status | Slice | Sub-Issue | Gate | closes/refs |`, drop the `wave-stub`
123
+ label, then re-run. Do not hand-maintain the Status cells afterwards — they are
124
+ regenerated from the board.
125
+
126
+ **Completion, after merge:**
127
+
128
+ ```sh
129
+ python3 scripts/board-sync.py add --issue <anchor#> --status-role done
130
+ gh issue close <anchor#> --reason completed --comment "…"
131
+ python3 scripts/board-sync.py item-of --issue <anchor#> # re-read: status must be Done
132
+ python3 scripts/board-sync.py parent-of <anchor#> # Program-PRD?
133
+ python3 scripts/board-sync.py program-sync <prd#> # after the anchor is Done
134
+ ```
135
+
136
+ Closing the issue does **not** move the board field — set the field, then re-read
137
+ both.
138
+
139
+ **New issues** go through `python3 scripts/board-sync.py create --title … --body-file …`,
140
+ never a bare `gh issue create`.
141
+
142
+ ### Release lockstep
143
+
144
+ There is no deploy and no migration, but there **is** a publication gate, and a
145
+ wave that touches the shipped consumer set (anything in the kit manifest —
146
+ including `docs/adr/*` and `docs/research/*`) drags it along.
147
+
148
+ 1. `npm run release:prepare -- --base origin/main` reports the delta and a
149
+ `recommendedBump` without writing anything.
150
+ 2. **The confirmed Semver is the one human gate.** Ask, unless an explicit
151
+ end-to-end mandate covers release preparation. That confirmed version then
152
+ authorizes metadata, merge, tag *and* publish — do not ask again after merge.
153
+ 3. `npm run release:prepare -- --version <x.y.z>`, commit the bump.
154
+ 4. Merge the PR. Merging **integrates only**; it cannot publish.
155
+ 5. Verify on canonical `main`: tip == merge commit, `package.json` version
156
+ matches, no existing tag. Then `git tag -a v<x.y.z> <main-tip> -m "…"` and
157
+ push. The annotated tag on the `main` tip is the sole publication intent.
158
+ 6. **A red release run does not prove nothing was published.** Read
159
+ `npm view @ikon85/agent-workflow-kit version` and `gh release view v<x.y.z>`
160
+ directly, plus `npm run release:status` (cache-bypassing), before reacting.
161
+ 7. **Recovery is `gh workflow run release.yml -f tag=v<x.y.z>` on the existing
162
+ tag** — the reconciler is idempotent. **Never recover by bumping the version.**
163
+
164
+ The release workflow runs the full suite *after* the tag is pushed, so a flaky
165
+ test strands an already-published tag. That is the recovery path above, not a
166
+ reason to re-tag.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikon85/agent-workflow-kit",
3
- "version": "0.42.0",
3
+ "version": "0.42.1",
4
4
  "description": "Portable AI-agent workflow skills (plan → execute → land → learn) for Claude Code & Codex — grilling, TDD, diagnosis, two-axis code review, cross-model Codex review, design & domain-modeling, plus a skill router (ask-matt). npx init/update/diff/uninstall.",
5
5
  "type": "module",
6
6
  "bin": {