name: object-map description: Work on Luxury Yacht object-map data, missing resource kinds, graph relationships, layout, renderer behavior, legend, debug snapshots, and tests
Object Map
Use this when touching object-map backend graph data, supported kinds, relationship edges, frontend model/layout/rendering, legend/copy, debug snapshots, or object-map tests.
Core Model
Object map is a scoped refresh snapshot domain named object-map.
It is not a rich detail service and not an SSE/resource-stream path. The backend snapshot builds graph data; the frontend filters, annotates, lays out, and renders that graph.
Read:
AGENTS.mdbackend/AGENTS.mdfor backend changesfrontend/AGENTS.mdfor frontend changesdocs/workflows/object-map.mddocs/architecture/shared-resource-model.mdwhen identity, status, facts, or relationships are involveddocs/architecture/refresh-system.mdwhen domain registration, scopes, or diagnostics are involved
Backend Entry Points
Start here for graph/data correctness:
backend/refresh/snapshot/object_map.goplus the per-kind collectors/edges inbackend/resources/<kind>/objectmap*.go, dispatched viabackend/refresh/snapshot/object_map_collector_registry.goandobject_map_edge_registry.gobackend/refresh/system/registrations.gobackend/resourcemodelfor shared facts, status, identity, and linksbackend/refresh/snapshot/object_map_test.goor adjacent object-map tests
Backend object-map work often needs:
- Typed collection for every supported kind.
- Complete object references with
clusterId,group,version,kind, and concrete namespace/name when openable. - Edges from shared-resource-model facts where possible.
- Permission checks for newly collected resources.
- Test fixtures that prove the graph includes nodes and edges, not just that no error occurred.
For Gateway API fake-client tests, explicit list reactors may be required. Use
gatewayfake.NewClientset() rather than deprecated constructors.
Frontend Entry Points
Start here for visible behavior:
frontend/src/modules/object-panel/components/ObjectPanel/objectMapSupport.tsfrontend/src/modules/object-map/ObjectMap.tsxfrontend/src/modules/object-map/useObjectMapModel.tsfrontend/src/modules/object-map/objectMapLayout.tsfrontend/src/modules/object-map/objectMapVisibleState.tsfrontend/src/modules/object-map/ObjectMapG6Renderer.tsxfrontend/src/modules/object-map/objectMapEdgeStyle.tsfrontend/src/modules/object-map/objectMapDebugStore.tsfrontend/src/modules/object-map/ObjectMap.css
Frontend object-map work often needs:
- Supported-kind allowlist updates.
- Payload/type updates if backend graph shape changes.
- Model/filter/collapse updates.
- Layout and visible-state updates.
- Renderer and apply-queue equality updates.
- Legend/palette/status styling updates.
- Targeted Vitest coverage for model/layout/renderer behavior.
Do not fix missing data by frontend-only labels or renderer patches when the backend graph is missing nodes, refs, or edges.
Sequencing
For missing kinds or missing links:
- Prove whether backend snapshot data contains the nodes and edges.
- If missing, fix backend collection/edge construction and tests first.
- Then update frontend support lists/types/model/rendering.
- Update
docs/workflows/object-map.mdif supported kinds, edge semantics, or user-facing behavior changed.
For visual-only renderer work:
- Confirm the data/model is already correct.
- Change frontend renderer/layout/styles only.
- Use browser or screenshot validation when visual behavior matters.
Checklist
- Backend graph includes the intended nodes.
- Backend graph includes the intended relationship edges.
- Openable refs are complete and include cluster/GVK/object identity.
- Permission checks cover newly listed resource types.
- Frontend kind support matches backend support.
- Payload types match backend shape.
- Model, visible state, layout, and renderer agree on new fields.
- Legend/copy uses user-facing terms such as "Objects" and "Links".
- Tests cover the changed graph or rendering behavior.
- Non-doc changes pass
mage qc:prerelease.
Validation
Use focused checks while iterating:
go test ./backend/refresh/snapshot -run ObjectMap
npm run test --prefix frontend -- object-map
npm run typecheck --prefix frontend
Then run the final gate for non-documentation work:
mage qc:prerelease