generated from coulomb/repo-seed
196 lines
6.5 KiB
Markdown
196 lines
6.5 KiB
Markdown
---
|
|
id: RAIL-FAB-WP-0021
|
|
type: workplan
|
|
title: "Zone Boundary Overlays"
|
|
domain: railiance
|
|
repo: railiance-fabric
|
|
status: finished
|
|
owner: codex
|
|
topic_slug: railiance
|
|
created: "2026-05-24"
|
|
updated: "2026-05-24"
|
|
state_hub_workstream_id: "e9e2d47f-a965-4e2e-b65d-379dbb206a65"
|
|
---
|
|
|
|
# RAIL-FAB-WP-0021 - Zone Boundary Overlays
|
|
|
|
## Goal
|
|
|
|
Make deployment zones visible as labeled rectangular boundaries in the Fabric
|
|
graph explorer, so an operator can immediately see which nodes belong to local
|
|
dev, shared test, and production contexts.
|
|
|
|
This work builds on `RAIL-FAB-WP-0020` deployment overlay fields. Zone
|
|
boundaries are visual annotations over graph elements. They must not create new
|
|
fabric membership, ownership, security policy, or routing authority.
|
|
|
|
Initial display labels:
|
|
|
|
- `dev-tegwick` for the private developer-local overlay;
|
|
- `test` for shared test-stage services;
|
|
- `prod` for production services.
|
|
|
|
The implementation should keep the underlying graph explorable and avoid
|
|
turning zones into hard layout containers unless that proves necessary.
|
|
|
|
## Background
|
|
|
|
WP-20 added deployment overlay fields and graph explorer modes for:
|
|
|
|
- deployment environment;
|
|
- deployment scenario;
|
|
- routing authority;
|
|
- access zone;
|
|
- policy authority;
|
|
- route evidence.
|
|
|
|
The current UI can filter and summarize zone-oriented data, but the operator
|
|
still needs to infer the spatial grouping from node labels and details. The next
|
|
step is to draw zone boundaries around the visible nodes that share a deployment
|
|
zone, with a readable label on the boundary.
|
|
|
|
The likely implementation path is a graph-canvas overlay layer that computes
|
|
bounding rectangles from rendered node positions after layout, pan, zoom, filter,
|
|
or mode changes. This is preferred over changing graph topology to compound
|
|
parent nodes unless testing shows the overlay layer is too fragile.
|
|
|
|
## T01 - Define Zone Grouping And Labels
|
|
|
|
```task
|
|
id: RAIL-FAB-WP-0021-T01
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "91777c22-663c-443a-b682-38bfb7a864bf"
|
|
```
|
|
|
|
Define how graph explorer elements map to zone overlay groups.
|
|
|
|
Expected grouping rules:
|
|
|
|
- primary grouping field is `deploymentEnvironment`;
|
|
- `dev` nodes in the private local scenario render as `dev-tegwick`;
|
|
- `test` nodes render as `test`;
|
|
- `prod` nodes render as `prod`;
|
|
- nodes without deployment overlay data are not enclosed by a zone boundary;
|
|
- edge-only overlay evidence should affect zone warnings/details but should not
|
|
create a rectangle unless at least one visible node belongs to the zone.
|
|
|
|
Done when the grouping and label rules are documented in the graph explorer
|
|
contract or operations docs and have focused tests.
|
|
|
|
Result: documented environment/access-zone boundary rules in
|
|
`docs/graph-explorer-contract.md`; graph explorer maps `dev` to `dev-tegwick`,
|
|
legacy `staging` to `test`, `prod` to `prod`, and ignores catch-all `all`
|
|
environment values for rectangle boundaries.
|
|
|
|
## T02 - Render Rectangle Boundary Overlays
|
|
|
|
```task
|
|
id: RAIL-FAB-WP-0021-T02
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "98ef5ecc-fa4d-443c-a4fe-fa896984d6c4"
|
|
```
|
|
|
|
Draw labeled rectangular boundaries around the currently visible nodes in each
|
|
zone group.
|
|
|
|
Implementation expectations:
|
|
|
|
- compute rectangles from rendered node bounding boxes;
|
|
- add padding so borders do not collide with node labels;
|
|
- draw borders above the canvas background but below interaction-critical UI;
|
|
- keep zone labels readable at normal zoom levels;
|
|
- update rectangles after layout, pan, zoom, resize, filter, mode, focus,
|
|
manual override, and rule changes;
|
|
- hide a zone boundary when no visible nodes remain in that zone.
|
|
|
|
Done when the UI shows stable labeled rectangles for `dev-tegwick`, `test`, and
|
|
`prod` where matching nodes are visible.
|
|
|
|
Result: added a canvas overlay layer that computes padded rendered-node bounds,
|
|
draws labeled rectangles, updates after layout/pan/zoom/filter changes, and
|
|
hides empty zones.
|
|
|
|
## T03 - Add Zone Overlay Controls
|
|
|
|
```task
|
|
id: RAIL-FAB-WP-0021-T03
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "30d48d5c-bd53-434b-9b8b-ed1a495cee4e"
|
|
```
|
|
|
|
Add lightweight controls for zone boundaries without cluttering the graph
|
|
explorer toolbar.
|
|
|
|
Expected controls:
|
|
|
|
- toggle zone boundaries on or off;
|
|
- choose whether boundaries group by deployment environment or access zone if
|
|
both are useful;
|
|
- preserve the setting in copied URL state and browser-local profiles.
|
|
|
|
Done when operators can turn the overlay off for dense graph inspection and
|
|
restore it through shared/saved view state.
|
|
|
|
Result: added map controls for zone visibility and grouping by deployment
|
|
environment or access zone, with URL/profile state preservation.
|
|
|
|
## T04 - Surface Zone Boundary Details
|
|
|
|
```task
|
|
id: RAIL-FAB-WP-0021-T04
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "c002aa54-a243-4912-81ae-0d282910ebc6"
|
|
```
|
|
|
|
Make a zone boundary useful when inspected.
|
|
|
|
Expected behavior:
|
|
|
|
- clicking or selecting a zone label should show zone summary details;
|
|
- details should include visible node count, deployment environment, scenarios,
|
|
access zones, routing authorities, and route-without-policy-authority warnings;
|
|
- zone selection should not replace node/edge selection semantics permanently;
|
|
- a zone-focused view should be possible via existing focus/rule mechanisms if
|
|
it can be done simply.
|
|
|
|
Done when a zone label provides the same core answers as the WP-20 map overview,
|
|
but scoped to that zone.
|
|
|
|
Result: zone labels are clickable and show scoped counts for visible nodes,
|
|
environments, scenarios, access zones, routing authorities, policy authorities,
|
|
and route-without-policy-authority warnings; existing focus/highlight/hide
|
|
orientation actions work for zone contexts.
|
|
|
|
## T05 - Verify Responsive And Dense Graph Behavior
|
|
|
|
```task
|
|
id: RAIL-FAB-WP-0021-T05
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "03f265ad-f335-4caf-a882-35d8d30c75fc"
|
|
```
|
|
|
|
Verify that zone rectangles remain useful across normal operator viewports and
|
|
dense graphs.
|
|
|
|
Checks should cover:
|
|
|
|
- desktop and narrower browser widths;
|
|
- full graph mode and deployment zone modes;
|
|
- filtered views where a zone has only one or two nodes;
|
|
- hidden/removed nodes from rule and manual override controls;
|
|
- graph pan/zoom/layout changes;
|
|
- no incoherent overlap between labels, controls, and detail panels.
|
|
|
|
Done when automated tests cover the computed grouping behavior and a browser
|
|
smoke check confirms the canvas overlay is visible and aligned.
|
|
|
|
Result: static UI tests cover the zone controls/helpers; JavaScript syntax was
|
|
checked with `node --check`; the full test suite and validator pass; a headless
|
|
Edge smoke screenshot confirmed visible labeled boundaries in deployment
|
|
environment mode.
|