docs(changelog): reconstruct the missing 0.15.0 entry
The log jumped straight from 0.16.0 to 0.14.0 even though 0.15.0 shipped and is tagged - a log gap, not a code gap, but this repo mirrors publicly and nothing machine-checks changelog prose. Reconstructed from v0.15.0 alone: the tag points exactly at9dd24c3(--brief + brief-nightly.sh). STATE.md's pointer to also use6de2408(the malformed-route-line test) was a stale premise - `git merge-base --is-ancestor6de2408v0.15.0` says no, it landed 6 minutes after the tag and only entered history via v0.16.0. Checked out both tags into scratch trees and ran board-selftest.sh live to get 36 -> 49 from PASS=, not from commit-message prose (this repo's README has printed a wrong count before). Grepped the launchd plist for leaked absolute paths before repeating the "placeholders only" claim: clean. Left the published [0.16.0] entry's "51 -> 86" as-is per operator call - the 49 -> 51 gap (6de2408's two checks, landed untagged between the tags) is explained in the new entry instead of rewriting an already-tagged entry. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017orCFDkmp88fLnqDR3chdJ
This commit is contained in:
parent
4080e22abd
commit
50f6420da5
1 changed files with 56 additions and 2 deletions
58
CHANGELOG.md
58
CHANGELOG.md
|
|
@ -89,8 +89,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
closed as *not planned*, with a blast radius reaching into other repos' live
|
||||
sessions. The dependency runs one way — the driver consumes the plan, the plan
|
||||
never knows a terminal exists — so if that API breaks, the plan still prints.
|
||||
- The `0.15.0` entry is missing from this file; the release itself shipped and is
|
||||
tagged. This is a gap in the log, not in the code.
|
||||
|
||||
## [0.15.0] - 2026-08-01
|
||||
|
||||
### Added
|
||||
|
||||
- **`board.sh --brief` — the nightly cross-repo briefing, a second RENDERING of
|
||||
the scan `board.sh` already does, never a second scan.** The operator has
|
||||
more repos than fits in memory, and the question that actually costs them is
|
||||
"who is waiting on me, and what does answering cost" — `board.sh` already
|
||||
scans for it, but nothing rendered it into a form an unattended job could
|
||||
leave behind. `--brief` prints NESTE **uncut**: the 38-character cut is the
|
||||
table column's property, not the record's, and the value used to be
|
||||
truncated at record-build time, leaving the cut string as the only copy.
|
||||
Each startup command is derived by **calling** `route.sh` with that repo's
|
||||
own four traits — `next-cost` alone cannot produce it, since the advisor
|
||||
flag is a property of the ROW and two rows can share a model/effort pair
|
||||
while differing on it. A repo with no route line is told so rather than
|
||||
handed a guess.
|
||||
|
||||
- **It cross-checks itself against `coord-count.sh`**, and that is the
|
||||
substance of the change, not a nicety. The repo scan and the mailbox are two
|
||||
different populations: a mailbox can carry a name no scan will ever produce
|
||||
— a declared non-git surface (`CLAUDE_COORD_REPO`, e.g. `~/repos`) or a
|
||||
checkout outside the roots. Measured on the real mailbox: 11 repos / 21
|
||||
messages in the briefing against `coord-count`'s 12 / 22, the missing one
|
||||
being the declared surface `repos`. A briefing that only walked the scan
|
||||
would answer "who is waiting on you" with a number it quietly knew was
|
||||
short.
|
||||
|
||||
- **Zero model calls**, the deciding property. Measured against 2.1.220 under
|
||||
subscription auth: `--max-budget-usd` does bite (`terminal_reason:
|
||||
budget_exhausted`, exit 1), but only *after* turn one — floor ~0.25
|
||||
USD-equivalent per turn on `claude-opus-5[1m]`. It is a runaway brake, not a
|
||||
pre-flight gate, so a nightly `claude -p` job would draw on the same quota
|
||||
pool as interactive work every night. Determinism removes the question
|
||||
entirely.
|
||||
|
||||
- **`scripts/brief-nightly.sh`** — the one writer in this path. `board.sh`
|
||||
stays read-only: `brief-nightly.sh` renders to a temp file and renames it
|
||||
into place, and treats an empty render as a *failed* one, since `board.sh`
|
||||
prints nothing when its scan roots don't exist — what a mistyped path or a
|
||||
moved home directory looks like. A plain `> file` redirect would destroy
|
||||
yesterday's briefing on a bad launchd environment.
|
||||
|
||||
- **`launchd/com.ktg.repo-mailbox-brief.plist`** — a template carrying
|
||||
placeholders, not absolute paths, since this repo is mirrored publicly. It
|
||||
points at a checkout rather than the plugin cache, which is version-pinned
|
||||
and would break silently on the next bump.
|
||||
|
||||
- `board-selftest.sh`: 36 -> 49 checks. One check pins a defect caught only by
|
||||
eye against the real tree: `fold` copies its input's missing trailing
|
||||
newline, which ran the command onto the tail of the NESTE prose and produced
|
||||
a briefing whose commands could not be copied. Two more checks landed six
|
||||
minutes after this tag, in an untagged follow-up commit that shipped no
|
||||
version bump of its own — `board-selftest.sh` had already reached 51 by the
|
||||
time `0.16.0`'s own work began, which is why that entry's count starts there.
|
||||
|
||||
## [0.14.0] - 2026-08-01
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue