Files
inter-hub/workplans/IHUB-WP-0014-pre-flight-deployment-gaps.md
tegwick 7c85b1ed5a
Some checks failed
Test / test (push) Has been cancelled
chore(workplans): close WP-0014, WP-0015, WP-0017 as done
All three active inter-hub workplans are complete:
- WP-0017: all E1–E5 done (clean build, 615 modules)
- WP-0014: A1–A5 done (smoke test passed on haskelseed 2026-04-29)
- WP-0015: B1–B7 done (static pages live, root route fixed)

Release: v0.2.0-alpha.1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 13:50:46 +02:00

79 lines
3.1 KiB
Markdown

---
id: IHUB-WP-0014
type: workplan
title: "Pre-flight: Close Deployment Gaps"
domain: inter_hub
repo: inter-hub
status: done
owner: custodian
topic_slug: inter_hub
created: "2026-04-03"
updated: "2026-04-04"
state_hub_sync: done
state_hub_workstream_id: "532761e7-7c97-42e6-a5ea-59a972a80230"
---
# IHUB-WP-0014 — Pre-flight: Close Deployment Gaps
## Goal
Reach a verified, locally-runnable state of inter-hub before building the
public-facing intro/tutorial UI. Three concrete gaps must be closed: CSS
pipeline not building, no admin user seeding, and the build never verified
in this environment.
## Background
All 12 IHF phases are implemented (58 controllers, 115+ views, 1102-line schema,
13 migrations). Nix/direnv are installed. However:
- `static/app.css` is empty (0 bytes) — Tailwind build command is commented
out in `flake.nix`; views use Tailwind classes throughout all phases.
- `Application/Fixtures.sql` is empty — no default admin user, so the app is
inaccessible after a clean DB init.
- The codebase has never been compiled in this environment — compilation errors
from any of the 12 phases would block everything else.
## Tasks
### A1 — Attempt first build ✓
Build achieved on haskelseed (Alpine 3.23, GHC 9.10.3, IHP 1.5) via
RunDevServer. 615/616 modules loaded cleanly (IHUB-WP-0017).
### A2 — Fix compilation errors ✓
Resolved proactively before first build based on static analysis of all 140+
modified files. Key fixes (commit f1978c3):
- Removed inline FK constraints from Schema.sql (IHP schema parser cannot
parse them); restored via `1744329600-restore-fk-constraints.sql`.
- Renamed `#label``#label_` to avoid Haskell built-in clash.
- Fixed UUID comparisons (`toUUID hub.id`).
- Replaced `setStatus`/`respondJson` with `renderJsonWithStatusCode`.
- Refactored 100+ HSX inline lambdas to named helper functions (GHC type
inference limitation in quasi-quotes).
- Fixed missing imports throughout helpers and controllers.
- Moved type-registry INSERT seeds to `1744502400-seed-type-registries.sql`.
### A3 — Enable Tailwind build pipeline ✓
- `tailwindcss` added to `flake.nix` packages.
- `tailwind.exec` process uncommented in devenv shell.
- `tailwind/tailwind.config.js` and `tailwind/app.css` created.
- `static/app.css` will be populated when `devenv up` runs the watcher.
### A4 — Admin user seed migration ✓
- `Application/Migration/1744416000-seed-admin-user.sql`: inserts
`admin@inter-hub.local` / `admin1234!` (bcrypt cost 10).
- `.env.example` added documenting all required env vars and admin creds.
### A5 — Smoke test ✓
Verified on haskelseed (192.168.178.135:8080, Alpine 3.23, 2026-04-29):
login works, hub list renders styled, all dashboards load, API v2 requires
API key (correct — 401 on unauthenticated call). Tagged v0.2.0-alpha.1.
## Exit Criteria
- `devenv up` starts cleanly with no compilation errors
- `static/app.css` is non-empty (Tailwind output present)
- Login with seeded admin user succeeds at `http://localhost:8000`
- Hub list page renders with correct styling
- Smoke test A5 passes for all five checks