generated from coulomb/repo-seed
chore: record railiance deployment review
Some checks failed
Build and Deploy / build-push-deploy (push) Has been cancelled
Some checks failed
Build and Deploy / build-push-deploy (push) Has been cancelled
This commit is contained in:
@@ -8,7 +8,7 @@ status: active
|
|||||||
owner: custodian
|
owner: custodian
|
||||||
topic_slug: inter_hub
|
topic_slug: inter_hub
|
||||||
created: "2026-04-29"
|
created: "2026-04-29"
|
||||||
updated: "2026-06-04"
|
updated: "2026-06-05"
|
||||||
depends_on: IHUB-WP-0015
|
depends_on: IHUB-WP-0015
|
||||||
state_hub_workstream_id: "080d841a-3acd-4adf-b684-2d1890a5e986"
|
state_hub_workstream_id: "080d841a-3acd-4adf-b684-2d1890a5e986"
|
||||||
---
|
---
|
||||||
@@ -68,13 +68,31 @@ no indexed task rows for it. The deployment work is not complete; this file now
|
|||||||
contains explicit task blocks so the hub can track the remaining Railiance01
|
contains explicit task blocks so the hub can track the remaining Railiance01
|
||||||
deployment work instead of treating the workplan as empty.
|
deployment work instead of treating the workplan as empty.
|
||||||
|
|
||||||
|
## Deployment Review - 2026-06-05
|
||||||
|
|
||||||
|
Review against the current repo and public Railiance endpoint shows the
|
||||||
|
deployment scaffold is partially implemented but the live deployment is behind
|
||||||
|
`origin/main`.
|
||||||
|
|
||||||
|
- `origin/main` is at `a3d980c`, which includes the completed ops-hub bootstrap
|
||||||
|
API work from `IHUB-WP-0019`.
|
||||||
|
- `https://hub.coulomb.social/` returns 200 and serves inter-hub.
|
||||||
|
- The public OpenAPI only lists the older v2 endpoints; it does not include
|
||||||
|
`/hubs`, `/hub-capability-manifests`, `/api-consumers`, or `/policy-scopes`.
|
||||||
|
- Unauthenticated `/api/v2/hubs` returns 404 publicly, while current source
|
||||||
|
should route it and return 401. This means ops-hub bootstrap cannot run
|
||||||
|
against production until the current image is deployed.
|
||||||
|
- The registry endpoint returns the expected unauthenticated `/v2/` 401
|
||||||
|
challenge, but this workspace does not have `kubectl`, so R3 cluster readiness
|
||||||
|
cannot be fully verified from here.
|
||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
### R1 — Add OCI image build to flake.nix
|
### R1 - Add OCI image build to flake.nix
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: IHUB-WP-0018-T01
|
id: IHUB-WP-0018-T01
|
||||||
status: todo
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "27420bd7-0f70-4793-8805-393d8d5cacfd"
|
state_hub_task_id: "27420bd7-0f70-4793-8805-393d8d5cacfd"
|
||||||
```
|
```
|
||||||
@@ -105,9 +123,14 @@ docker run --rm -p 8000:8000 -e DATABASE_URL=... -e IHP_SESSION_SECRET=... inter
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Note:** First build pulls the full Haskell binary closure (~2 GB); subsequent
|
**Note:** First build pulls the full Haskell binary closure (~2 GB); subsequent
|
||||||
builds are incremental (layer caching). Build must run on haskelseed — the only
|
builds are incremental (layer caching). Build must run on haskelseed - the only
|
||||||
machine with the Nix store populated for GHC 9.10.3.
|
machine with the Nix store populated for GHC 9.10.3.
|
||||||
|
|
||||||
|
**Implementation note (2026-06-05):** `flake.nix` exposes `packages.docker =
|
||||||
|
config.packages.unoptimized-docker-image`, the IHP-provided production OCI
|
||||||
|
image used by the Railiance runbook. The original `buildLayeredImage` sketch is
|
||||||
|
superseded by that IHP image path.
|
||||||
|
|
||||||
### R2 — Verify container runs correctly
|
### R2 — Verify container runs correctly
|
||||||
|
|
||||||
```task
|
```task
|
||||||
@@ -152,6 +175,12 @@ Also confirm:
|
|||||||
If any check fails, block here and open the relevant Railiance workstream.
|
If any check fails, block here and open the relevant Railiance workstream.
|
||||||
Do not proceed until all checks pass.
|
Do not proceed until all checks pass.
|
||||||
|
|
||||||
|
**Review note (2026-06-05):** Public smoke probes show
|
||||||
|
`https://hub.coulomb.social/` returning 200 and the Gitea registry `/v2/`
|
||||||
|
endpoint returning the expected unauthenticated 401 challenge. Full R3 remains
|
||||||
|
blocked from this workspace because `kubectl` is not available here, and the
|
||||||
|
live app is not serving the current `origin/main` v2 bootstrap routes.
|
||||||
|
|
||||||
### R4 — Provision inter-hub database on railiance-platform
|
### R4 — Provision inter-hub database on railiance-platform
|
||||||
|
|
||||||
```task
|
```task
|
||||||
@@ -202,7 +231,7 @@ using the age key from a Kubernetes Secret (bootstrapped once manually).
|
|||||||
|
|
||||||
```task
|
```task
|
||||||
id: IHUB-WP-0018-T06
|
id: IHUB-WP-0018-T06
|
||||||
status: blocked
|
status: in_progress
|
||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "4c4acc98-5773-4289-ad57-03f3fd5c381c"
|
state_hub_task_id: "4c4acc98-5773-4289-ad57-03f3fd5c381c"
|
||||||
```
|
```
|
||||||
@@ -234,11 +263,17 @@ chart = "railiance-apps/helm/inter-hub"
|
|||||||
namespace = "inter-hub"
|
namespace = "inter-hub"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Implementation note (2026-06-05):** A Helm chart exists in
|
||||||
|
`deploy/helm/inter-hub/` with Deployment, Service, Ingress, and values for the
|
||||||
|
current Gitea registry and `hub.coulomb.social`. Remaining gaps: no repo-root
|
||||||
|
`app.toml`, no committed SOPS secret manifest, and no separate
|
||||||
|
`railiance-apps/helm/inter-hub` handoff in this repo.
|
||||||
|
|
||||||
### R7 — Gitea Actions CI/CD pipeline
|
### R7 — Gitea Actions CI/CD pipeline
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: IHUB-WP-0018-T07
|
id: IHUB-WP-0018-T07
|
||||||
status: blocked
|
status: in_progress
|
||||||
priority: medium
|
priority: medium
|
||||||
state_hub_task_id: "ec25c67c-3cb0-4534-9fb0-9bd6578a2def"
|
state_hub_task_id: "ec25c67c-3cb0-4534-9fb0-9bd6578a2def"
|
||||||
```
|
```
|
||||||
@@ -277,6 +312,13 @@ Secrets in Gitea: `REGISTRY`, `SSH_KEY_HASKELSEED`, `SSH_KEY_COULOMBCORE`.
|
|||||||
**Alternative if self-hosted runner is available on CoulombCore:** run the
|
**Alternative if self-hosted runner is available on CoulombCore:** run the
|
||||||
deploy step directly without the SSH hop to coulombcore.
|
deploy step directly without the SSH hop to coulombcore.
|
||||||
|
|
||||||
|
**Implementation note (2026-06-05):** `.gitea/workflows/deploy.yaml` exists and
|
||||||
|
builds `.#docker` on a self-hosted `haskelseed` runner, pushes to
|
||||||
|
`92.205.130.254:32166/coulomb/inter-hub`, deploys with Helm, and smoke-tests
|
||||||
|
the public endpoint. Remote `main` is already current, but production is still
|
||||||
|
serving an older API surface, so the workflow needs an attended rerun/inspection
|
||||||
|
or a new deployment trigger.
|
||||||
|
|
||||||
### R8 — Staged deployment and smoke test
|
### R8 — Staged deployment and smoke test
|
||||||
|
|
||||||
```task
|
```task
|
||||||
@@ -311,7 +353,7 @@ Follow the Railiance staged promotion lifecycle:
|
|||||||
|
|
||||||
```task
|
```task
|
||||||
id: IHUB-WP-0018-T09
|
id: IHUB-WP-0018-T09
|
||||||
status: blocked
|
status: in_progress
|
||||||
priority: medium
|
priority: medium
|
||||||
state_hub_task_id: "4d1e55c7-8dbb-480f-b07b-6c5e39a04218"
|
state_hub_task_id: "4d1e55c7-8dbb-480f-b07b-6c5e39a04218"
|
||||||
```
|
```
|
||||||
@@ -319,9 +361,15 @@ state_hub_task_id: "4d1e55c7-8dbb-480f-b07b-6c5e39a04218"
|
|||||||
secret rotation, rollback (`railiance rollback inter-hub`), log access
|
secret rotation, rollback (`railiance rollback inter-hub`), log access
|
||||||
(`kubectl logs -n inter-hub -l app=inter-hub --tail=100`)
|
(`kubectl logs -n inter-hub -l app=inter-hub --tail=100`)
|
||||||
- Add progress event to state hub
|
- Add progress event to state hub
|
||||||
- Remove haskelseed socat/OpenRC production role note from quickstart —
|
- Remove haskelseed socat/OpenRC production role note from quickstart -
|
||||||
document it as the build machine only, not the production host
|
document it as the build machine only, not the production host
|
||||||
|
|
||||||
|
**Implementation note (2026-06-05):** `deploy/railiance/RUNBOOK.md` exists and
|
||||||
|
documents architecture, image build/push, Helm deployment, logs, restart,
|
||||||
|
rollback, secret rotation, and smoke checks. The deployment record remains
|
||||||
|
incomplete until current `main` is running and the ops-hub bootstrap smoke test
|
||||||
|
passes against production.
|
||||||
|
|
||||||
## Exit Criteria
|
## Exit Criteria
|
||||||
|
|
||||||
- `https://hub.coulomb.social/` returns the Landing page (200, no auth)
|
- `https://hub.coulomb.social/` returns the Landing page (200, no auth)
|
||||||
|
|||||||
Reference in New Issue
Block a user