feat(dev-base): warm the fleet pre-commit hook cache into the image #1030
No reviewers
Labels
No labels
burndown-2026-06
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1030
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/bake-precommit-hooks"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Nine repos across the four orgs run pre-commit in CI, and all nine run it inside
agentic-os:release. Every job paid a cold hook install. On this repo that install is roughly 5 minutes of a 5m30s lint job.It is also a correctness problem, not only a speed one. Runner egress has no direct route out, so a cold install reaches github.com unproxied and resets.
coilyco-bridge/deploy#402has the trace:That failure is invisible while a cache stays warm, which is why it reads as intermittent.
What
PRE_COMMIT_HOME=/opt/pre-commit, warmed at build time fromdocker/dev-base/fleet-precommit-hooks.yaml. That manifest carries the externally hosted pins the fleet shares:pre-commit-hooks@v6.0.0- 8 of 9 reposforgejo/runner@v12.10.1andshellcheck-py@v0.11.0.1- 6 of 9typos@v1.48.0andactionlint@v1.7.12- 5 of 9ruff-pre-commit@v0.15.20- 2 of 9mirrors-mypy@v1.20.0,pre-commit-shfmt@v3.13.1-1,yamllint@v1.38.0- 1 eachHooks served from forgejo.coilysiren.me stay out. That host is on the runners' NO_PROXY path and installs in seconds, and its revs churn per repo.
Cost and failure mode
Adds roughly 420 MB to the full image. Largest contributors are shellcheck-py at 124 MB, mypy at 70 MB, and typos at 66 MB.
A pin this manifest misses still installs at CI time, so drift costs speed and never correctness.
Verification
pre-commit validate-configpasses on the manifest.pre-commit install-hooksagainst it completes clean in a throwaway repo, producing a 421 MB cache. Every hook environment resolved.Live verification of a warm cache in CI is not possible until this lands and
dev-base-publishships a new:release.Follow-ups, not in this PR
actions/cacheblocks inci.yml,promote.yml,mirror-to-github.yml, andaos-cli-release.ymlpoint at~/.cache/pre-commitand become no-ops once this ships. They should be removed after a CI run confirms the baked cache is being read, not before.deploypinspre-commit-hooks@v5.0.0andeco-apppinsruff-pre-commit@v0.15.10. Both miss the bake until their pins move.git pushto a branch that already has a merged PR #1107