Repository navigation
fix(kaizen): apply the core/ops split review fixes (Kaizen 4.1.1, kaizen-ops 1.0.1) - #40
Merged
Merged
Conversation
…d too Review findings #1 and #9 (core/ops split review). The relaxed contract accepted a moved command name on any line that also named its kaizen-ops replacement, so a skill could again send Claude to /kaizen:deploy with CI green. Both plugins now accept a former name only as `/kaizen:x → /kaizen-ops:x`, never in skills or agents; a changelog is exempt only for the three moved names. A new contract greps scripts, hooks and evals for the old names (status next steps, hook messages, eval prompts). The troubleshooting row is rewritten as a migration note. Proven by injecting both failures by hand: each turns the contracts red. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012iZk6aQ3fhJy4jrZhfWtaf
…dit agrees with doctor Review findings #2, #6 and #10. opsNeeded(root, config) now also counts a production history — postmortems in docs/postmortems/, deploy/, rollback/, incident/ or resolve/ tags — so a team that only used /kaizen:postmortem and upgrades 3.10 → 4.1 (stubs gone) is told to enable kaizen-ops; the warning names the reason. audit's claude_settings is no longer "ok" when kaizen-ops@dojo is needed but not declared for every clone, and `audit fix claude_settings` follows the same rule. Stale guide path in an audit.mjs comment reworded. Tests: postmortems-only and tags-only repos, audit without kaizen-ops. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012iZk6aQ3fhJy4jrZhfWtaf
…rsion when incompatible Review findings #3, #7, #8, #11 and #12. A core killed by a signal now exits 128+signal with an explicit message instead of 1, which core uses for a monitor verdict (breach or blind). A missing or unreadable requires.json refuses every call instead of accepting any core. `--version` answers before the version gate, flagged INCOMPATIBLE (exit 1) — the command one runs to diagnose a mismatch; `core-root` stays gated. Tests read the plugin and required versions instead of hard-coding them, cover the three new behaviours (signal test skipped on Windows), and the contract uses compareSemver. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012iZk6aQ3fhJy4jrZhfWtaf
…izen-ops 1.0.1 The core contract forbids core scripts and hooks from loading or resolving a path into kaizen-ops; naming its plugin id or /kaizen-ops: commands is fine. Versions, changelogs, kaizen-ops README and CLAUDE.md updated for the review fixes; plan DoD notes the review done and #4 pending. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_012iZk6aQ3fhJy4jrZhfWtaf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes from the Kaizen review of the core/ops split (PRs #36–#38), one commit per group:
bd0afbc): a moved command name (/kaizen:deploy|monitor|postmortem) now passes only as an`old` → `new`migration note outsideskills//agents/(both plugins); changelogs are exempt for the three moved names only. A new contract checks core scripts, hooks and evals for the old names.195cef2):doctor'sops_pluginalso fires for repos with postmortems or deploy/rollback/incident/resolve tags (opsNeededreturns the reason);githooksandaudit claude_settingsuse the same rule, so audit no longer says "present" when doctor warns.94c8cfd): a core killed by a signal exits128 + signalwith a message (never1, a monitor verdict); missingrequires.jsonfails closed;--versionanswers with an incompatible core, flaggedINCOMPATIBLE; tests read versions from the manifests;compareSemvershared with the ops contract.f144bb3): the core contract test is named after what it enforces (no loading/resolving into kaizen-ops); Kaizen 4.1.1, kaizen-ops 1.0.1, changelogs, README, CLAUDE.md, plan DoD.Also carries
ef26339(learning: one plugin running another plugin's CLI).Finding #4 (one core lookup shared by the git hooks and the resolver) is a design choice, proposed separately.
Test plan
node --test plugins/kaizen/tests/*.test.mjs plugins/kaizen-ops/tests/*.test.mjs→ 201 pass, 0 fail/kaizen:deploynext to its replacement and a script line naming/kaizen:postmortem: both turned the contracts red (reverted)kaizen plan checkon the split plan ✔Generated by Claude Code