fix(board): --dispatch neste= carried three other record fields
d_neste took the record from field 14 onward - the index from when the record had 14 fields. ORDRE, FLY and VOY were later inserted before `neste` and the index never moved, so every dispatch block read `neste=<claimed>|<claimedage>|<voy>|<prose>` (measured on the shipped 0.34.0: `neste=1|0d|0|NESTE: ...`). Now field 17 onward. Found while adding a field before `neste`, which would have made the prefix one field longer. board-selftest pins the exact start of the fixture's NESTE prose, so the next inserted field turns it red. board-selftest 427 -> 428; README and CLAUDE.md counts moved with it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
20fcd67f4a
commit
0008dbbc3a
5 changed files with 25 additions and 5 deletions
|
|
@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`board.sh --dispatch` put three other record fields in front of `neste=`.**
|
||||
The index that takes "the last field onward" was written when the record had
|
||||
14 fields and was never moved as ORDRE, FLY and VOY were inserted before
|
||||
`neste`, so a dispatch block read `neste=0|-|0|<the NESTE prose>`. It now
|
||||
takes field 17 onward, and a selftest check pins the exact start of the
|
||||
prose so the next inserted field turns it red.
|
||||
|
||||
## [0.34.0] - 2026-09-12
|
||||
|
||||
### Changed
|
||||
|
|
|
|||
|
|
@ -467,7 +467,7 @@ marketplace plugin. Three components, one boundary:
|
|||
- **Board (`scripts/board.sh`):** cross-repo attention board. Reads STATE.md
|
||||
next-step blocks + board lines, `git status`, and mailbox pending counts, and
|
||||
prints one line per repo. Read-only by construction: it writes to no repo, no
|
||||
STATE.md and no mailbox. Pinned by `board-selftest.sh` (427 checks).
|
||||
STATE.md and no mailbox. Pinned by `board-selftest.sh` (428 checks).
|
||||
|
||||
**It lives here because the mailbox is one of its three inputs, and it carries
|
||||
the same axis distinction the mailbox does.** A pending count means *others
|
||||
|
|
@ -1502,7 +1502,7 @@ obligations in another repo.
|
|||
builtins only in hook and tests.
|
||||
- TDD: no behavior change without a failing selftest check first.
|
||||
`bash scripts/coord-selftest.sh` must exit 0 (257/257),
|
||||
`bash scripts/board-selftest.sh` must exit 0 (427/427),
|
||||
`bash scripts/board-selftest.sh` must exit 0 (428/428),
|
||||
`bash scripts/route-selftest.sh` must exit 0 (73/73),
|
||||
`bash scripts/orders-selftest.sh` must exit 0 (116/116) and
|
||||
`bash scripts/state-line-guard-selftest.sh` must exit 0 (54/54).
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Session A in repo X leaves a message for repo Y; the next session in repo Y gets
|
|||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
|
|
@ -199,7 +199,7 @@ Note that raising the inbox's priority (Rule 7) deliberately does **not** widen
|
|||
## Development
|
||||
|
||||
bash scripts/coord-selftest.sh # 257 checks against a throwaway mailbox
|
||||
bash scripts/board-selftest.sh # 427 checks against a throwaway repo tree
|
||||
bash scripts/board-selftest.sh # 428 checks against a throwaway repo tree
|
||||
bash scripts/route-selftest.sh # 73 checks, incl. the route->board round trip
|
||||
bash scripts/orders-selftest.sh # 116 checks, incl. the 20-way barriered claim race
|
||||
bash scripts/state-line-guard-selftest.sh # 54 checks, incl. the Edit replace_all projection and the ratchet
|
||||
|
|
|
|||
|
|
@ -1788,6 +1788,14 @@ printf '%s\n' "$d8" | grep -q '^tab=1$'; check "dispatch: plan block carries tab
|
|||
printf '%s\n' "$d8" | grep -q '^repo=repo-a$'; check "dispatch: plan block carries repo=" $?
|
||||
printf '%s\n' "$d8" | grep -q "^dir=$ROOT/repo-a\$"; check "dispatch: plan block carries dir=" $?
|
||||
printf '%s\n' "$d8" | grep -q '^paste=cd '; check "dispatch: plan block carries a paste= that cds first" $?
|
||||
# neste= is the record's LAST field, taken as "field N onward". The index was
|
||||
# written when the record had 14 fields and never moved as ORDRE, FLY and VOY
|
||||
# were inserted before it, so the shipped block read `neste=0|-|0|Lukk ...` -
|
||||
# three other columns glued onto the prose. Pinned on the exact start of
|
||||
# repo-a's NESTE, so any future field added before `neste` without moving this
|
||||
# index turns the check red instead of silently growing the prefix.
|
||||
printf '%s\n' "$d8" | grep -q '^neste=Lukk to MAJOR fra reviewen'
|
||||
check "dispatch: neste= carries the NESTE prose alone, no other record fields in front of it" $?
|
||||
# The prompt reaches the session through argv. A bare model+effort command
|
||||
# forces the operator to type Go, and the session must then GUESS the task out
|
||||
# of STATE instead of being handed it - measured twice on 2026-08-16.
|
||||
|
|
|
|||
|
|
@ -1406,7 +1406,10 @@ dispatch() {
|
|||
[ -n "$d_rec" ] || { echo "board: no repo named '$D_REPO' in the scanned roots ($ROOTS)" >&2; exit 2; }
|
||||
d_status="$(printf '%s' "$d_rec" | cut -d'|' -f4)"
|
||||
d_dir="$(printf '%s' "$d_rec" | cut -d'|' -f10)"
|
||||
d_neste="$(printf '%s' "$d_rec" | cut -d'|' -f14-)"
|
||||
# `neste` is the LAST record field and is taken as "field N onward". This
|
||||
# index once read 14 and was never moved as fields were inserted before
|
||||
# `neste`, gluing three other columns onto the prose - move it with the record.
|
||||
d_neste="$(printf '%s' "$d_rec" | cut -d'|' -f17-)"
|
||||
[ -d "$d_dir" ] || { echo "board: the directory for $D_REPO does not exist: $d_dir" >&2; exit 2; }
|
||||
|
||||
# Rejected traits REFUSE. Degrading to a command without them is the worst
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue