Repository navigation
Print the steps that judge and record a board - #337
Merged
Merged
Conversation
basou board guide prints, for an agent to read, how to judge the workspace's default board and record it, filled in with that board: where it is and its last record, the axis and its last review, the language of the prose, the port its page opens on (from the workspace's path) and a working directory of its own; the commands, runnable as printed, that take the other repos' state, measure, record, open the page and gate a commit; how to make each observation the board declares and write it down; the principles of judging with each stage's look and notes; and the record's input with every state empty and the previous record's state and reason beside each cell, which record refuses as printed. With no board declared it says how to declare one. It writes nothing, sends nothing and has no --json: the text is not a promised shape. This is what a per-workspace skill carried until now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The working directory the guide names may sit in a /tmp other users share. Each block now uses it only when it is not a link and is the user's own, and closes it to everyone else, since the files in it hold what the trail holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Gate (d) hashes what each other repo's working tree holds beyond HEAD (the diff of tracked files and the content of untracked ones), so a further edit to a file already changed is seen, and takes a repo with no commit yet instead of stopping on it. - The page version reader drops generator meta tags however they are quoted or cased, and skips a version right after '_' as its text says. - The commands carry $MODEL and the template an empty model, so neither runs or records as printed; the view check names the port. - A working directory that is not the user's own says so on stderr; gate (e) prints whether only board/ is staged and exits 0 when it is. - The text says when observed must match the declaration, that an axis_review needs a summary, how fresh decisions.md is, and what the digest does and does not catch. The template gives an observation no empty error and prose no empty lane, and names the lane ids. - A workspace or repo path holding a control character is refused rather than carried into the commands; the view check prints the title as JSON; the workspace is gone to as basou resolves it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
basou board guide(experimental): it prints, for an agent to read, the steps that judge the workspace's default board and record it, filled in with that board. A workspace no longer needs a skill of its own to keep a judged board: the agent runs the guide and follows it.board/board.yaml(read only when the manifest declares the workspace's own repo private):basou view's 4319) and a working directory of its own;$MODEL(they stop without it): take the other repos' state (HEAD and a hash of what the working tree holds beyond it), check freshness (the operator runsbasou refresh), measure, review the axis when due, observe, judge, compare, write the input, record (--dry-runfirst), open the page, pass the commit gates, record decisions;manualones are listed as the operator's;lookandnotesand each lane's notes;stateleft empty, with the previous record's state and reason beside it underprevious.recordrefuses both, so the template cannot be passed on unjudged;--json: the text is for an agent and its shape is not promised.board.yamldoes not read or is a link to nothing, or a path the commands would carry holds a control character.@basou/core(Internal):boardGuide,boardGuidePort,boardGuideWorkDir,shellWord,BOARD_GUIDE_PORTS, andrecordIdsexported.basou boardstays experimental; no change tocompatibility.mdor the README.docs/spec/cli-commands.mdlists the subcommand.Why
Until now each workspace that kept a judged board also carried a skill: the steps, the judging principles, a script for the observations outside basou and a config of its own. Board version 2 (#336) moved what is particular to a workspace into
board.yaml; this prints the rest from basou, so the same steps reach every workspace and change with basou.Verification
pnpm -r build,pnpm typecheck,pnpm lint(the existing 4 warnings only),pnpm lint:lang,pnpm lint:paths,pnpm test:scripts,pnpm test:coverage: all 0. The board and view tests also pass underTZ=America/New_YorkandAsia/Tokyo.sh:record: refused as printed; taken once every cell is judged, everypreviousremoved and every observation made.basou viewstarted on the guide's port, and the title checked through/api/board;Review
One round of convergent review (review only), with the decided scope given as fixed. 14 findings (3 medium, 11 low), all fixed in the fourth commit:
<model>placeholder passedrecord, and the view check was not runnable as printed;errorand empty lane prose;Not taken up, as design questions:
shellWordandrecordIdsbecome exports;Checklist
main.pnpm lint,pnpm typecheck, andpnpm testare all green locally.CHANGELOG.md## Unreleasedupdated.🤖 Generated with Claude Code