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:
Kjell Tore Guttormsen 2026-09-17 15:53:15 +02:00
commit 0008dbbc3a
5 changed files with 25 additions and 5 deletions

View file

@ -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.

View file

@ -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