feat(route,board): strike the advisor rule, add board.sh --row <repo>
Order 20260912T202210Z-7588027378-from-.claude, operator decision 2026-09-12 (helhetlig vurdering av arbeidssystemet, cut row 3 and the board.sh --row improvement row). One order, two parts, one version bump. THE ADVISOR RULE IS STRUCK. route.sh and board.sh --dispatch emit no --advisor at all. The rule fired per ROW on a need - always on the Sonnet rows (a capability lift, which is what made the quota fallback safe to take), and on the Opus rows at reversibility=costly|one-way - and it read well. It was killed by a MEASUREMENT, not by taste: of 54 dispatches the PM issued 08.-12.09, ZERO carried the flag, because sessions are started by hand from the model and effort rather than from the whole emitted line. A rule nothing honours is not a policy, and an emitted value nobody acts on is decoration in a field whose only job is to be evidence. The advisor is now what it already was in practice: an operator decision per session, said in one sentence in route.sh --help. The comments that rested on the rule were REWRITTEN, not left standing. board.sh --dispatch still refuses a --model/--effort pair, but the reason is no longer "the advisor is a property of the ROW": it is that the rubric has exactly one copy, and a dispatch taking the model directly would be a second, unscored way to reach the same decision - recording no traits, no rationale and no next-cost, so nothing afterwards could say whether the routing or the scoring was wrong. A comment defending a removed mechanism is how the next session restores it. Both skills carry the correction. Pinned as an ABSENCE over the whole trait space - 81 combinations, every line of output, with a known-positive control proving the sweep's grep can find a planted advisor - rather than on four sampled rows, because the claim is that no path emits it. board.sh --dispatch at reversibility=costly is pinned separately: that is the exact input a reintroduced rule would fire on. The literal string is absent from route.sh entirely, including the paragraph recording what was struck (it says "an opus advisor flag" in words), because a blunt grep cannot tell a description from a specification. Backward compatibility is pinned rather than assumed: a route line carrying a legacy advisor= field still parses and still yields a command - measured, 0 of 48 route lines in ~/repos carry one, but a reader that broke on an unknown field would turn last month's STATE.md into "that repo has no route line". The three CLI gates section 14 carried went with the rule; the suite no longer depends on the installed claude at all. board.sh --row <repo> IS THE SEVENTH RENDERING of the same scan, never a second scan, read-only like every other one. (The order calls it the sixth; by this file's own numbering --inbox-plan is the fourth and --dispatch the fifth. Corrected rather than carried wrong.) It exists because the columns WERE misread: on 11.09 the PM read FLY off the table by eye and got it wrong, while every other rendering a program consumes is already key=value. inn, ordre and fly are three separate fields because they are three separate facts; status is the bare token, never the table's blocked>target display, with blocked-on beside it; neste is last and uncut. An unknown repo exits 2 and writes NOTHING to stdout - an empty block would read as a repo whose every column is blank, which is a real and different state. upushet is the ONE field that is not a rendering of the scan, and it is named rather than blended in: nothing in the scan measures it, so it is read once, for the named repo only, and never enters the table, the plan or the briefing. It reads the remote-TRACKING ref, not the remote, so upushet=N honestly means "the local ref says N"; a repo with no upstream reports ?, never 0. The row fixture's three counts are three DIFFERENT integers (3/2/1), and that is the finding worth recording. Built first with 2/1/1, it was mutation-tested by making fly read the ORDRE field - the exact 11.09 misreading - and the check stayed GREEN, because the two fields held the same digit. A fixture that cannot tell two columns apart is the defect wearing a passing test, inside the section written to prevent it. Suites under /bin/bash 3.2, before -> after: coord 257 -> 257, board 393 -> 427, route 73 -> 73 (13 advisor checks and 3 CLI gates out, 15 absence/legacy checks in, and it no longer varies with claude being on PATH), orders 116 -> 116, state-line-guard 54 -> 54. Sum 893 -> 927, README badge updated to the measured sum. npm test 12/12, fail 0. Verified live against the real tree, not only fixtures: --row repo-mailbox reports fly=1 beside ordre=0 (the distinction that was misread), --row on the nested key from-ai-to-chitta/content-sadhguru resolves, and an unknown repo exits 2. No tag, no push, no catalog change - that is the operator's release-plugin.mjs run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
671e275a97
commit
5e5bc4a66e
13 changed files with 689 additions and 271 deletions
61
CHANGELOG.md
61
CHANGELOG.md
|
|
@ -7,6 +7,67 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.34.0] - 2026-09-12
|
||||
|
||||
### Changed
|
||||
|
||||
- **The advisor rule is struck from the rubric: `route.sh` and `board.sh
|
||||
--dispatch` no longer emit `--advisor` at all.** It fired on two needs -
|
||||
always on the Sonnet rows, and on the Opus rows at `costly|one-way` stakes -
|
||||
and it read well. What killed it was a measurement, not a change of taste:
|
||||
of 54 dispatches the PM issued 08.-12.09, **zero** carried the flag, because
|
||||
sessions are started by hand from the model and effort rather than from the
|
||||
whole emitted line. A rule nothing honours is not a policy, and an emitted
|
||||
value nobody acts on is decoration in a field whose only job is to be
|
||||
evidence. The advisor is now what it already was in practice: an operator
|
||||
decision per session, said in one sentence in `route.sh --help`. The
|
||||
direction is the safe one for the single thing the old rule protected - the
|
||||
quota fallback is still exactly one row cheaper, it just no longer implies a
|
||||
capability lift nobody was taking.
|
||||
- **The comments that rested on it were rewritten, not left standing.**
|
||||
`board.sh --dispatch` still refuses a `--model`/`--effort` pair, but the
|
||||
reason is no longer "the advisor is a property of the ROW": it is that the
|
||||
rubric has exactly one copy, and a dispatch taking the model directly would
|
||||
be a second, unscored way to reach the same decision - one recording no
|
||||
traits, no rationale and no `next-cost`, so nothing afterwards could say
|
||||
whether the routing or the scoring was wrong. A comment defending a
|
||||
mechanism that has been removed is how the next session restores it.
|
||||
`skills/route/SKILL.md` and `skills/dispatch/SKILL.md` carry the same
|
||||
correction.
|
||||
- Pinned as an ABSENCE over the whole trait space rather than on sampled rows -
|
||||
81 trait combinations, every line of output, with a known-positive control
|
||||
proving the sweep's grep can find a planted advisor - plus `--dispatch` at
|
||||
`reversibility=costly`, the exact input a reintroduced rule would fire on.
|
||||
Backward compatibility is pinned too: a route line carrying a legacy
|
||||
`advisor=` field still parses and still yields a command (measured the same
|
||||
day: 0 of 48 `<!-- route:` lines anywhere in `~/repos` carry one, so nothing
|
||||
in circulation depends on it - but a reader that broke on an unknown field
|
||||
would turn last month's STATE.md into "that repo has no route line").
|
||||
|
||||
### Added
|
||||
|
||||
- **`board.sh --row <repo>`: the table's row for one repo, as `field=value`
|
||||
lines.** A seventh rendering of the same scan, never a second scan, and
|
||||
read-only like every other one. The motivation is a measured misreading: on
|
||||
11.09 the PM read the FLY column off the table **by eye** and got it wrong.
|
||||
Every other rendering a program consumes (`--plan`, `--inbox-plan`,
|
||||
`--dispatch`) is already `key=value`; the default view was the one left out,
|
||||
and a 34-character repo key already shifts a row two characters right, which
|
||||
makes counting spaces worse than it looks. `inn`, `ordre` and `fly` are three
|
||||
separate fields because they are three separate facts, and confusing them is
|
||||
what this exists to close. `status` is the bare token, never the table's
|
||||
`blocked>target` display, with `blocked-on` beside it; `neste` is last and
|
||||
uncut, for the same reason it is last in the record. An unknown repo exits
|
||||
**2** and writes nothing to stdout - an empty block would read as a repo whose
|
||||
every column is blank, which is a real and different state.
|
||||
- `upushet=` is the one field that is **not** a rendering of the scan, and it is
|
||||
named rather than blended in: nothing in the scan measures it, so it is read
|
||||
once, for the named repo only, and never enters the table, the plan or the
|
||||
briefing. It reads the remote-TRACKING ref, not the remote, so `upushet=N`
|
||||
honestly means "the local ref says N"; a repo with no upstream reports `?`,
|
||||
never `0`, because "nothing is waiting to be pushed" and "nobody looked" are
|
||||
exactly the pair this engine refuses to render alike.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **README's selftest numbers were re-measured, not re-derived.** The badge said
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue