openova/products
e3mrah 11dd19e519
fix(provision-monitor): chroot-correct paths in Sidebar / JobsTable / FlowPage (#983 follow-up) (#998)
While the operator monitors an in-flight Sovereign from the mothership
wizard surface (`console.openova.io/sovereign/provision/$deploymentId/...`),
every internal link MUST stay scoped under that prefix. Today, three
places escape the chroot to clean root paths intended for the
Sovereign's adult hostname:

1. Sidebar.tsx (mother-monitor sidebar): FLAT_NAV[*].to and SETTINGS_ITEM.to
   were hardcoded to clean roots like '/jobs', '/cloud' — clicking a nav
   item bounced the operator out of /provision/<id>/* to /sovereign/jobs
   (which is either Sovereign-Console route on contabo's mothership view
   = 404, or the Sovereign-on-clean-root on adult view = wrong context).
   Restore the canonical /provision/$deploymentId/<page> TanStack template;
   the params={{ deploymentId }} prop already feeds the substitution.

2. JobsTable.tsx (job row + parent-chip Links): `to=`/jobs/$jobId`` is
   valid on the Sovereign adult surface but escapes the chroot on the
   mother monitor view. Add a useJobLinkBuilder hook that returns
   /provision/<id>/jobs/<jobId> on Catalyst-Zero hostnames and
   /jobs/<jobId> on Sovereign hostnames.

3. FlowPage.tsx (canvas leaf-job click navigate): same chroot escape.
   Same mode-aware target construction.

The chroot rule (founder framing): the operator CANNOT distinguish
'I'm monitoring my child being born under /provision/<id>/' from
'I'm at home on the adult Sovereign console' visually — every page,
sidebar, link, and chip must look identical (#983 pixel-byte-byte
contract). This commit closes the navigation half of that contract
on the mother side; PR #983 already covered the data-fetch half.

Closes the bug surfaced live on otech118 mid-provision: clicking Jobs
in the sidebar from /sovereign/provision/571a382deb47e50a/dashboard
sent the operator to /sovereign/jobs (404 / wrong scope), and a row
click sent them to /sovereign/jobs/571a382...:install-valkey instead
of /sovereign/provision/<id>/jobs/<id>:install-valkey.

Co-authored-by: hatiyildiz <hatice.yildiz@openova.io>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 23:25:02 +04:00
..
axon feat(axon): make qwen3-coder thinking mode toggleable via request parameter 2026-04-26 09:20:33 +02:00
catalyst fix(provision-monitor): chroot-correct paths in Sidebar / JobsTable / FlowPage (#983 follow-up) (#998) 2026-05-05 23:25:02 +04:00
cortex docs(pass-52): bundled date-sweep + cross-component namespace clean; knative clean 2026-04-28 00:37:21 +02:00
fabric docs(seaweedfs+guacamole): replace MinIO with SeaweedFS as unified S3 encapsulation; add Guacamole to bp-relay 2026-04-28 10:23:46 +02:00
fingate docs(pass-52): bundled date-sweep + cross-component namespace clean; knative clean 2026-04-28 00:37:21 +02:00
relay docs(seaweedfs+guacamole): replace MinIO with SeaweedFS as unified S3 encapsulation; add Guacamole to bp-relay 2026-04-28 10:23:46 +02:00