CI / build (push) Has been cancelled
- actionable-phase-guidance: lifecycle artifacts + .state->complete - harden-enforcement-layers: pre-push hook, install-hooks.sh, register-guards.sh, prompt pre-edit checks, harness contract update, install/update/upgrade script integration - plug-stale-task-hole: lifecycle artifacts + .state->complete - port-pi-guard: pi dev guard plugin, package.json, register-guards integration All tasks passed bug_find, adversarial_bug_find, doc_review, and referee phases with PASS verdict.
36 lines
1.3 KiB
Bash
Executable File
36 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# pre-commit hook — blocks commits when no task is in an edit-allowed phase.
|
|
#
|
|
# Install: cp this file to .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit
|
|
# Or: ln -s ~/.automaton/scripts/git-hooks/pre-commit .git/hooks/pre-commit
|
|
#
|
|
# This is a safety net. The primary enforcement is the harness pre-edit hook.
|
|
# Pre-commit catches changes that bypassed the harness (e.g., manual edits).
|
|
|
|
set -euo pipefail
|
|
|
|
STATUS_SCRIPT="$HOME/.automaton/scripts/status.py"
|
|
|
|
if [ ! -f "$STATUS_SCRIPT" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
|
|
python3 "$STATUS_SCRIPT" --can-edit --project "$PROJECT_ROOT" --json 2>/dev/null
|
|
EXIT_CODE=$?
|
|
|
|
if [ $EXIT_CODE -ne 0 ]; then
|
|
echo ""
|
|
echo "=== COMMIT BLOCKED ==="
|
|
echo "No task is in an implement or doc_review phase."
|
|
echo "Create a task and transition it to implement before committing:"
|
|
echo ""
|
|
echo " python ~/.automaton/scripts/status.py --create-task my-feature --project $PROJECT_ROOT"
|
|
echo " python ~/.automaton/scripts/status.py --transition research --task my-feature --project $PROJECT_ROOT"
|
|
echo " python ~/.automaton/scripts/status.py --transition implement --task my-feature --project $PROJECT_ROOT"
|
|
echo "====================="
|
|
exit 1
|
|
fi
|
|
|
|
exit 0 |