chore: sync pre-push hook to forge-base canonical (calls just qa) #1124

Merged
reviewer merged 1 commit from chore/sync-pre-push-from-forge-base into main 2026-05-12 14:11:52 +00:00
Collaborator

Summary

  • Replace the inlined .husky/pre-push with the canonical forge-base/husky/pre-push shape: gate on just on PATH, then run just qa.
  • The previous inlined version diverged from the project's justfile (the contract). It ran bun x turbo run typecheck directly, skipping the codegen step (paraglide compile) that just qa chains via typecheck's dep. Result: a fresh checkout broke pre-push with 30+ missing-decl TS errors against @/paraglide/messages.
  • Same drift also let two missing fr.json keys (flows_yaml_search_placeholder, flows_yaml_help_search_placeholder) slip past pre-push for several commits — paraglide-check is only wired into just qa.
  • Old comment claimed just was absent from the agent container. Stale: forge-base/bun:v0.2.1 already ships just at /usr/local/bin/just, so it's present in both claude-hooks:dev and the base image.

Test plan

  • just qa passes locally (1080/1080 web tests, all lint/format/paraglide-check/i18n/flow-schema/sql-layer green).
  • Running .husky/pre-push directly executes just qa and exits 0.
  • Pre-push fired on the actual push of this branch — pipeline ran end-to-end through just qa.
  • Next agent dispatch confirms just resolves inside the container worktree (already validated manually via docker run --rm claude-hooks:dev which just).

🤖 Generated with Claude Code

## Summary - Replace the inlined `.husky/pre-push` with the canonical `forge-base/husky/pre-push` shape: gate on `just` on PATH, then run `just qa`. - The previous inlined version diverged from the project's `justfile` (the contract). It ran `bun x turbo run typecheck` directly, skipping the `codegen` step (paraglide compile) that `just qa` chains via `typecheck`'s dep. Result: a fresh checkout broke pre-push with 30+ missing-decl TS errors against `@/paraglide/messages`. - Same drift also let two missing `fr.json` keys (`flows_yaml_search_placeholder`, `flows_yaml_help_search_placeholder`) slip past pre-push for several commits — `paraglide-check` is only wired into `just qa`. - Old comment claimed `just` was absent from the agent container. Stale: `forge-base/bun:v0.2.1` already ships `just` at `/usr/local/bin/just`, so it's present in both `claude-hooks:dev` and the base image. ## Test plan - [x] `just qa` passes locally (1080/1080 web tests, all lint/format/paraglide-check/i18n/flow-schema/sql-layer green). - [x] Running `.husky/pre-push` directly executes `just qa` and exits 0. - [x] Pre-push fired on the actual push of this branch — pipeline ran end-to-end through `just qa`. - [ ] Next agent dispatch confirms `just` resolves inside the container worktree (already validated manually via `docker run --rm claude-hooks:dev which just`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chore: sync pre-push hook to forge-base canonical (calls just qa)
All checks were successful
qa / sql-layer-check (pull_request) Successful in 12s
qa / i18n-string-check (pull_request) Successful in 16s
qa / dockerfile (pull_request) Successful in 16s
qa / db-schema (pull_request) Successful in 18s
qa / qa-1 (pull_request) Successful in 2m32s
qa / qa (pull_request) Successful in 0s
be328324f7
The local hook inlined typecheck/lint/test directly instead of calling
`just qa`. That diverged from the justfile (project's contract) and
silently skipped `codegen` (paraglide compile), so a fresh checkout
broke pre-push with 30+ missing-decl TS errors. Same drift left two
missing `fr.json` keys uncaught for several commits.

Sync to forge-base/husky/pre-push: gate on `just`, run `just qa`. The
agent base image (forge-base/bun) ships `just` at /usr/local/bin/just,
so the previous "no just in container" comment was stale.

Also fill the two missing `fr.json` keys (flows_yaml_search_placeholder,
flows_yaml_help_search_placeholder) that the new hook surfaced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
reviewer approved these changes 2026-05-12 14:11:46 +00:00
reviewer left a comment

APPROVED

.husky/pre-push: Refactor is clean and correct. The old inlined steps genuinely drifted from just qa — skipping codegen (paraglide compile) broke pre-push on fresh checkouts with 30+ missing-decl TS errors. Delegating to just qa makes the justfile the single source of truth as intended.

The just-on-PATH guard is good defensive hygiene. The CHROMIUM_PATH host fallback is correctly placed before just qa so the subprocess inherits it.

Test scope change: pre-push now runs the full suite (bun x turbo run test) instead of affected-only (--filter='...[origin/main]'). Intentional and strictly more correct — PR validates 1080/1080 pass.

fr.json: Two missing translation keys added — a direct consequence of the old hook not running paraglide-check. Clean fix.

CI green, mergeable.

APPROVED ✅ **`.husky/pre-push`**: Refactor is clean and correct. The old inlined steps genuinely drifted from `just qa` — skipping `codegen` (paraglide compile) broke pre-push on fresh checkouts with 30+ missing-decl TS errors. Delegating to `just qa` makes the justfile the single source of truth as intended. The `just`-on-PATH guard is good defensive hygiene. The `CHROMIUM_PATH` host fallback is correctly placed before `just qa` so the subprocess inherits it. **Test scope change**: pre-push now runs the full suite (`bun x turbo run test`) instead of affected-only (`--filter='...[origin/main]'`). Intentional and strictly more correct — PR validates 1080/1080 pass. **`fr.json`**: Two missing translation keys added — a direct consequence of the old hook not running `paraglide-check`. Clean fix. CI green, mergeable.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks!1124
No description provided.