feat(board)!: rank --plan on five ordered groups, planned above in-progress
Replaces the weighted score shipped in 0.19.0 with five lookups: chain-root credit, unhandled inbox, planned, in-progress, undeclared status. Within a group: that group's own quantity, then a Sonnet next-cost, then oldest plan. The score's objection is accepted, not forgotten, and is written into board.sh and CLAUDE.md so a later session reads it as decided rather than as an unfixed defect: a group order cannot express "owes one message AND releases two others" as one quantity. What the score could not do was hold still for the format's second consumer - re-tuning one weight against another silently reorders a parser in another repo, and no test here can catch that. planned now ranks above in-progress, inverted by the same decision: converting a decision into motion is the slow step; live work is already moving. Debt stays uncapped and never excluded. One group below chain-root credit is not the cap declined at 0.19.0 - the debtor keeps its tab, its most-owed-first position, and its why=inbox:N. Pinned by a discriminating fixture the score would fail: a root releasing one repo outranks a repo owing four. board-selftest 134 -> 138. Suite 183 + 138 + 73 = 394. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y6ULuFCPMNYAPNN3pAjsXQ
This commit is contained in:
parent
e5e9cbe847
commit
d0a5ffe515
10 changed files with 287 additions and 118 deletions
47
CHANGELOG.md
47
CHANGELOG.md
|
|
@ -5,6 +5,53 @@ 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.20.0] - 2026-08-03
|
||||
|
||||
### Changed
|
||||
|
||||
- **`--plan` ranks on FIVE ORDERED GROUPS, replacing the weighted score shipped
|
||||
one version earlier.** The groups are chain-root credit, unhandled inbox,
|
||||
`planned`, `in-progress`, and undeclared status — each a lookup over a field
|
||||
the scan already read, so a selftest pins an outcome rather than a
|
||||
coefficient. Within a group: the quantity that group is about, then a Sonnet
|
||||
`next-cost`, then oldest plan first.
|
||||
|
||||
The objection the score answered is **accepted, not forgotten**, and is
|
||||
recorded in `board.sh` and `CLAUDE.md` so it is read as decided rather than as
|
||||
an unfixed defect: a group order genuinely cannot express "owes one message
|
||||
**and** releases two others" as a single quantity. What the score could not do
|
||||
was hold still for the format's second consumer — re-tuning 40 against 15
|
||||
silently reorders a parser living in another repo, and no test here can catch
|
||||
that. Operator decision, 2026-08-03.
|
||||
|
||||
- **`planned` now ranks ABOVE `in-progress`**, inverted from every earlier
|
||||
version by the same decision. A decided but unstarted next step is the step
|
||||
that converts a decision into motion; live work is already moving. Flipping it
|
||||
back is a policy change, not a sort fix.
|
||||
|
||||
- **`why=` names the group that admitted the repo**, not the dominant scoring
|
||||
term. The emitted values are unchanged (`unblocks:N`, `inbox:N`, `planned`,
|
||||
`in-progress`, `uavklart`), so neither consumer sees a new token — but the
|
||||
chain-root group is tested first, so `why=unblocks:N` now wins for **any**
|
||||
root, not only where its weight happened to dominate.
|
||||
|
||||
- **The Sonnet `next-cost` tiebreak introduced with the score is carried
|
||||
forward deliberately**, demoted to the last key below group and magnitude. It
|
||||
is a lookup, and removing a shipped property nobody asked to remove would be
|
||||
the larger surprise. It can now only separate repos that are otherwise equal.
|
||||
|
||||
### Notes
|
||||
|
||||
- **Debt is still neither capped nor excluded.** Being one group below
|
||||
chain-root credit is not the cap that was proposed and declined at 0.19.0: a
|
||||
debtor keeps its tab, its most-owed-first position among the other debtors,
|
||||
and its `why=inbox:N`. Selftest section 12 pins both halves on a
|
||||
discriminating fixture — a root releasing **one** repo outranks a repo owing
|
||||
**four** (which the score would have ordered the other way), and that debtor
|
||||
keeps everything it had.
|
||||
- `board-selftest.sh` is 134 → **138 checks**. Suite total 183 + 138 + 73 =
|
||||
**394**.
|
||||
|
||||
## [0.19.0] - 2026-08-02
|
||||
|
||||
### Added
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue