diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index ab79090..e1034b8 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -18,7 +18,7 @@ | workplan | TREV-WP-0008 | finished | — | workplans/TREV-WP-0008-governance-and-pilot-rollout.md | | workplan | TREV-WP-0009 | finished | — | workplans/TREV-WP-0009-target-revenue-control-plane.md | | workplan | TREV-WP-0010 | finished | — | workplans/TREV-WP-0010-development-effort-calculator.md | -| workplan | TREV-WP-0011 | finished | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | +| workplan | TREV-WP-0011 | active | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | | workplan | TREV-WP-0012 | finished | — | workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md | | workplan | TREV-WP-0013 | finished | — | workplans/TREV-WP-0013-remission-credit-automation.md | | workplan | TREV-WP-0014 | finished | — | workplans/TREV-WP-0014-control-plane-extensions-breach-attestation-ui.md | @@ -90,7 +90,7 @@ | task | TREV-WP-0011-T02 | done | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | | task | TREV-WP-0011-T03 | done | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | | task | TREV-WP-0011-T04 | done | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | -| task | TREV-WP-0011-T05 | done | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | +| task | TREV-WP-0011-T05 | todo | — | workplans/TREV-WP-0011-railiance-reef-deployment.md | | task | TREV-WP-0012-T01 | done | — | workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md | | task | TREV-WP-0012-T02 | done | — | workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md | | task | TREV-WP-0012-T03 | done | — | workplans/TREV-WP-0012-phase-provenance-and-policy-modeling.md | diff --git a/docs/deployment.md b/docs/deployment.md index 9cfef68..0f40c18 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -41,19 +41,8 @@ Coulombcore ArgoCD Application exists for future multi-cluster sync but was `platform/workloads/target-revenue/runtime-secrets` (signing key, session secret, DSNs). 4. **Image:** `docker build/push …:0.1.1` (0.1.0 had schema-path bug; fixed). 5. **`kubectl apply -k k8s/railiance/`** on railiance01. -6. **Founding token:** bootstrap Job mints `founding-admin`. Canonical copy - lives in OpenBao (never commit): - - ```text - platform/operators/founding-admin/revenue - fields: token, credential_label, licensor_id, rights, host, ... - ``` - - ```bash - bao kv get -mount=platform operators/founding-admin/revenue - ``` - - Optional local cache: `~/.config/target-revenue/revenue-coulomb-binky.token`. +6. **Founding token:** bootstrap Job log → + `~/.config/target-revenue/revenue-coulomb-binky.token` (chmod 600; never commit). 7. **Phase POR:** re-registered `trsl:phase:info-tech-canon-service-surface` on the public API; local `trf-pilot-pg` is superseded (ledger was empty, so no entry migration). diff --git a/k8s/railiance/bootstrap-job.yaml b/k8s/railiance/bootstrap-job.yaml index aef4999..4f76169 100644 --- a/k8s/railiance/bootstrap-job.yaml +++ b/k8s/railiance/bootstrap-job.yaml @@ -30,7 +30,7 @@ spec: fsGroup: 10001 containers: - name: bootstrap - image: forgejo.coulomb.social/coulomb/target-revenue:0.1.3 + image: forgejo.coulomb.social/coulomb/target-revenue:0.1.1 imagePullPolicy: IfNotPresent env: - name: TRF_BOOTSTRAP_BINKY diff --git a/k8s/railiance/deployment.yaml b/k8s/railiance/deployment.yaml index 7c37cab..2ab4302 100644 --- a/k8s/railiance/deployment.yaml +++ b/k8s/railiance/deployment.yaml @@ -25,7 +25,7 @@ spec: fsGroup: 10001 containers: - name: target-revenue - image: forgejo.coulomb.social/coulomb/target-revenue:0.1.3 + image: forgejo.coulomb.social/coulomb/target-revenue:0.1.1 imagePullPolicy: IfNotPresent ports: - name: http diff --git a/k8s/railiance/migrate-job.yaml b/k8s/railiance/migrate-job.yaml index ff8f1c1..80b38e2 100644 --- a/k8s/railiance/migrate-job.yaml +++ b/k8s/railiance/migrate-job.yaml @@ -28,7 +28,7 @@ spec: fsGroup: 10001 containers: - name: migrate - image: forgejo.coulomb.social/coulomb/target-revenue:0.1.3 + image: forgejo.coulomb.social/coulomb/target-revenue:0.1.1 imagePullPolicy: IfNotPresent env: - name: TRF_RUN_MIGRATIONS diff --git a/src/target_revenue/service/combined.py b/src/target_revenue/service/combined.py index e61baa0..f59bf3c 100644 --- a/src/target_revenue/service/combined.py +++ b/src/target_revenue/service/combined.py @@ -15,7 +15,6 @@ default so a single Service port works without Traefik strip-prefix. from __future__ import annotations from fastapi import FastAPI -from fastapi.responses import RedirectResponse from .app import app as trust_service_app from .control_plane_app import app as control_plane_app @@ -28,12 +27,6 @@ def healthz() -> dict[str, str]: return {"status": "ok"} -@app.get("/ui") -def ui_no_trailing_slash() -> RedirectResponse: - """Browsers often hit /ui without a trailing slash; the mount needs /ui/.""" - return RedirectResponse(url="/ui/", status_code=307) - - # More specific mount first. app.mount("/ui", control_plane_app) app.mount("/", trust_service_app) diff --git a/src/target_revenue/service/control_plane_app.py b/src/target_revenue/service/control_plane_app.py index 2063317..402d646 100644 --- a/src/target_revenue/service/control_plane_app.py +++ b/src/target_revenue/service/control_plane_app.py @@ -166,22 +166,11 @@ def login_submit( token: str = Form(...), conn: Connection = Depends(get_connection), ): - # OpenBao / password-manager paste often includes trailing newlines or quotes. - cleaned = token.strip().strip('"').strip("'").strip() - if not cleaned: - return _redirect("/login", request, "Credential token is required.", "danger") try: - registry.authenticate(conn, cleaned) + registry.authenticate(conn, token) except registry.RegistrationError: - return _redirect( - "/login", - request, - "Invalid or revoked credential token. Use field `token` from " - "OpenBao path platform/operators/founding-admin/revenue " - "(not a runtime DSN or signing key).", - "danger", - ) - request.session["token"] = cleaned + return _redirect("/login", request, "Invalid or revoked credential token.", "danger") + request.session["token"] = token return _redirect("/", request) diff --git a/src/target_revenue/service/control_plane_templates/admin_credentials.html b/src/target_revenue/service/control_plane_templates/admin_credentials.html index d4a08fb..f5c1f3f 100644 --- a/src/target_revenue/service/control_plane_templates/admin_credentials.html +++ b/src/target_revenue/service/control_plane_templates/admin_credentials.html @@ -13,26 +13,26 @@ {% endif %}

Issue a new credential

-
- - - + + + Issue credential

Revoke a credential

-
- - + + + + + Revoke
{% endblock %} diff --git a/src/target_revenue/service/control_plane_templates/base.html b/src/target_revenue/service/control_plane_templates/base.html index 46ce3ba..f452806 100644 --- a/src/target_revenue/service/control_plane_templates/base.html +++ b/src/target_revenue/service/control_plane_templates/base.html @@ -3,8 +3,8 @@ {% block title %}Target Revenue Control Plane{% endblock %} - - + +