Files
crewli/.claude-sync.conf
bert.hausmans 37af961b3e fix(lefthook): remove duplicate git-lfs pre-push command
Lefthook v2 runs `git lfs pre-push` internally for pre-push hooks (per
docs/usage/features/git-lfs.md; confirmed in internal/run/controller/
lfs.go where the internal handler invokes `git lfs pre-push <remote>
<url>` with a buffered `cachedStdin`). Our manual `git-lfs:` command
in lefthook.yml was a second invocation against the same remote; the
duplicate is directly visible in `LEFTHOOK_VERBOSE=1` output as
`[git-lfs] executing hook` (internal) followed by `[lefthook] run:
git lfs pre-push` (manual).

The previous fix attempt (piped: true, commit 1b06804) was based on a
wrong understanding of `piped`'s semantics — `piped` controls
fail-fast behavior, not stdin routing or sequencing. Default lefthook
behavior is already sequential per docs/configuration/parallel.md.
That "fix" was placebo; incident 2 (F2 push, zero LFS objects, commit
99eedb6) proved it.

Phase A investigation: documentary + source confirmation that lefthook
owns the LFS pre-push call. Phase B sandbox test against a filesystem
remote confirmed the duplicate execution in logs but did NOT reproduce
the production hang — likely because the duplicate manual call against
a local remote has no LFS server to interact with. A network-y remote
(Gitea over SSH/HTTPS) appears to be part of the trigger. Two
mechanisms remain plausible (H1: PTY-stdin without EOF in
`while read` loop per docs/configuration/use_stdin.md; H4: server-side
LFS interaction on the duplicate call). Both are eliminated by the
same fix: remove the manual command. LFS uploads continue to work via
lefthook's internal handler (verified in sandbox post-fix).

Regression coverage: scripts/test-lefthook-pre-push.sh asserts exactly
one internal LFS invocation, zero manual ones, and `Uploading LFS
objects: 100%` present, against a disposable sandbox.

See dev-docs/ADR-LEFTHOOK-LFS-INTEGRATION.md for full context, both
misconceptions to prevent regression, and the alternative-scenarios
playbook if Phase E ever regresses.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-11 00:18:56 +02:00

36 lines
1.0 KiB
Plaintext

CLAUDE.md
.cursorrules
dev-docs/SCHEMA.md
dev-docs/API.md
dev-docs/ARCH-FORM-BUILDER.md
dev-docs/ARCH-CONSOLIDATION-2026-04.md
dev-docs/ARCH-CONSOLIDATION-ADDENDUM-2026-04-24.md
dev-docs/AUTH_ARCHITECTURE.md
dev-docs/VUEXY_COMPONENTS.md
dev-docs/BACKLOG.md
dev-docs/SECURITY_AUDIT.md
dev-docs/design-document.md
dev-docs/UX_SPEC_FESTIVAL_HIERARCHY.md
dev-docs/ARCH-BINDINGS.md
dev-docs/ARCH-API-VALIDATION.md
dev-docs/RFC-WS-7-OBSERVABILITY.md
dev-docs/GLITCHTIP.md
dev-docs/ARCH-OBSERVABILITY.md
dev-docs/ARCH-TESTING.md
dev-docs/runbooks/observability-triage.md
dev-docs/runbooks/observability-erasure.md
dev-docs/RFC-WS-6.md
dev-docs/RFC-TIMETABLE-Artist-Timetable-Module.md
dev-docs/RFC-WS-FRONTEND-PRIMEVUE.md
dev-docs/MIGRATION-AUDIT-PRIMEVUE.md
dev-docs/PRIMEVUE_COMPONENTS.md
dev-docs/CLAUDE_CODE_TOOLING.md
dev-docs/ADR-LEFTHOOK-LFS-INTEGRATION.md
dev-docs/FRONTEND-TOOLING.md
dev-docs/LARASTAN.md
dev-docs/RECTOR.md
dev-docs/TELESCOPE.md
dev-docs/WS-3-SESSION-1C-AUDIT.md
dev-docs/FORM_BUILDER_SCOPE_POLICY.md
dev-docs/COPY_CATALOGUE.md
dev-docs/TEST_SCENARIO.md