sonmat follows Semantic Versioning: MAJOR.MINOR.PATCH.
| When to bump | Example | |
|---|---|---|
| MAJOR | Breaking changes — discipline structure, skill interface, or hook contract changes that require users to update their setup | 1.0.0 → 2.0.0 |
| MINOR | New features — new skills, new domain hints, multi-CLI support, new capabilities that don't break existing setups | 0.2.1 → 0.3.0 |
| PATCH | Fixes — typos, wording improvements, bug fixes in hooks/scripts | 0.3.0 → 0.3.1 |
-
Update version in all plugin manifests:
.claude-plugin/plugin.json→"version": "X.Y.Z".claude-plugin/marketplace.json→"version": "X.Y.Z"(appears twice).codex-plugin/plugin.json→"version": "X.Y.Z"
-
Commit:
git add -A git commit -m "release: vX.Y.Z — (one-line summary)" -
Tag:
git tag vX.Y.Z git push origin main --tags
| Version | Date | Summary |
|---|---|---|
0.17.1 |
2026-08-29 | Align guard's metadata with its documented role as an automatic main-side verification layer. guard is no longer exposed as a user-invocable skill; its Codex starter prompt now asks for the concrete verification action instead of naming the internal axis. |
0.17.0 |
2026-08-29 | Add native Codex packaging and separate harness semantics. A new .codex-plugin/plugin.json exposes all skills through Codex's plugin system. SessionStart detects Codex through PLUGIN_DATA, injects the discipline working command as session context, and never creates or edits CLAUDE.md or AGENTS.md; Claude Code keeps its existing prompt-first bootstrap unchanged. Three Codex custom-agent TOMLs ship under codex/agents/, with an explicit idempotent installer that preflights all destinations and refuses local drift unless --force is requested. Added shell regression coverage for both harness branches and installer conflict handling. ADR docs/decisions/2026-08-29-codex-native-adapter.md. |
0.16.1 |
2026-08-25 | Docs-only terminology alignment: OpenRabbit → OpenHuman across seven ADRs and one research note (86 occurrences, plus eight handoff-path references memory/domain/openrabbit.md → openhuman.md). The April–May 2026 records were written while the commercial channel name was still undecided and used the working name; the name has since settled. No discipline, skill, hook, or template file changes — runtime behaviour is identical to 0.16.0, so this is a wording patch in the sense of the PATCH row above. Recovery note: seven of the eight files had been converted on a secondary machine on 2026-07-19 but were lost to an uncommitted working tree when that machine cut power mid-session (the repo took object corruption the same night); the work was recovered as a patch during a 2026-08-25 multi-mount sync and completed with the eighth file. |
0.16.0 |
2026-07-13 | Fold transmission discipline into the discipline — the rule that an artifact is only as good as it lands in this reader's head. Triggered by a review of the maintainer's own Korean notes: the same author writes clean English discipline docs and opaque Korean prose, because worn-flat English metaphors (stance, orthogonal, reside) come back to life as live figures when transliterated (자세, 직교, 거주) and end up standing in place of the claim rather than on top of it. Not a new principle — it is See as a stranger applied to prose, so it is planted along the file contracts rather than in one place: core.md sharpens the existing rule with receiver relativity (name the receiver before judging the prose — the identical sentence is innocent in a private note and guilty in a handoff); hints.md → Document gains a Transmission subsection with the three tests (name the receiver / delete test — strike the metaphor, keep it if the claim survives, rewrite if it collapses / no undecided transfer — spell out who decides, what, and why it's open); hints.md → Korean gains a Writing Korean output half (the transliteration trap above + telegraphic Korean shedding particles and predicates, and with them the who/what/why), and its heading now splits reading-input from writing-output — the section previously had no eyes on the output side. ADR docs/decisions/2026-07-13-transmission-discipline.md. |
0.15.1 |
2026-07-10 | Fix SessionStart hook failing on Unix/macOS with exit 127. The hook command wrapped the plugin-root reference in single quotes ('${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd' session-start), which blocks the shell from expanding the CLAUDE_PLUGIN_ROOT env var Claude Code sets for plugin hooks — /bin/sh received the literal string and reported ${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd: not found on every session start (red banner). The bare invocation also required the polyglot file to be executable, but install ships it mode 644 → Permission denied even once the path expands. Switched to the interpreter-prefixed, double-quoted form every official Anthropic plugin uses: bash "${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd" session-start — env var expands, no +x needed (bash reads the file), polyglot's Windows branch preserved (dead under bash but harmless). Broken on Unix since the polyglot landed (v0.2.1); Windows unaffected. Empirically confirmed across CC 2.1.81–2.1.205. ADR docs/decisions/2026-07-10-hook-command-quoting-fix.md. |
0.15.0 |
2026-06-12 | Plant the discipline working command for fresh users. The ## sonmat block the hook plants was paths-only — it gave the discipline files' locations but no standing instruction to read and apply them, so a fresh install engaged the discipline only weakly (skills work when invoked, workers get it via autoloop, but the main session had no default doubt-and-verify posture). The README claimed "Claude reads the discipline through the normal CLAUDE.md loading path," but a path bullet is not an imperative. The session-start hook now also plants a marker-delimited Thinking Discipline (sonmat) block carrying the read-and-apply working command. Idempotent (marker-guarded) and skipped when the user already keeps their own discipline section (a core.md + apply-premise sentinel), so it never duplicates a hand-written one — maintainer machines are untouched. Stays prompt-first (lands in always-loaded CLAUDE.md, no additionalContext). ADR docs/decisions/2026-06-12-discipline-working-command-plant.md. |
0.14.0 |
2026-05-23 | Move sonmat state out of .claude/ — Claude Code edit-protects every .claude/ dir (project-level too, not just ~/.claude/ as previously assumed; verified empirically), prompting on each scribe write, unsuppressable except bypassPermissions. Scribe logs now resolve to $SONMAT_PROJECTS_BASE/<slug> (default ~/.sonmat/projects/<slug>, where <slug> is the cwd path with /→-, mirroring Claude Code's own ~/.claude/projects/ — full path, not basename, so same-named/nested projects don't collide); universal memory to $SONMAT_MEMORY_DIR (default ~/.sonmat/memory/). The override vars let an integrating framework (e.g. munteok) redirect state into its own home. session-start hook auto-migrates legacy .claude/sonmat/ + ~/.claude/sonmat/memory/ (idempotent, sandbox-tested; skips symlinked memory an integrator manages); skills/agent read the legacy path as fallback → non-breaking. Updated scribe/autoloop/punch SKILL + sonmat-scribe agent + the planted ## sonmat CLAUDE.md block. ADR docs/decisions/2026-05-23-scribe-state-out-of-claude.md. Rollout depends on the v0.13.4 notification reaching users. |
0.13.4 |
2026-05-23 | Fix update propagation — the auto-update block was doubly broken: (1) git pull targeted the cached install (~/.claude/plugins/cache/.../{version}/), which is not a git repo, so it always failed; (2) the computed UPDATE_MSG was never appended to the hook's additionalContext output — dead code that never reached Claude. Replaced with a working version-mismatch notification: detects cache-version vs remote-main mismatch and (via MSGS → additionalContext) tells the user to run /plugin update sonmat@sonmat + /reload-plugins. Removed in-place git-pull (impossible under CC's cache model — CC owns the update via re-cache on version bump). Division of labor: sonmat = notify, CC = apply. Prerequisite for the scribe-state-out-of-.claude migration. ADR docs/decisions/2026-05-23-update-notification-fix.md. |
0.13.3 |
2026-05-20 | Add "Deep module over shallow" hint to hints.md Dev domain (Ousterhout, A Philosophy of Software Design). A good module is deep — large functionality behind a narrow interface; splitting files (blocking) alone breeds shallow modules unless the interface surface narrows with the implementation. Lists shallow warning signs (cross-module private imports, single-file LOC ballooning, many leaking private helpers) and the "substantial new code → its own module, not the monolith" rule. Empirical trigger: maritime-monitor 2026-05-20 deep-module violations (C1–C5) resolved; 류선생's "blocking + surface simplification" intuition matched to APoSD. Detail in memory/domain/deep_module_design.md. (Single-bullet addition — patched per 류선생 vs the MINOR-for-new-hints convention.) |
0.13.2 |
2026-05-19 | Devil balance table readability — rename columns "Counter (strong/moderate/weak)" → "Claim fragility" and "Claim after challenge" → "Status after verification". The old labels phrased the reader's mental work as a translation step (counter strength → claim status; challenge → verification outcome); the new labels move that translation up-front into the column header so the table reads in a single direction. Adds column-semantics block explicitly stating that fragility is the inverse of counter strength, and that off-project means the counter was tangential. User-reported (류선생, 2026-05-19) — the prior "Counter" label was ambiguous (counter's own strength vs claim's vulnerability) and "challenge" was less precise than "verification". |
0.13.1 |
2026-05-05 | Fix SessionStart hook JSON validation — add required hookEventName: "SessionStart" field inside hookSpecificOutput. Recent Claude Code releases (≥2.1.x) reject the prior schema with "Hook JSON output validation failed", surfacing a red error banner on every session start. Reported by @eunbi0513-collab (issue #1) on Claude Code 2.1.128 / Windows 11, with the patch already attached. |
0.13.0 |
2026-04-26 | Tier 2 implementation entry — three ADRs (T2-A project-spec-structure / T2-B spec-auto-reference / T2-C spec-evolution-loop) move from documentation to working artifacts. New templates/spec-template.md and templates/spec-index-template.md give projects copy-and-fill scaffolds for docs/specs/ per CSI Three-Part Format + ISO 19650 lifecycle metadata. scribe SKILL.md extended with spec amendment ritual: when novel-trap dispatch carries flavor: spec_gap AND project has docs/specs/_index.md declaring sonmat.spec_awareness: enabled, scribe proposes successor-spec generation (Yes / No log only / Edit first), with closure-ceremony auto-trigger and LEARN journal entry per LPS 5-conversation model. hints.md Spec consumption sub-section adds Stage 1 awareness behaviors: auto-read _index.md at task start, inline-reference relevant specs, alerts-only no blocking, draft-status treated as non-binding, verify against spec body not just index. All Stage 1 behaviors gated on opt-in flag; default (Stage 0) keeps v0.12.0 behavior unchanged. |
0.12.0 |
2026-04-26 | Spec authoring discipline added to hints.md Dev domain — feeding from Phase 3 architecture-methodology research wave (5 cases: Ancient/Medieval, Renaissance/Modernism, BIM+CSI, Lean+IPD, Practitioner gap rituals). Six new spec-authoring hints: modal calibration (RFC 2119 self-limiting), intent vs mechanism (Auftragstaktik Was/Warum not Wie), record rejected alternatives (Brooks ledger of refusal / Talmud minority opinion), closure ceremony on retirement (PEP 404), amend via successor not in-place edit (RFC Updates/Obsoletes), spec ambiguity → numbered question with fishing-RFI self-check (AIA G716 model). Refined via devil project-relevance gate — Tier 1 only; Tier 2 (auto-reference / spec evolution loop) deferred to ADRs after substrate baseline measurement. |
0.11.0 |
2026-04-26 | Discipline + skill behavioral changes feeding from spec-induction Phase 1+2 research wave. core.md: Conceptzia audit (Before #4), spec-gap AAR (After #4), self-critique of antibodies (Learn). hints.md: Korean ↔ English negation asymmetry domain section. devil: §2.5 project-relevance gate (Stakes / Amendment cost / Next-action delta) with off-project honest exit, eliminates reactive-contradiction failure mode. scribe: bridge-note authoring principles (status-form / Traps mandatory / hypothesis / brevity), Novel Trap dual flavor (verification_failure + spec_gap). |
0.10.1 |
2026-04-21 | Add hint for Agent({isolation: "worktree"}) usage — parallel features, long-running refactors, and reversible-risk experiments should dispatch into worktree isolation. No new skill; leans on Claude Code's built-in isolation parameter rather than duplicating the functionality inside sonmat. |
0.10.0 |
2026-04-16 | Add grounding-during-exploration rules to core discipline (While Exploring — name hypotheses, mark position). Clarify devil balance-table wording. |
0.9.1 |
2026-04-15 | Honest framing pass on witness isolation stack. Separate layer 1 (platform-enforced execution isolation) from layers 2-3 (aspirational prompt-level contracts). Add honest caveats to witness.md §Role and §Isolation stack clarifying that the agent file is a prompt, not a compiled program, and that comparator discipline needs human-sampled validation in early use. Autoloop adds a reliability note to the [Judge] pipeline pointing at scribe's witness event log as the drift-detection channel. |
0.9.0 |
2026-04-15 | Add sonmat-witness agent — protocol-isolated intent-artifact comparator with three scope scales (commit / session forest / principle coverage). Split guard/scribe — scribe becomes post-work persistence layer, absorbs project rule discovery and novel trap recording. Reframe inspect and devil around discovery-led depth (cascade principle retracted as ambiguous). Add refactor-residue check to punch. Retract "3-layer architecture" aspiration as unsupported by current Claude Code platform; document honest 2-layer witness-pair architecture with isolation stack. Replace PreToolUse hook integration path with Task-tool spawn from autoloop [Judge] phase. |
0.8.0 |
2026-04-11 | Add /punch skill (completeness check), context doubt principle in core discipline |
0.7.1 |
2026-04-10 | Fix devil balance table column labels — Strength→Counter strength, Verdict→Claim verdict |
0.7.0 |
2026-04-06 | Add Rhythm Rules (Pace/Weight/Learn) to core discipline. Rename /imp → /devil. Add Reduce hint to Dev domain. |
0.6.1 |
2026-04-03 | Fix skill discovery — flatten skills/ directory, rename loop → autoloop (built-in collision) |
0.6.0 |
2026-04-02 | Add /imp skill — devil's advocate for reasoning. Counter-arguments against interpretations and irreversible decisions |
0.4.0 |
2026-04-01 | Prompt-first architecture — hook additionalContext → 0, discipline via CLAUDE.md → core.md reference chain |
0.3.2 |
2026-04-01 | Inspect suggestion system — concrete trigger conditions, task-scoped activation, auto-off |
0.3.1 |
2026-04-01 | Add /inspect skill (deep inspection mode), prompt-first architecture principle |
0.3.0 |
2026-04-01 | Multi-CLI support (Codex/Gemini), sonmat as single directory, embed discipline in instruction files |
0.2.1 |
2026-03-31 | Restructured discipline (thinking rules + action rules), polyglot hook, nickname system |
0.1.0 |
2026-03-29 | Initial release — core discipline, guard/autoloop/plan skills, worker agent |