Skip to content

basou: Name the keys a kind takes when a board refuses one, point the guide at the reference, draw a string measure without its unit, and give each record its own time - #376

Merged
takashi-matsuyama merged 3 commits into
mainfrom
board/eval-fixes
Oct 19, 2026

Conversation

@takashi-matsuyama

Copy link
Copy Markdown
Member

Summary

Fixes from two evaluations of basou board at board_version 3 (0.71.1) on boards outside basou. No shape changes: no board_version, record_version or method version moves, and no key is added to board.yaml or to a record.

  • A refused key names what its kind takes. A key that no version of its kind takes, in a measure or an observation, is refused with the keys that kind takes in the version the file is read by: observe[0]: unknown keys 'count', 'capture' (kind 'http' takes: key, kind, url, words, count_pattern, capture_pattern, notes). Both evaluations had to find the keys of http, github_check, file_name and total by guessing from one refusal after another; one approved a declaration that read words as a count.
  • basou board guide points to the reference for its own version (docs/spec/board.md at the version's tag), in step 2b (axis review) and in step 3 for a workspace with no board. Nothing basou printed named those keys.
  • A string measure is printed and drawn without its unit (latest README.md, not latest README.md name). A number keeps its unit, and so does the count of a file_paths. unit stays required.
  • Records are listed by their own recorded_at. The board page's list of records and the last record in basou board guide gave the time of the record's file name, which for a record written before 0.70.1 differs from its recorded_at (as the page's heading shows) by a second or so. The list reads recorded_at off the head of each regular file, only in the UTC form basou writes, and falls back to the name's time. basou board record now takes recorded_at after it measures the board again, not a few milliseconds before.

docs/spec/board.md and the Unreleased section of CHANGELOG.md say the same.

Verification

  • On ae95c0c: pnpm install --frozen-lockfile, pnpm -r build, pnpm typecheck, pnpm lint, pnpm lint:lang, pnpm lint:paths, pnpm test and pnpm test:scripts all exit 0 (core 2921 passed and 1 skipped, sdk 67, cli 1566, scripts 21).
  • Tests added or changed for each fix: the kind's keys at board_version 2 and 3 and with no version or a version that is not a number, none for a key outside a measure or an observation (including one named kind in a section or a lane); the reference line in both guide modes; string and number units in board measure and on the page; the list of records with pretty and compact JSON, a nested or misplaced recorded_at, non-UTC forms, a file that cannot be read and a link named as a record; recorded_at after measured_at.
  • Mutation testing in a copy without .git: 16 mutations of the author's own (15 caught, 1 equivalent) and the survivors of the review's own 32 (all caught after the second commit, or equivalent).
  • One round of convergent review (review-only): 5 low findings, all applied in the second commit (a guide sentence and a reference row that said too much, non-UTC times in the list, opening a name that is not a regular file, two tests that did not pin what they claimed).

… guide at the reference, draw a string measure without its unit, and give each record its own time
…old, list records by a UTC recorded_at off regular files only, and test the anchor and the newest shape
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant