feat(WP-0016/C1-C4): Layer 2 isolation and clean-base infrastructure

- Add Web/Controller/Prelude.hs (was missing; 8 controllers failed to import it)
- Add .ghci-core and scripts/compile-check-core to compile Layer 1+2 in
  isolation without loading Main.hs or any controller/view (Layer 3)
- Fix Application/Helper/BottleneckDetector.hs: replace coerce :: Id' -> UUID
  with unpackId (IHP Id' wraps a type family; Data.Coerce cannot cross it)
- Fix devenv.nix: add pkgs.nodePackages.tailwindcss so devenv process scripts
  find the tailwindcss binary (devenv v2 builds scripts with only local packages)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-10 15:38:01 +00:00
parent 3d2e8ec9e1
commit 64a9d4eeb4
5 changed files with 128 additions and 9 deletions

20
scripts/compile-check-core Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
# scripts/compile-check-core
#
# Verify Layer 1 + Layer 2 compile cleanly in isolation — WITHOUT loading
# any controller, view, or Main.hs. Use this to establish and confirm the
# clean base before working on Layer 3 (controllers/views).
#
# Usage (inside devenv shell):
# scripts/compile-check-core # interactive
# scripts/compile-check-core --bg # write to log only
#
# Once this reports "Ok, N modules loaded" with no errors, the core is clean.
set -euo pipefail
LOGFILE="${IHUB_COMPILE_LOG:-/tmp/ihub-core-errors.txt}"
: > "$LOGFILE"
echo "[compile-check-core] Writing to $LOGFILE"
exec ghcid \
--no-title \
--outputfile "$LOGFILE" \
--command "ghci -ghci-script .ghci-core"