fix(board): one spec for next-cost, and it is the rubric's
The board line's cost field had two specifications and one of them was this script. `--help` prescribed a versionless `sonnet/xhigh`; the global model rubric it points at spells the model `Sonnet 5 / xhigh`. A session following either was correct by its own source, so the field drifted with nobody making a mistake. Measured across a real 44-repo tree: 14 board lines carrying eight distinct strings, and not one of them the form documented here - the only spelling nobody used was ours. The help now prescribes the rubric's, which is also what most lines already carry. The parser is untouched and stays lenient: it reads to `;` or `-->` so the rubric's spacing survives, and the fixtures still vary the spelling on purpose to pin that. Read-side leniency was never the defect; it is what makes a documentation-only fix sufficient. No normalization at read, deliberately. Board lines are rewritten every session by convention, so an unambiguous spec self-heals the existing lines in about one session per active repo - mapping variants would be permanent code migrating data that migrates itself. Nothing compares the field mechanically today either: KOST is a display column and the board sorts on a numeric bucket key, so the defect was real but latent. Two checks (28 -> 30) pin the documented form, red first, because cleaning the data cannot fix a spec that regenerates the divergence every session. Validation at write has no write path to attach to: nothing in this repo emits a board line outside the fixtures. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U6EixQo6hpoRCVtiAXdnFs
This commit is contained in:
parent
f7ad4741a3
commit
305f1687b7
5 changed files with 54 additions and 5 deletions
28
CHANGELOG.md
28
CHANGELOG.md
|
|
@ -5,6 +5,34 @@ 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).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
|
||||
- **The board line's `next-cost` field had two specs, and one of them was
|
||||
ours.** `board.sh --help` prescribed a versionless `sonnet/xhigh` while the
|
||||
global model rubric it points at spells the model `Sonnet 5 / xhigh`. Neither
|
||||
a session following the help nor one following the rubric was doing anything
|
||||
wrong, so the field drifted: measured across a real 44-repo tree, the 14
|
||||
existing board lines carried **eight** distinct strings — and not one used the
|
||||
form documented here. The help now prescribes the rubric's spelling
|
||||
(`Sonnet 5/xhigh`), which is also the one most lines already use.
|
||||
|
||||
**The parser is unchanged and stays lenient.** It still reads to `;` or
|
||||
`-->` rather than stopping at the first non-lowercase character, precisely so
|
||||
the rubric's spacing survives; the selftest fixtures still vary the spelling
|
||||
on purpose to pin that. Leniency on the read side was never the defect — it
|
||||
is what makes a documentation-only fix sufficient.
|
||||
|
||||
**No normalization was added, deliberately.** Board lines are rewritten every
|
||||
session by convention, so an unambiguous spec self-heals the existing lines
|
||||
within about one session per active repo. Mapping variants at read time would
|
||||
be permanent code migrating data that migrates itself, and nothing compares
|
||||
the field mechanically today: `KOST` is a display column, and the board sorts
|
||||
on a numeric bucket key. Two new `board-selftest.sh` checks (30 total) pin the
|
||||
documented form, because a spec that contradicts the rubric regenerates the
|
||||
divergence no matter how often the data is cleaned up.
|
||||
|
||||
## [0.9.0] - 2026-07-28
|
||||
|
||||
### Added
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue