Files
clide/friction.md
T
dehlakandClaude f0fa602ff4 add friction.md install/setup log
Running newest-first log of install and environment friction, seeded
with the pql hooks issue: pql init wrote delegators into .git/hooks
while core.hooksPath was unset, silently disabling the repo's pre-push
gate. Documents the make-hooks fix and the pql-init pitfall.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-06 16:06:37 +02:00

2.2 KiB

friction.md

A running log of install / setup / environment friction — the papercuts that cost time getting clide (and its tooling) working on a machine. Newest first.

Each entry: symptom → root cause → fix, with enough detail that the next person (or the next clone) can recognise and resolve it fast.


2026-06-06 — pql hooks disabled the repo's pre-push gate

Symptom

  • "pql setup is broken." On the surface pql worked (pql schema, pql decisions sync, pql plan status all fine), but the git hook wiring was in a split-brain state.

Root cause

  • The repo's intended setup is git config core.hooksPath .githooks (run via make hooks). .githooks/ is the committed, canonical hook set: it carries both pql's planning delegators (pre-commit / post-merge / post-checkout / post-rewrite, each sourcing .pql/hooks/*) and the repo's own pre-push gate (make push-check).
  • core.hooksPath was unset in every scope, so git fell back to the default .git/hooks/. pql init had populated that directory with only the pql delegators — no pre-push.
  • Net effect: the pre-push gate (decisions + core + fast tests + a11y) was silently not running on push, while pql's automation ran only by accident from the default dir. CLAUDE.md requires the gate to always run and forbids --no-verify, so this was a real (silent) regression, not cosmetic.

Fix

  • make hooks → restores core.hooksPath = .githooks (now pre-push and the pql delegators all fire from one canonical, git-tracked source).
  • Removed the stray pql-only delegators from .git/hooks/ (pre-commit, post-merge, post-checkout, post-rewrite). They became inert once hooksPath pointed elsewhere, and leaving them created a dangerous partial fallback — a hook set that runs pql but silently skips the pre-push gate if core.hooksPath ever gets unset again. The real hook logic lives in .pql/hooks/ and was untouched.

Watch out for

  • pql init installs into the default .git/hooks/ and does not respect an existing core.hooksPath. After running it, re-run make hooks and verify with git rev-parse --git-path hooks (should print .githooks) and confirm .githooks/pre-push is present & executable.