fix(binjovi): admit the dashboard command routes at the gateway #88
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/binjovi-dashboard-command-routes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The dashboard cancel Build button does nothing. So do cancel release, retry
release, cancel Deploy, retry Deploy, and the release batch button.
The dashboard sends every command through the
/api/v1/uialias.Binjovi.Api.DashboardHTTPrewrites that alias to the canonical API path andanswers with an HTML fragment for htmx. Oathkeeper matches the alias, and no
rule admitted it, so the gateway answered 404 before the request reached
Binjovi. The earlier app-side cancel fixes (CTRL-BUILD-01, CTRL-BUILD-02)
landed on a path that no request could reach.
Measured on the live gateway before this change:
Two POST rules now admit the alias. Both need a browser session or a service
JWT, and both emit the signed
id_token. The API router keeps the state,actor, origin, and idempotency checks.
tests/binjovi-dashboard-command-route-contract.shholds the command path set,asserts POST only, and rejects a broader URL.
https://claude.ai/code/session_01Cjo1R6zUbrgs2NM7SnnrDQ
The Binjovi dashboard sends every command through the /api/v1/ui alias. Binjovi.Api.DashboardHTTP rewrites that alias to the canonical API path and answers with an HTML fragment for htmx. Oathkeeper matches the alias, and no rule admitted it. The gateway answered 404 before the request reached Binjovi, so the cancel Build, cancel release, retry release, cancel Deploy, retry Deploy and release batch buttons all did nothing. Two POST rules now admit the alias. Both need a browser session or a service JWT, and both emit the signed id_token. The API router keeps the state, actor, origin, and idempotency checks. Measured on the live gateway before this change: POST /api/v1/releases/<id>/cancel 409 reached Binjovi POST /api/v1/deployments/<id>/retry 409 reached Binjovi POST /api/v1/ui/builds/<id>/cancel 404 gateway POST /api/v1/ui/releases/<id>/cancel 404 gateway POST /api/v1/ui/deployments/<id>/retry 404 gateway tests/binjovi-dashboard-command-route-contract.sh holds the command path set and rejects a broader URL. Claude-Session: https://claude.ai/code/session_01Cjo1R6zUbrgs2NM7SnnrDQ