Skip to content

basou: Count a repo's files past symlinks that leave it, keep an http final_url to its scheme, host and path, and say on the board page and in the guide what each figure is - #383

Merged
takashi-matsuyama merged 3 commits into
mainfrom
board/b1-fixes
Oct 20, 2026

Conversation

@takashi-matsuyama

Copy link
Copy Markdown
Member

What changes

Board fixes from using basou board on a board moved from a hand-written one. No shape changes: board_version 3, record_version 3, the record's on-disk shape and the --json shapes stay as they are.

Changed

  • repos[].files leaves out a symlink that leaves the repository. A repo with agent instruction files linked in from another repo (AGENTS.md -> ../<repo>/AGENTS.md, CLAUDE.md -> AGENTS.md, .github/copilot-instructions.md -> ../AGENTS.md), tracked or untracked and not ignored, had files null at every measurement, and a built-in value takes no exclude. Unreadable paths and directories git could not list still make it null. A symlink whose end cannot be reached (a directory on the way that may not be entered) is outside when its text, or that of a link in the repo it leads to, leaves the repository. Declared measures (file_count of **) are unchanged. BOARD_REPOS_METHOD 2 -> 3: the next measure fires the axis review's trigger (e) once and the next record marks the repos section method_changed.
  • http final_url holds only the scheme, host (with a port that is not the scheme's own) and path. The guide's script prints it from new URL(url_effective), or a null with an error when it is not an absolute http(s) URL; record refuses a final_url holding ?, #, a user name, a password, or a character a terminal hides. Behind a sign-in the redirect URL carried a token signed anew each time: the observation moved at every record and the token landed in a record kept in git. Records already written are not checked again, and the board page still draws their http values as parts (it holds a written value to the shape record took when it was written).
  • 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.
  • Milestones are days on which something happened (a release, a launch, the start of the work), never a plan or a target date, in the guide and in the comment board init prints.

Added

  • A files column in the repos tables of the live board and of a record's page.
  • Under Claude's and Codex's time on the board page: each counts an overlap once, not a sum of sessions.

Fixed

  • The per-day tile says what it divides by (the days from the start to today, both included, one more than the elapsed days beside it); docs/spec/board.md defines it.
  • 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.

Verification

  • pnpm -r build, pnpm typecheck, pnpm lint, pnpm lint:lang, pnpm lint:paths, pnpm test:scripts, pnpm -r test: all exit 0 (core 2972 passed, 1 skipped; sdk 67; cli 1599).
  • Reverting each change one at a time makes its tests fail (repos files, the unreachable-end symlink, the record's final_url checks including hidden characters, the page drawing a written value with a query, the script's URL reduction, source quoting including shell-expanded characters, the manual turn, the per-day divisor, the union sub-texts in en and ja, the files column).
  • The http script was run against curl 8.7.1 and a local TLS server for 25 redirect cases; every value it printed passes record's check.

… 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.
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