Install the pre-push hook, so pr-guard has somewhere to run #1385
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
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/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
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!1385
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/ee98"
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?
Closes the resident-checkout half of
#1382.The gap
apply-agentic-os-hooks.pyranpre-commit installforpre-commit,commit-msg, andprepare-commit-msg, and stopped.pr-guardisstages: [pre-push], so on every consumer it was a configured hook with no git hook to fire it.Measured before the fix: 5 of 15
merge-remote-mainrepos had apre-pushhook at all, and each of those had it because somebody ranjust pre-commit-installby hand. The science seat confirmed the mechanism clean-room: fresh clone, generator only, nopre-push.This is the failure class
#1382names. A check that does not run reads exactly like a check that passed. It also made#1383partly moot while it stood: a guard corrected across thirteen repos still had no hook to execute in on eight of them.Verified
Deleted
.git/hooks/pre-pushfrom a consumer, re-ran the script, hook restored. Then backfilled every resident checkout: 18 of 20 now carry it. The two that do not are correct, not gaps.coilysiren/coilysirencarries.agentic-os-ignore, a deliberate repo-owned opt-out.agentic-ositself is skipped by the script as the source repo. I installed its hooks directly; whether the script should stop skipping itself is a separate question I have not answered.The other half is not this script's business
A fresh clone still gets nothing, and for a non-resident repository like
housecasta fresh clone is every session rather than an edge case. That is git'sinit.templateDir, which is a host setting and therefore an ansible rollout, per the authoring-vs-rollout law. Proven working before proposing it:Fresh clone, no install step, violating commit refused. Then, on a clone whose lane was flipped so the guard should bite,
git pushtomainrefused by pr-guard. Both halves, because only the second provespre-pushlanded.Two properties worth recording for whoever writes that role:
--skip-on-missing-config, so a clone with no.pre-commit-config.yamlno-ops instead of erroring. That bounds the blast radius on non-catalog clones.INSTALL_PYTHONfor the host that generated it, so the template must be generated per host rather than committed and copied. That suits an ansible role and rules out shipping a rendered template.Not established
Whether
pr-guard's blocking half protects anything today. Sweeping the fleet, every repo that enablespr-guardis onmerge-remote-main, which is exactly the lane the guard now stands down on. Nopull-requestorpull-request-and-mergerepo enables it. So the refuse-a-direct-main-push behavior currently has no live consumer, and I had to flip a lane synthetically to test it at all. That may be intentional or may be its own gap, and it is not this PR's to decide.