feat(board): render the day plan as a third rendering of the same scan
The table says what the state of every repo is; the briefing says who is waiting. Neither says which repos to open a tab for today, in what order, and with which command - so a day plan was assembled by hand every morning from a table that deliberately takes no position. --plan is built on exactly the argument --brief was: a lookup over data the scan already holds, zero model calls, and route.sh already derives the per-repo command. The order IS the position it takes, and the only one - there is no cutoff, so nothing is hidden. The rule most likely to be "fixed" into a defect: repos owing mail rank first regardless of status. Excluding blocked or done is a claim about a repo's OWN next step, which by definition cannot be moved, while owing an answer is the other axis entirely - and answering is often what unblocks it. Measured on the real tree, two of 26 planned repos were done with an unhandled inbox, so the fixture tree pins done-with-debt and blocked-with-debt rather than the general rule alone. Repos with no board line rank last and are LABELLED, because the table already prints a note about them and dropping them silently would repeat that defect. key=value rather than prose, because the plan has two consumers: the operator, and a separate repo driving a terminal from it. Prose would make the rendered format an API no test here could hold stable for a consumer living in another repo. dir= is absolute because a new pane inherits its anchor's directory; command_missing= carries both no-command causes, because a driver reading ^command= would type a blank line into a live pane. route_cmd_for() becomes the single reader of the route-line grammar, shared with --brief, distinguishing the two failure causes by exit code rather than by an empty string. --brief output is unchanged. Driving a terminal from the plan stays OUT of this repo, on the measurement in docs/ghostty-orchestration-measurement.md rather than on taste. board-selftest: 51 -> 86 checks. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011eKRzhD1RqY2MxvDEkrJAM
This commit is contained in:
parent
5d9c76763d
commit
6d0fe14d0f
10 changed files with 485 additions and 31 deletions
|
|
@ -8,13 +8,16 @@ description: >-
|
|||
for a cross-repo status read: "what should I work on", "who is waiting on me",
|
||||
"what unblocks the most", "show the board", "what is cheapest to move",
|
||||
"cross-repo status", "where is the leverage", "which repo is blocked". Also
|
||||
triggers on Norwegian phrasings: "hva skal jeg jobbe med", "hvem venter på meg",
|
||||
"hva løsner mest", "vis tavlen", "hva er billigst å flytte", "hvor bør jeg
|
||||
begynne", "status på tvers av repo", "hva er blokkert". Trigger even when the
|
||||
covers planning a whole day rather than picking one repo: "plan my day", "which
|
||||
repos should I open tabs for", "day plan". Also triggers on Norwegian phrasings:
|
||||
"hva skal jeg jobbe med", "hvem venter på meg", "hva løsner mest", "vis tavlen",
|
||||
"hva er billigst å flytte", "hvor bør jeg begynne", "status på tvers av repo",
|
||||
"hva er blokkert", "lag en dagsplan", "planlegg dagen", "hvilke repo skal jeg
|
||||
åpne i dag". Trigger even when the
|
||||
user names no repo and no tool — choosing *between* repos is this skill. Not for
|
||||
"where were we" inside the current repo: that is this repo's own STATE.md,
|
||||
already injected at session start.
|
||||
version: "0.15.0"
|
||||
version: "0.16.0"
|
||||
---
|
||||
|
||||
# board — which repo deserves the next session
|
||||
|
|
@ -122,6 +125,36 @@ If the user asked a narrower question ("who is waiting on me", "what is cheapest
|
|||
answer that question directly from the same run instead of forcing the full
|
||||
ranking onto them.
|
||||
|
||||
## When the ask is a day, not a repo
|
||||
|
||||
"Hvilke repo skal jeg åpne tabber for i dag", "lag en dagsplan", "planlegg dagen",
|
||||
"hva står på programmet" — that is a different question from "which repo wins",
|
||||
and it has its own rendering:
|
||||
|
||||
"$BOARD" --plan
|
||||
|
||||
This is the one case where a list *is* the answer and the no-dumping rule does not
|
||||
apply — the user asked for the day, and a day has more than one repo in it. Pass
|
||||
the plan through with a short framing line; do not re-rank it, re-order it, or trim
|
||||
it. The order is the engine's position and it is deterministic: debt first
|
||||
(most-owed first, whatever the status), then `in-progress`, then `planned`, then
|
||||
repos with no board line. Substituting your own judgement for that order makes the
|
||||
plan unreproducible and costs the property that makes it trustworthy.
|
||||
|
||||
Two things to say out loud when you hand it over:
|
||||
|
||||
- **A `done` or `blocked` repo in the plan is not a bug.** It is there because it
|
||||
owes mail, and owing an answer is a different axis from whether its own next step
|
||||
can move. `why=inbox:N` says exactly that.
|
||||
- **`command_missing=` means that repo has no usable route line**, so there is no
|
||||
command to paste. Name those repos rather than letting the operator discover it
|
||||
per tab. Fixing them is the `route` skill's job, in *that* repo — never a side
|
||||
quest here.
|
||||
|
||||
Blocks are `key=value` and comment lines start with `#`, because a separate driver
|
||||
repo consumes this output. That format is a contract with a consumer outside this
|
||||
repo: never reformat it, and never hand-edit a block before passing it on.
|
||||
|
||||
## Coverage gaps you must name
|
||||
|
||||
A ranking is only as honest as its inputs, and two gaps are invisible in the answer
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ description: >-
|
|||
covers retiring a broadcast that has become wrong or obsolete: "retract that
|
||||
broadcast", "that announcement is outdated, pull it", "trekk tilbake kringkastingen",
|
||||
"den broadcasten er utdatert".
|
||||
version: "0.15.0"
|
||||
version: "0.16.0"
|
||||
---
|
||||
|
||||
# coord-send — natural-language front door for inter-repo messages
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ description: >-
|
|||
the operator names no model and no tool — choosing the model for the next
|
||||
session IS this skill. Not for choosing which REPO gets the next session:
|
||||
that is the `board` skill.
|
||||
version: "0.15.0"
|
||||
version: "0.16.0"
|
||||
---
|
||||
|
||||
# route — what the next session should run with
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue