Skip to content

basou: show the experimental board at /board in basou view - #329

Merged
takashi-matsuyama merged 4 commits into
mainfrom
board/view-page
Oct 7, 2026
Merged

takashi-matsuyama merged 4 commits into
mainfrom
board/view-page

Conversation

@takashi-matsuyama

Copy link
Copy Markdown
Member

Summary

basou view now shows the experimental progress board at /board, in single mode.

  • The page draws one record of board/board.yaml (read only when the manifest declares the workspace's own repo private) from the record alone, by the declaration it was judged by, never from the board.yaml as it is now. Its eight sections:
    • The heading: title, when it was recorded, who judged, and whether everything was measured.
    • A summary with six counts (lanes in operation, blocked and unverified cells, open tracks, sessions in the trail, the operator's turns), and the observations from outside. An observation not made shows the previous record's value.
    • The period and effort, in figures, with the declared milestones.
    • The reach matrix, with the cells that moved since the previous record marked and the stages left behind listed above it.
    • Where each lane is: its stage, what is blocked, shelved or unverified and why, its prose, and its measured values.
    • The ratios.
    • The operator's turns.
    • Footnotes: the axis and its last review, the judge, what was not measured, and the build that measured.
  • What the judge reported (cells, prose, observations, and the counts and marks taken from the cells) is marked as such.
  • Fixed strings are in the language the anchor declares, from a string table beside the other view strings, sent with the data.
  • Navigation: earlier records open from a selector and links. A record that cannot be drawn says why, in that language, and still links to the records around it.
  • Data routes: /api/board and /api/board/<ULID>, also under /api/ws/<key>/. Like every page of basou view, they are a local UI and not an API.
  • Safety: everything is put in with textContent. Only a span between backticks in prose becomes a <code> element, built as a node.
  • No new flag: basou view is a guaranteed command and the board is experimental, so the page reads only the default location. The page is not served in portfolio mode. A link in the single-mode header leads to it.

Charts of the effort come in a later change.

Verification

  • CI steps run locally with exit codes, after the last commit: pnpm -r build, pnpm typecheck, pnpm -r test:coverage, pnpm test:scripts, pnpm lint (the existing warnings only), pnpm lint:lang, pnpm lint:paths, and pnpm audit --prod: all 0. Board and view tests pass under TZ=UTC, Asia/Tokyo and America/New_York.
  • In a browser, a workspace whose anchor is Japanese was checked in light and dark colour schemes, with no console errors. The records drawn were real and hand-made ones, including a broken record, and a cell, prose and reason holding <script> and <b>. Checked on the page:
    • The eight sections, in Japanese.
    • The marks for moved cells.
    • The stages left behind.
    • Previous values for observations not made.
    • Markup in a record shown as text.
    • Moving between records.
    • The reason a broken record is not drawn.
  • Mutations: 36, all caught, applied on the final code. They cover the page data, the routes, the default location, the language, the string filling, the prose splitting, the drawing of the selector, lanes, period and footnotes, and the header link.
  • Review: one round of convergent review (review only). The reviewer drew fixtures with jsdom against a real server and found no safety defect. Twelve findings, all fixed:
    • Reasons not translated.
    • An unknown last review shown as none.
    • Values filled in twice.
    • Lane marks not marked as reported.
    • The period line with no time zone.
    • The no-record message.
    • The selector on a page that cannot be drawn.
    • The token note's wording.
    • Docstrings on what is read.
    • An empty pair of backticks.
    • Two tests that held less than they said.

🤖 Generated with Claude Code

takashi-matsuyama and others added 4 commits October 7, 2026 18:22
In single mode, basou view now serves a board page at /board and its data
at /api/board (and /api/ws/<key>/board), the latest record or, with
/board/<ULID>, another. The page draws one record of board/board.yaml (read
only when the manifest declares the workspace's own repo private) from the
record alone, by the declaration it was judged by, in eight sections: the
heading, a summary with six counts and the observations from outside (one
not made shows the previous record's value), the period and effort, the
reach matrix with the cells that moved since the previous record marked,
where each lane is, the ratios, the operator's turns, and footnotes. What
the judge reported is marked as such, and the fixed strings come in the
language the anchor declares, from a table beside the other view strings.
Everything is put in with textContent; only a span between backticks in
prose becomes a code element.

The page reads the records and nothing else, takes no new flag (the command
is guaranteed and the board is experimental), and is not served in
portfolio mode. A link in the single-mode header leads to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nt previous values and the anchor's language

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… fill each string once

The board page now gets why a record is not drawn as a kind with the
record's id and version, and words it from the string table, so a page in
Japanese no longer shows an English reason. A last review that a record
that could not be read may hold is shown as not known, not as none. Each
fixed string is filled in one pass, so what a stage's meaning or a model's
name holds is shown as written; a lane's marks, counted from the cells, are
marked as reported; the period leaves out what was not measured; a page
that cannot be drawn still links to the records around the one asked for;
and a pair of backticks with nothing between stays as written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takashi-matsuyama
takashi-matsuyama merged commit 5f5c61e into main Oct 7, 2026
8 checks passed
@takashi-matsuyama
takashi-matsuyama deleted the board/view-page branch October 8, 2026 05:22
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