* perf(ci): scope PR lint and reuse static build outputs
* fix(lint): keep incremental selection a superset of the full lane
- Select .mts/.cts: flat-config --ext is additive to the config's own
files scope, so lint:ci checks them; the selector dropped them and a PR
touching only such a file reported green without opening it.
- Stop escalating the whole-repository ShellCheck for terminal-bench
paths the lane itself greps out.
- Report every failing Prettier directory in one run, since Prettier runs
per directory with basename targets and the first failure aborted the
rest.
- Pin RUNNER_TEMP/GITHUB_* in the subprocess fixture so its setup cannot
rmSync the ambient runner linter temp directory.
* fix(ci): fetch incremental lint history after the shallow refetches
Both 'Check the API contract version advances' and 'Report test growth'
refetch shallow history below the old position; a depth-1 fetch of the
base ref grafts the commit LINT_BASE_SHA names, so merge-base fails and
every contract-document PR silently ran the full scan. Pin the binding
and the step order, correct the freshness header that still claimed the
lanes run repo-wide, and record the per-file selection backstop.
* chore(ci): record the ci.yml size ratchet bump
Lint & Static failed on the workflow-size ratchet: ci.yml is 151690 bytes
against a recorded 147136 with a 4096-byte allowance. The overage is this
PR's opt-in step plus ci.yml growth that landed on main without a same-PR
bump, which is the drift the ratchet exists to surface. The comment above
the fetch step was cut to four lines with the mechanism moved into the
design docs, and the recorded size now matches the file.