11 Commits

Author SHA1 Message Date
1ba64dd00f docs(deploy): record production gate recovery 2026-06-14 21:47:03 +02:00
e4e13ff1fd docs(deploy): record inter-hub DNS gate finding 2026-06-14 20:42:12 +02:00
e9a9eaa607 chore(deploy): add custody recovery drill target [skip ci] 2026-06-14 18:33:50 +02:00
d93185269b chore(deploy): add encrypted runtime secret source [skip ci] 2026-06-14 17:58:11 +02:00
333fbcc237 chore(deploy): add railiance handoff guardrails [skip ci] 2026-06-14 16:47:24 +02:00
5ac4c453b8 fix(deploy): use reachable gitea registry host
Some checks failed
Build and Deploy / build-push-deploy (push) Failing after 5m54s
2026-06-14 15:00:59 +02:00
6078c48289 fix: registry list crash and logout 405
Some checks failed
Build and Deploy / build-push-deploy (push) Has been cancelled
IHP NameSupport cannot parse trailing-underscore field names at runtime.
orderByAsc #label_ in all four registry list actions (and the API V2
equivalents) crashed the page with ParseErrorBundle. Changed to orderByAsc
#name which avoids the NameSupport conversion path entirely.

textField #label_ in the four registry form views has the same issue.
Replaced with a plain <input> element that reads entry.label_ directly.

Logout <a href={DeleteSessionAction}> sent GET but IHP requires DELETE.
IHP includes methodOverridePost middleware, so a POST form with
_method=DELETE handles this correctly.

Also corrected the seed admin-user migration hash from bcrypt to the
pwstore-fast format (sha256|17|...) that IHP actually uses.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 00:05:02 +02:00
a60cc24914 fix(deploy): remove broken init container, document registry push workaround
Some checks failed
Build and Deploy / build-push-deploy (push) Has been cancelled
The Helm init container used /bin/RunProdServer which doesn't exist in IHP's
Nix Docker image (binary is at a Nix store path). Additionally, IHP v1.5's
RunProdServer starts the server after migrating — it never exits — so init
containers are the wrong pattern. IHP applies schema changes on startup.

Changes:
- Remove initContainers block from deployment.yaml entirely
- Set runMigrations: false as default in values.yaml
- Update RUNBOOK.md with correct skopeo push procedure (pre-fetch bearer token
  to work around Gitea's misconfigured token realm URL: port 80 vs actual 32166)
- Add note that the Nix image has no /bin/sh or /bin/RunProdServer wrapper

k3s registry auth: credentials added to /etc/rancher/k3s/registries.yaml and
iptables DNAT rule added on Railiance01 (92.205.130.254:80 → 32166) so the
ACME token realm redirect works. hub.coulomb.social DNS A record still needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-02 17:45:59 +02:00
9cbf4caadf fix(nix): fix GHC 9.10.3 interface-file crash and binary name
Generated.Types imports 119 modules, pushing the combined .hi read past
a ~287 MB binary-deserialization limit in GHC 9.10.3. Fix by adding a
nixpkgs overlay that patches the inter-hub-models derivation: replaces
Generated/Types.hs with a thin TypesPart1/TypesPart2 re-export wrapper
after build-generated-code runs, and adds the two split modules to the
cabal exposed-modules list.

Also fix the production binary name from /bin/App to /bin/RunProdServer
in deployment.yaml and RUNBOOK.md (the IHP NixSupport build produces
RunProdServer, not App). Switch packages.docker to IHP's built-in
unoptimized-docker-image which already uses the correct binary path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 23:16:44 +02:00
0a72ee91ea feat(WP-0018/R6): Helm chart and runbook for Railiance01 deployment
Some checks failed
Test / test (push) Has been cancelled
Helm chart at deploy/helm/inter-hub/ with Deployment, Service, Ingress
(Traefik + letsencrypt-prod), and migration init container. Runbook at
deploy/railiance/RUNBOOK.md with build, push, rotate, rollback procedures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 18:06:44 +02:00
68ef06b504 chore(deploy): add haskelseed Alpine startup scripts
Some checks failed
Test / test (push) Has been cancelled
OpenRC init script + RunDevServer env wrapper for the haskelseed build VM
(Alpine 3.23, GHC 9.10.3, IHP 1.5). IHP DevServer binds to 127.0.0.1:8000
so socat forwards 0.0.0.0:8080 → 127.0.0.1:8000 for external access.

Deploy steps are documented in the file headers.

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