diff --git a/docs/core-hub-cutover-decision-coupling.md b/docs/core-hub-cutover-decision-coupling.md
index 71f24eb..4bae062 100644
--- a/docs/core-hub-cutover-decision-coupling.md
+++ b/docs/core-hub-cutover-decision-coupling.md
@@ -15,7 +15,7 @@ sign-off retires it.
| Question | Decision |
| --- | --- |
| Is legacy Inter-Hub still required for normal operation? | **No** — production ingress at `hub.coulomb.social` serves Core Hub since 2026-07-03. |
-| Is Inter-Hub fallback still required? | **Yes, rollback-only** until stabilization closes and `CORE-WP-0007-T02` is approved. |
+| Is Inter-Hub fallback still required? | **No** — `CORE-WP-0007` closed 2026-07-08; rollback deployments scaled to 0. |
| Are the three cutover gates satisfied? | **Yes** — deployed API smoke, staging import, and activity-core sink evidence all pass. |
| Can Phase 4 fin-hub work begin? | **Yes** — multi-hub pattern is proven at Level 2→3 boundary; fin models remain separate implementation. |
@@ -70,17 +70,14 @@ Consumers migrating from Inter-Hub `/api/v2` must account for:
## Rollback and Haskell Retirement Gates
-Rollback remains one ingress flip:
+Haskell retirement completed 2026-07-08 (`CORE-WP-0007`):
-1. Delete Core Hub ingress (`30-ingress.yaml`)
-2. Apply `rollback-inter-hub-ingress.yaml`
-3. Inter-Hub deployment stays running untouched through stabilization
+- Forgejo repo renamed to `coulomb/inter-hub-haskell` on railiance01 and CoulombCore
+- Rollback deployments scaled to `0` on both clusters; stale railiance01 ingress removed
+- haskelseed build lane parked; CI workflows are `workflow_dispatch` only
-`CORE-WP-0007` Haskell retirement requires:
-
-- stabilization window close (through 2026-07-10T17:35Z per workplan)
-- operator approval after repeated public probe pass
-- explicit decision that rollback is no longer operationally required
+Emergency rollback would require scaling Inter-Hub back up and re-applying
+`rollback-inter-hub-ingress.yaml` — not operationally maintained.
## Supersede Decisions
diff --git a/docs/ops-hub-service-catalog.md b/docs/ops-hub-service-catalog.md
index c01d55b..08271d8 100644
--- a/docs/ops-hub-service-catalog.md
+++ b/docs/ops-hub-service-catalog.md
@@ -17,8 +17,9 @@ operator can answer what is running where before the full standalone
| Hosts | 3 |
| Clusters | 3 |
| Services | 11 |
+| Services: not_applicable | 1 |
| Services: observed_ok | 6 |
-| Services: unknown | 5 |
+| Services: unknown | 4 |
## Service Catalog
@@ -31,7 +32,7 @@ operator can answer what is running where before the full standalone
| issue-core (issue-core) | CoulombCore
type: k3s; cluster: coulombcore-k3s; namespace: issue-core | issue-core | http://127.0.0.1:8765/healthz
Expected: status 200, version response | observed_ok
2026-07-02: REST emission live via cross-machine fleet path. | postgresql:issue-core | tunnel: observed_ok (railiance01 fleet-issue-core-coulombcore → cluster) | Target railiance01 overlay per CUST-WP-0054 drain Wave 4. |
| Core Hub (core-hub) | CoulombCore
type: k3s; cluster: coulombcore-k3s; namespace: core-hub-staging | core-hub | https://hub.coulomb.social/api/v2/hubs
Expected: status 200, hub list when authenticated | observed_ok
2026-07-02: Staging deployed; production cutover gated on CORE-WP-0005-T04. | postgresql:core-hub | k8s: observed_ok (coulombcore-k3s/core-hub-staging) | Production cutover to railiance01 pending operator approval. |
| Fleet Mesh (railiance01) (fleet-mesh-railiance01) | Railiance01
type: systemd; host: railiance01 | the-custodian
ops-bridge | http://127.0.0.1:18000/state/health
Expected: status 200 | observed_ok
2026-07-03: Workstation reverse tunnels stopped; systemd forwards healthy. | - | ssh-tunnel: observed_ok (railiance01 → coulombcore ClusterIPs) | Migrate to atm-fleet-mesh cert_command when VAULT_TOKEN available. |
-| Inter-Hub (inter-hub) | ThreePhoenix Production
type: external; public_endpoint: https://hub.coulomb.social | inter-hub | https://hub.coulomb.social/api/v2/openapi.json
Expected: status 200, OpenAPI document | unknown
2026-05-16: /home/worsch/helix-forge/wiki/OpsHubInventory.md | - | https: unknown (https://hub.coulomb.social) | ops-hub bootstrap requires authenticated UI flow or deployment-side migration. |
+| Inter-Hub Haskell (retired) (inter-hub-haskell) | ThreePhoenix Production
type: k3s; cluster: coulombcore-k3s; namespace: inter-hub | inter-hub-haskell | - | not_applicable
2026-07-08: CORE-WP-0007 Haskell retirement | - | - | - |
| activity-core (activity-core) | Railiance01
type: k3s; cluster: railiance01-k3s; namespace: activity-core | activity-core
the-custodian | activity-core API health endpoint
Expected: status 200, healthy DB and Temporal status | observed_ok
2026-05-23: API health, worker rollout, Temporal CLI schedule listing, and State Hub bridge were verified. | postgresql:activity-core
temporal:activity-core
nats:railiance01 | k8s: observed_ok (railiance01-k3s/activity-core) | Add explicit ops inventory probes and evidence events. |
| Ops Bridge (ops-bridge) | Local Workstation
type: bridge; host: local-workstation | ops-bridge | - | observed_ok
2026-07-03: state-hub-railiance01 and issue-core-railiance01 stopped; not production-critical. | - | ssh-tunnel: observed_ok (interactive dev tunnels only (k3s-api, state-hub-primary)) | Install ops-bridge on railiance01 or keep systemd fleet-mesh units. |
| Haskell Build Agent (haskell-build-agent) | Local Workstation
type: systemd; host: haskell-build-vm | the-custodian | http://127.0.0.1:18000
Expected: VM can reach State Hub through SSH forward | unknown
undated: Build agent is a systemd service and registers with State Hub on boot. | - | ssh: unknown (local workstation reverse tunnel port 12222) | Current tunnel and capability registration need live evidence in ops-hub. |
@@ -69,10 +70,6 @@ operator can answer what is running where before the full standalone
- Migrate to atm-fleet-mesh cert_command when VAULT_TOKEN available.
- Retire when State Hub and issue-core move to railiance01.
-### Inter-Hub (`inter-hub`)
-
-- ops-hub bootstrap requires authenticated UI flow or deployment-side migration.
-
### activity-core (`activity-core`)
- Add explicit ops inventory probes and evidence events.
diff --git a/ops/service-inventory.yml b/ops/service-inventory.yml
index 69f7059..f2fe6dd 100644
--- a/ops/service-inventory.yml
+++ b/ops/service-inventory.yml
@@ -324,39 +324,28 @@ services:
- "Migrate to atm-fleet-mesh cert_command when VAULT_TOKEN available."
- "Retire when State Hub and issue-core move to railiance01."
- - id: inter-hub
- name: "Inter-Hub"
+ - id: inter-hub-haskell
+ name: "Inter-Hub Haskell (retired)"
kind: governance-service
- lifecycle_state: observed
- health_status: unknown
+ lifecycle_state: retired
+ health_status: not_applicable
environment: threephoenix-prod
owner_repos:
- - inter-hub
+ - inter-hub-haskell
runtime:
- type: external
- public_endpoint: "https://hub.coulomb.social"
- endpoints:
- - id: inter-hub-openapi
- type: https
- url: "https://hub.coulomb.social/api/v2/openapi.json"
- expected_status: 200
- expected_signal: "OpenAPI document"
- - id: inter-hub-ui
- type: https
- url: "https://hub.coulomb.social/Hubs"
- expected_status: 302
- expected_signal: "login redirect when unauthenticated"
+ type: k3s
+ cluster: coulombcore-k3s
+ namespace: inter-hub
+ notes: "Rollback deployment scaled to 0; railiance01 inter-hub also scaled to 0."
+ endpoints: []
backing_stores: []
- access_paths:
- - type: https
- target: "https://hub.coulomb.social"
- status: unknown
+ access_paths: []
evidence:
- - type: document
- observed_at: "2026-05-16"
- source: "/home/worsch/helix-forge/wiki/OpsHubInventory.md"
- gaps:
- - "ops-hub bootstrap requires authenticated UI flow or deployment-side migration."
+ - type: progress
+ observed_at: "2026-07-08"
+ source: "CORE-WP-0007 Haskell retirement"
+ signal: "Forgejo rename coulomb/inter-hub-haskell; hub.coulomb.social serves Core Hub"
+ gaps: []
- id: activity-core
name: "activity-core"