chore(release): bump to 0.32.0

Ships two things that belong in one bump because they are one plugin.

`board.sh --voyage` (85cd628, 2026-08-31) sat one commit past v0.31.0,
unreleased and unpushed. Every entry point on this machine runs the
version-pinned plugin cache, so the feature existed in git and did not
exist for anyone using it.

`route.sh --last-model` learned "Fable 5.1" (2bec7fe) with both boundary
decisions taken and written down: "Fable 5" is kept because the row table
itself spells rows 5-6 with it, and the set was widened rather than
replaced by form validation because only a closed set catches a version
that never shipped.

Version sites, enumerated rather than swept - a blank sed would rewrite
the historical prose in CLAUDE.md that deliberately keeps its old number:
plugin.json, package.json, the README badge, and four SKILL.md
(coord-send, board, route, dispatch). CHANGELOG entry added.

Selftest counts corrected where they are asserted as prose: route 69 ->
73 in CLAUDE.md and README.

npm test: 11/11. coord 242, board 360, route 73, orders 110, guard 54.

Order: 20260901T185028Z-3612729538-from-.claude

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-01 21:47:33 +02:00
commit 39cb6538e3
9 changed files with 121 additions and 10 deletions

View file

@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.32.0] - 2026-09-01
Two commits, and the first of them was already written when this release
started: `board.sh --voyage` landed on 2026-08-31 and then sat one step past
`v0.31.0`, unreleased AND unpushed. Every entry point on this machine runs the
version-pinned plugin cache, so the feature existed in git and did not exist
for anyone using it. That gap is the reason both changes ship together - they
are the same plugin and the same bump.
### Added
- **`board.sh --voyage` reports the Voyage briefs in flight** (committed
2026-08-31, released here). A sixth rendering of the same read-only scan.
`board` reads STATE lines, which say nothing about a brief, so a programme
running Voyage across several repos had no shared surface at all: nobody
could answer which briefs were running, in what phase, and who was waiting on
whom. Detection is by PROPERTY, never by directory name - a directory counts
only if it holds `brief.md` or `brief.md.draft` under one of the three
planning locations the convention recognises - and it walks the FILESYSTEM,
never the git index: `llm-ingestion-okf` gitignores `.claude/projects/`, so
`git ls-files` would have reported zero briefs in the one repo actually
running one. The phase ladder measures ARTIFACTS, not sessions, and says so
in its legend; three fields refuse to let an absence borrow the shape of a
measurement (`kvalitet=-` is never `complete`, `research=-` is not
`research=0`, and the rendering always prints its own denominator). A
matching `VOY` column sits beside `ORDRE` and `FLY`, never summed with them.
### Fixed
- **`route.sh --last-model` now accepts `Fable 5.1`, and the set stays
CLOSED.** Fable 5.1 shipped 2026-09-01 and the three-value set refused it, so
a session that actually ran it could not record what it ran: the record was
either omitted or written as a name already in the set. A lied record reads
back months later as a measurement rather than as the gap it is, which is the
failure mode of the one field whose entire purpose is to be believed later.
Two boundary decisions were taken rather than deferred. `Fable 5` is KEPT -
not for backward compatibility (measured: exactly 1 of 45 `route-last` lines
on this machine carries it) but because `route.sh`'s own row table spells
rows 5-6 `Fable 5/high` and `Fable 5/xhigh`, so dropping it would make the
script refuse to record a name its own spec writes. And the set was WIDENED
rather than replaced by form validation: a `<family> <digits>[.<digits>]`
pattern would still catch a misspelled family, but would stop catching a
version that does not exist, letting `Fable 5.2` and `Opus 7` read back as
evidence that a model ran when it never shipped. The selftest pins that
choice - `Fable 5.2` / `Fable 6` / `Fable 5.10` are rejected beside the new
accept case - so a later switch to form validation fails there instead of
quietly widening what the record can claim. The die message now names the
repair, since the cost of a hand-maintained list is exactly what was paid
here.
Not touched: the row table (still six rows, still emitting only 1-4, Fable
still a hand-written override) and the note that a Fable session runs without
an advisor because the CLI does not enforce it.
Known gap, stated rather than closed: `Fable 5.1/xhigh` is 15 characters and
overflows `board.sh`'s `%-14s` KOST column, shifting the rest of that row one
column right. Parsing is unaffected and is now pinned by the round-trip
section. Widening the column was not ordered in this session and is reported
rather than made.
`route-selftest.sh`: 69 -> 73 checks. The other four suites are unchanged
(coord 242, board 360, orders 110, state-line-guard 54).
## [0.31.0] - 2026-08-29
Two commits landed after `v0.30.0` and, as with that release, neither reaches