Skip to content

basou: Draw the reach matrix right after a record's summary tiles, fold the components counted in no lane, and fit the matrix to a narrow screen - #384

Merged
takashi-matsuyama merged 6 commits into
mainfrom
board/b1-page
Oct 20, 2026
Merged

takashi-matsuyama merged 6 commits into
mainfrom
board/b1-page

Conversation

@takashi-matsuyama

Copy link
Copy Markdown
Member

What changes

Page-only changes to the board page (basou view, /board), and the guide's description of it. No change to any data shape, record, board.yaml or JSON.

Changed

  • A record's page draws the reach matrix right after the summary's tiles, then each lane, then the observations outside in a section of their own, then the period and effort and the rest as before. The summary held the observations table, and the matrix came after it and after the effort charts. The observations keep their rows, notes and reported mark (now on their section's heading). The live board, which draws no matrix, keeps its order. The guide's list of what the page draws, and what the agent writes for it, follows the new order.
  • The components counted in no lane are folded in one closed <details> that says how many they are (Counted in no lane (123)). With none, the page says so as before.

Fixed

  • The reach matrix fits a narrow screen. At 600px wide or less, each stage head shows its id alone, the stages' meanings are listed under the matrix, the cells take less room, and a long lane name wraps. Each stage head carries its meaning as its title at every width; the visible meaning text is aria-hidden so a screen reader reads it once. A wider screen draws the matrix as before.

Verification

  • pnpm -r build, pnpm typecheck, pnpm lint, pnpm lint:lang, pnpm lint:paths, pnpm test:scripts, pnpm -r test: all exit 0 (core 2973 passed, 1 skipped; sdk 67; cli 1601).
  • Measured in Chromium on a test board of 10 lanes (names up to 16 characters), 16 observations with notes, 120 components (101 in no lane) and 2 records: at 800px the matrix section starts 479px down (the meanings list hidden, the page otherwise unchanged); at 375px the matrix table is 260px wide in its 343px frame with no horizontal scroll, all six stages visible, and the meanings listed under it.
  • Reverting each change makes its tests fail, including moving the narrow-screen block before the rules it overrides, dropping any of its declarations, widening the lane column's cap, hiding the meanings at every width, dropping aria-hidden or the list, and the guide's old order.

… final_url to its scheme, host and path, and say on the board page and in the guide what each figure is

- repos[].files leaves out a symlink that leaves the repository. A tracked
  agent instruction file linked in from another repo made files null on
  every measurement, and a built-in value takes no exclude. A path that
  cannot be read, or a directory git could not list in full, still makes
  it null; a declared file_count of ** keeps refusing such a symlink. The
  repos method is now 3, so the next record marks the section
  method_changed.
- The guide's http script prints final_url as the scheme, host (with a
  port that is not the scheme's own) and path of the URL curl ended at, and
  a null with an error when that is not an http or https URL. record
  refuses a final_url holding '?' or '#', or a user name or a password: a
  sign-in redirect's token changed the value at every record and put the
  token in a file kept in git.
- The guide's Source: line quotes an argument where the command quotes it
  (a check name with a space), and leaves a plain name as it was.
- The guide asks for all manual observations of a record in one message,
  and lists them as one operator turn with each key under it.
- The guide says a milestone is a day on which something happened (the
  start of the work too), never a plan or a target date, and that a moved
  board keeps the milestones it had that happened.
- The board page says what its per-day time divides by (the days from the
  start to today, both included), says the Claude and Codex times are each
  a union of their sessions' time, and draws each repo's files in the repos
  tables of the live board and of a record.
…ilestone is a day on which something happened

The comment said only what was reached, and that a board moved from
another keeps its milestones there: the same two clauses the guide had,
which a start of the work among a moved board's milestones did not fit.
It now gives the guide's rule: days on which something happened (a
release, a launch, the start of the work), never a plan or a target date,
and a moved board keeps the milestones it had that happened.
…inal_url holds, and leave out a symlink whose end cannot be reached when its text leaves the repo

- The board page held a written record's http value to what record takes
  now, so a value whose final_url had a query, which record took before,
  was drawn as raw JSON. It now holds such a value to the shape record took
  when it was written; record alone refuses a user, a query or a fragment.
- record also refuses a final_url holding a character a terminal hides, as
  it does a string of the other kinds.
- A symlink whose end cannot be reached (a directory on the way that may
  not be entered) was not readable, so repos[].files stayed null for it.
  It is now outside when its text, or that of a link in the repo it leads
  to, leaves the repository.
- The CHANGELOG and docs/spec/board.md say what moves once at the next
  record (a fragment, a user, a port that is the scheme's own, capitals, a
  host outside ASCII), that the repos method fires the axis review's
  trigger (e) once, how the command reads a URL, and that a token in the
  path itself is kept; the guide says to make such an observation manual.
- The ja words under Claude's and Codex's time say an overlap counts once,
  and tests pin them and the names a source quotes.
…ld the components counted in no lane, and fit the matrix to a narrow screen

The board page of a record drew the observations inside the summary and
the matrix after them and after the charts of the effort. The summary now
keeps its prose and its tiles, the matrix and the lanes follow it, and the
observations have a section of their own after the lanes, which carries
their reported mark. The board measured on the spot keeps its order.

The components counted in no lane are folded under one line that says how
many they are, closed until it is opened; with none, the page says so as
before.

At 600px wide or less each stage's head shows its id alone, the cells take
less room and a long lane name wraps. Each stage's head carries its meaning
as its title at every width.
…ead each once, and have the guide list the board page in its new order

- On a screen 600px wide or less, the stages' meanings are listed under
  the matrix, whose heads show only the ids there; a wider screen hides the
  list. The visible meaning beside an id is left out of what a screen
  reader reads, which reads it once, as the head's title.
- The guide's list of what the board page draws, and what the agent writes
  for it, follows the page: summary, reach matrix, each lane, observed
  outside, period and effort, ratios, the operator's turns, footnotes. It
  said the summary drew the table of observations, and put the period and
  effort before the matrix.
- The tests pin the narrow screen's rules whole and that they come after
  the rules of the same weight they override, which a block moved before
  them would lose to.
- The CHANGELOG says the title is read by a screen reader and shown by a
  pointer that hovers, not on a phone, which has the list.
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