You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2026.9.29.5: a build reports each step once, with its outcome, and a status line states the build while it runs
The validation project's cross-verification of this pull request printed
nothing for 40 minutes between the last `Compiling` line and `Finished`:
ninja ran with `--quiet` and its output was examined after it exited.
Design: .agents/docs/2026-09-29-build-progress-display-design.md.
- ninja runs without `--quiet` and is read line by line (stream_exec). Its
status lines (NINJA_STATUS, with an escape-sequence prefix that a nested
ninja's relayed copy loses) give the counts; its log gives which step
finished and when it started and ended; a step record written beside
build.ninja (steps.tsv) names each step's package and identity; the
`__action` wrapper reports when a check or prepare action starts.
- A package's line is written when every step the graph assigns to it has
run, or when the build ends: `done <span>`, `cached N units`, `failed`, or
the steps that ran. Requested packages are listed, dependencies folded into
one line; --verbose lists every package and each step as `[f/t] <command>`.
- A build program has one line: `ran <time>`, `cached`, `failed`; `waiting`,
`compiling` and `running` while live.
- On a terminal the live lines and one status line are drawn below the output
(mcpp.ui's region, one writer for every line, ten frames a second at most);
in a log the status line is written after a minute of silence.
- A failed step is reported when it fails, not after ninja exits.
- `Finished` states the whole command's time and, for ten seconds or more,
how it was spent and the dominant step.
- Terminal detection works on macOS and Windows; a Windows console receives
UTF-16. mcpp.log stays a leaf: mcpp.ui installs the terminal sink for its
verbose records, and the model logs its events to the log file.
- e2e 842 (log medium) and 843 (a pseudo-terminal); unit tests of the
readers, the record, the text measures, the region and the completion rule;
the e2e tests that read the old lines follow them, and those that read a
`Compiling` line as "the build planned" ask build.ninja's time instead.
- docs/00, 09, 30, 40 in both languages; CHANGELOG.
0 commit comments