chore(release): bump to 0.31.0

Two commits landed after v0.30.0 and neither reaches anyone: every entry
point on this machine runs the version-pinned plugin cache, not the tree.
Measured 2026-08-29 by .claude before this order was written - cache
board.sh 1626 lines against the repo's 1739, md5 differing - so the board
skill was still running pre-4369499 code. A commit is not a delivery.

Minor rather than patch: ee5a86a adds a reading the table did not have
(ORDRE and FLY carry the age of the oldest order), while 4369499 repairs
a consumer that discarded a signal the engine already sent. No new
key=value key, no new exit code, no new env var, no sort-axis change.

Version bumped in all seven files that carry it: .claude-plugin/plugin.json,
package.json, the README badge and the four SKILL.md frontmatters. The
0.30.0 strings remaining in CLAUDE.md, board.sh and board-selftest.sh are
historical prose about what was measured on that release and are correct
as they stand - a blanket sed would have falsified them.

CHANGELOG 0.31.0 written for a reader of the board rather than a reader
of the diff: what the columns now say, and what --brief no longer claims.

Suites under real /bin/bash 3.2 after the bump: coord 242/242, board
325/325, route 69/69, orders 110/110, guard 54/54. npm test 11/11.

No tag and no catalog change, as ordered - release-plugin.mjs lives in
catalog and mints the tag and the ref atomically; a hand-made tag here is
exactly the drift that script exists to prevent.

Order: 20260829T071929Z-786087280-from-.claude

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-08-29 09:29:26 +02:00
commit 0711b4209c
8 changed files with 68 additions and 7 deletions

View file

@ -5,6 +5,67 @@ 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.31.0] - 2026-08-29
Two commits landed after `v0.30.0` and, as with that release, neither reaches
anyone until the tag exists: every entry point on this machine runs the
version-pinned plugin cache, not the tree. Minor rather than patch because the
board's table gained a reading it did not have - the age of the oldest queued
order - while the other change repairs a consumer that was ignoring a signal
the engine already sent.
Both are the same class the previous release closed and this one continues: a
failed or missing measurement rendering as a reassuring value.
### Added
- **`ORDRE` and `FLY` now carry the AGE of the oldest order, rendered `N:Md`.**
Reading the board, `ORDRE 2` used to look identical whether both orders
arrived yesterday or both had sat for ten days. The problem was never that
orders wait - that is a prioritisation call owned by humans - it was that no
cross-repo surface showed the wait at all: `coord-order-inbox.sh` reports an
age, but only inside the one repo at SessionStart, so a repo nobody opens
shows nobody anything. Measured across the live mailbox 2026-08-29: 30
pending orders over 22 repos, 5 of them ten days old. The age is the OLDEST
order, never the newest and never a mean - a repo holding one fresh order and
one ten-day-old order has a ten-day-old problem, and the newest reading is
exactly what would hide it. `FLY` carries the same reading, where it matters
at least as much: nothing un-claims an order when the session that took it
dies. An empty queue still prints a bare `0` ("no orders" and "an order that
arrived today" are different facts), and an unreadable mtime prints `?` for
the whole reading rather than silently skipping a file that could have been
the oldest one.
The age is DISPLAY only. It is deliberately not in the sort, and `--plan`'s
`fly=` and every other emitted `key=value` block are untouched, so nothing
that parses this board changes shape.
### Fixed
- **`board.sh` listened to `coord-count.sh`'s output and ignored its exit
status, so the failure signal 0.30.0 had just built stopped at the
producer.** Every call site piped the counter into `awk`, and a pipeline
reports the last stage's status, so exit 3 - "the mailbox root you named is
not there; this is not a count of zero" - was discarded each time. Measured
on the shipped 0.30.0 against a mailbox root that does not exist:
`coord-count.sh` said "not counted, not zero" and exited 3, while
`board.sh --brief` answered "Ingen repo skylder noen et svar i dag." and
`--plan` emitted no warning key at all. For a reader that meant a briefing
confidently reporting that nobody owes anyone a reply, on the basis of a
measurement that never happened.
The board now reports the failure at all five places it speaks, and keeps the
two causes apart - a missing sibling script and a mailbox root that is not
there are different repairs. A partial count captured before a failure is
discarded rather than shown, because a half-count also looks measured. The
table and `--plain` views are unchanged: they never invoked the counter, and
now say so instead of implying a measurement nobody attempted.
Bounded gap, stated rather than closed: the table's own `INN`/`ORDRE`/`FLY`
columns count with `ls` and read 0 for every repo when the mailbox root is
absent. Same shape, one source over, and not a `coord-count.sh` consumer -
named here rather than silently widened into.
## [0.30.0] - 2026-08-26
Two commits landed after `v0.29.0` and neither is reachable: every entry point