fix(board): an empty held-back set renders a value, not a dangling colon

With nobody held back, fokus_utenfor= ended at a bare colon. sed could not
supply the placeholder it looked like it was supplying: given an empty string
there is no input line for the substitution to run on, so it silently did
nothing. That is the shape command_missing= exists to keep out of this format
- a field whose value carries nothing.

Zero repos mentioning a slug without declaring it is a real answer and now
looks like one. board-selftest 113 -> 114.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186vKCzuUEN5WcJB82kddzF
This commit is contained in:
Kjell Tore Guttormsen 2026-08-02 20:08:32 +02:00
commit 040480890d
2 changed files with 15 additions and 1 deletions

View file

@ -775,6 +775,14 @@ check "every surviving block carries its own evidence (fokus_treff=)" "$ev_ok"
printf '%s\n' "$FDEMO" | grep '^fokus_treff=' | grep -q 'demo-topic'
check "the per-block evidence names the slug and its declared status" $?
# Zero held back is a real answer and must LOOK like one. A trailing ": " with
# nothing after it is the same defect class the format already legislated
# against for command=: the shape of a value carrying nothing. Reached via a
# slug that nobody mentions without declaring.
FOTHER="$("$BOARD" --roots "$ROOT" --plan --focus other 2>/dev/null)"
printf '%s\n' "$FOTHER" | grep '^fokus_utenfor=' | grep -qE ':[[:space:]]*$'; [ $? -ne 0 ]
check "an empty held-back set renders a value, never a dangling colon" $?
# Ambiguity widens and is named. "topic" is a hyphen-part of two declared
# slugs; picking one silently would be the cutoff lying about its own size.
FBOTH="$("$BOARD" --roots "$ROOT" --plan --focus topic 2>/dev/null)"