# Red Bear OS — Optional Git Hooks This directory documents the git hooks that operators can install for Red Bear OS. Per AGENTS.md "absolutely NEVER DELETE, NEVER IGNORE" rule, hooks are always **opt-in** — operators explicitly choose to install them. No hook is auto-installed. ## Available hooks (2026-07-12, Phase 4.5) ### pre-push-checks.sh (recommended for serious operators) **File:** `local/scripts/pre-push-checks.sh` **Purpose:** Run 4 critical pre-flight checks before every `git push`. Closes the "silent drift" gap identified in AGENTS.md "Daily-upstream- safe workflow". **Checks:** 1. `sync-versions.sh --check` — Cat 0 + Cat 1 + Cat 2 versions 2. `verify-fork-versions.sh` — Cat 2 fork supremacy + content check 3. `verify-patch-content.py` — no orphan patches in `local/patches/` 4. `verify-collision-detection.py` — no config-vs-package conflicts **Install:** ```bash cp local/scripts/pre-push-checks.sh .git/hooks/pre-push chmod +x .git/hooks/pre-push ``` **Bypass:** - `REDBEAR_SKIP_PRE_PUSH=1 git push` (env var) - `git push --no-verify` (standard git bypass) - Run with `--soft` for warn-only mode **Why not pre-commit?** Pre-push is preferred because: - Pre-commit would block every local commit (even non-bump commits) - Pre-push is the right safety boundary: "before I share work with origin" - Operators committing 5x/hour to a feature branch don't need every commit to re-verify 4 checks; they need it on push ### Future hooks (Phase 4.5+ forward work) - **pre-receive on the server** — gitea can run a server-side hook that re-verifies every push. Combined with the client-side pre-push, this is defense in depth. Implementation requires gitea admin permission; operator-only. - **commit-msg hook** — auto-prefix commit messages with Phase ID (e.g., `phase 4.5: ...`) so future audits can group by phase. Optional, helps with audit doc generation. ## How hooks relate to AGENTS.md AGENTS.md "Daily-upstream-safe workflow" says: > "we can sources are provisioned via provision-release.sh and > archived in sources/redbear-/ build successfully." This means: **before any fork-upstream sync, validate the state**. The pre-push hook is the operator-side implementation of that check — it runs the same 4 checks that build-preflight.sh runs at build time, but on the operator's local repository state. ## Why hooks are opt-in Per AGENTS.md "absolutely NEVER DELETE, NEVER IGNORE" rule: - Hooks can interfere with operator workflows (false positives block pushes) - Some operators prefer manual run of pre-push-checks.sh - Local hooks do not propagate (each clone must re-install) - Some operators have multiple clones (different operator workstations) The opt-in nature respects operator autonomy. The hook is provided in `local/scripts/` so operators can opt in by copying it to `.git/hooks/pre-push`. ## Audit This directory was created in Phase 4.5 (Round 5). The current hook inventory is just the 1 file above. Future hooks should be added here as they are created.