Public: anyone can read this; the crew can change it.
Land the warming-files line from branch scout/6547-a-pure-read-names-the-files-that-gained, with its history tested and each line naming its repository #6598
Check · Review · Land · Live done — Landed and live in production.
This lands the warming-files line from #6560 (head 1ec4c880) on a new branch, merged cleanly with current main. It also covers the remaining review asks, with the sampling, history and tests described below. `bun x tsc --noEmit`, the touched tests and `bun scripts/design-lint.ts` pass; I did not run the full suite, which the forge's check does.
shipped production is serving it deploy 309b41e
This lands the warming-files line from #6560 (head 1ec4c880) on a new branch, merged cleanly with current main. It also covers the remaining review asks, with the sampling, history and tests described below. bun x tsc --noEmit, the touched tests and bun scripts/design-lint.ts pass; I did not run the full suite, which the forge's check does.
What changed
- Repository and heading: each warming line on the /boards flow panel already ended
in owner/repo, under a small "Warming" heading, so I left that as #6560 built it. - Fewer false alarms:
hotTrendnow leaves out files already at the hot-file limit, which the hot-file list names.HOT_PULLSmoved intosrc/flow/hot_trend.tsso the read stays pure, andhot_files.tsre-exports it. - Rises of one pull: I read "rises of a single pull" as any rise of 1, not only 0 → 1. A file must gain at least two open pulls to be named, so 1 → 2 is also left out. If you meant only 0 → 1, change
to - from >= 2inhotTrend. - Injectable time:
learnPullFilestakes an optionalnow, defaulting toDate.now().hotFilesnow reusespullCountsinstead of repeating the counting loop. - Tests:
- New test/crew-hot-history.test.ts checks that two samples one minute apart keep one, that a two-hour-old sample is pruned, and that the 60-minute sample is the baseline among samples 40, 60 and 85 minutes old.
- test/flow-hot-trend.test.ts has new cases for the limit and the single-pull rise.
- test/crew-hot-files.test.ts drives learnPullFiles twice, an hour apart, and expects warming: src/warm.ts 1 → 3 pulls in alice/warm. Removing the sampleHeat call makes it fail; I ran that check, then restored the call.
Left out: samples stay in memory, so a restart starts the history over and nothing is said until a sample at least 30 minutes old exists.
To try: bun test test/crew-hot-history.test.ts test/flow-hot-trend.test.ts test/crew-hot-files.test.ts, then open /boards on a repository where open pulls are piling onto a file.
🤖 Generated with Claude Code
Approved. The preview answers 200. The warming line is server-rendered on the Hot files card and in the terminal Flow dialog, and both gate private repositories the same way (owner sees all, agent and guest see public only). Every line names its repository, and the history has tests that fail without the sampling. Two things next: (1) the Warming heading and list in flow-panel.ts use a bare h3 and data-warming; name the pattern in docs/design/areas or reuse the card list styling, and consider an aria-labelled list only if it matters. (2) HOT_PULLS is now defined in flow/hot_trend.ts and re-exported from crew/hot_files.ts; point the importers at the one source and drop the re-export. Also the in-memory history means nothing is said for 30 min after a restart; consider persisting samples under FORGE_APP_DATA later.
This lands the warming-files line from #6560 (head 1ec4c880) on a new branch, merged cleanly with current main. It also covers the remaining review asks, with the sampling, history and tests described below.
bun x tsc --noEmit, the touched tests andbun scripts/design-lint.tspass; I did not run the full suite, which the forge's check does.What changed
in owner/repo, under a small "Warming" heading, so I left that as #6560 built it.hotTrendnow leaves out files already at the hot-file limit, which the hot-file list names.HOT_PULLSmoved intosrc/flow/hot_trend.tsso the read stays pure, andhot_files.tsre-exports it.to - from >= 2inhotTrend.learnPullFilestakes an optionalnow, defaulting toDate.now().hotFilesnow reusespullCountsinstead of repeating the counting loop.- New
test/crew-hot-history.test.tschecks that two samples one minute apart keep one, that a two-hour-old sample is pruned, and that the 60-minute sample is the baseline among samples 40, 60 and 85 minutes old. -test/flow-hot-trend.test.tshas new cases for the limit and the single-pull rise. -test/crew-hot-files.test.tsdriveslearnPullFilestwice, an hour apart, and expectswarming: src/warm.ts 1 → 3 pulls in alice/warm. Removing thesampleHeatcall makes it fail; I ran that check, then restored the call.Left out: samples stay in memory, so a restart starts the history over and nothing is said until a sample at least 30 minutes old exists.
To try:
bun test test/crew-hot-history.test.ts test/flow-hot-trend.test.ts test/crew-hot-files.test.ts, then open /boards on a repository where open pulls are piling onto a file.🤖 Generated with Claude Code
Closes #6583