feat(build): record where a build spent its time #70

Merged
mi merged 1 commits from build-phase-timing into main 2026-09-15 17:37:19 +02:00
Owner

A build's duration said how long it took and nothing about where the
time went — the two unattributed minutes of the legacy measurements
could only be reconstructed from journal timestamps and file mtimes.

Every build now records its phases: the wait for a free slot, preparing
the worktree, whatever the build runtime does before the command's own
process exists, the clean and the build command, and storing the
artifacts. The artifact page shows them beside the duration, the API
carries them in milliseconds.

executor.overheadBudget (30s by default) warns once per build when the
orchestration's own phases exceed it, naming the slowest. The queue wait
is measured but never counted: waiting for a slot on a host that runs one
build at a time is not overhead.

Implements plan step 14, items 1 and 2; items 4-6 were already done or
groundless in the rewrite, item 3 (Docker ownership repair) follows.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

A build's duration said how long it took and nothing about where the time went — the two unattributed minutes of the legacy measurements could only be reconstructed from journal timestamps and file mtimes. Every build now records its phases: the wait for a free slot, preparing the worktree, whatever the build runtime does before the command's own process exists, the clean and the build command, and storing the artifacts. The artifact page shows them beside the duration, the API carries them in milliseconds. executor.overheadBudget (30s by default) warns once per build when the orchestration's own phases exceed it, naming the slowest. The queue wait is measured but never counted: waiting for a slot on a host that runs one build at a time is not overhead. Implements plan step 14, items 1 and 2; items 4-6 were already done or groundless in the rewrite, item 3 (Docker ownership repair) follows. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
mi added 1 commit 2026-09-15 17:37:14 +02:00
feat(build): record where a build spent its time
werkator build succeeded after 02:18
70e42a7cd9
A build's duration said how long it took and nothing about where the
time went — the two unattributed minutes of the legacy measurements
could only be reconstructed from journal timestamps and file mtimes.

Every build now records its phases: the wait for a free slot, preparing
the worktree, whatever the build runtime does before the command's own
process exists, the clean and the build command, and storing the
artifacts. The artifact page shows them beside the duration, the API
carries them in milliseconds.

executor.overheadBudget (30s by default) warns once per build when the
orchestration's own phases exceed it, naming the slowest. The queue wait
is measured but never counted: waiting for a slot on a host that runs one
build at a time is not overhead.

Implements plan step 14, items 1 and 2; items 4-6 were already done or
groundless in the rewrite, item 3 (Docker ownership repair) follows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
mi merged commit 16146ef349 into main 2026-09-15 17:37:19 +02:00
mi deleted branch build-phase-timing 2026-09-15 17:37:19 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkator#70