Align Model Atlas service identity
This commit is contained in:
parent
b597dab7ad
commit
076d2124ed
3 changed files with 33 additions and 16 deletions
|
|
@ -15,6 +15,7 @@
|
|||
"defaultView": "attention",
|
||||
"stateAuthority": "gamecult.model.entanglement_projection.v0",
|
||||
"presentationState": "provider-owned-ephemeral",
|
||||
"domainMutationRoute": "gamecult://swarm/{swarm_id}/workspace/{workspace_id}/epiphany/modeling",
|
||||
"viewOrder": [
|
||||
"attention",
|
||||
"drilldown",
|
||||
|
|
@ -110,7 +111,7 @@
|
|||
{
|
||||
"targetProp": "items",
|
||||
"pointerId": "epiphany.model-atlas.attention.items",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#attention",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#attention",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "CultMesh projection of entanglements currently requiring operator or owner attention."
|
||||
|
|
@ -132,7 +133,7 @@
|
|||
{
|
||||
"targetProp": "title",
|
||||
"pointerId": "epiphany.model-atlas.selected.title",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#selected.title",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#selected.title",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Provider-authored title for the selected entanglement."
|
||||
|
|
@ -149,7 +150,7 @@
|
|||
{
|
||||
"targetProp": "text",
|
||||
"pointerId": "epiphany.model-atlas.selected.summary",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#selected.summary",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#selected.summary",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Provider-authored relationship summary."
|
||||
|
|
@ -168,7 +169,7 @@
|
|||
{
|
||||
"targetProp": "value",
|
||||
"pointerId": "epiphany.model-atlas.selected.state",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#selected.state",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#selected.state",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Derived entanglement state owned by Epiphany Modeling."
|
||||
|
|
@ -204,7 +205,7 @@
|
|||
{
|
||||
"targetProp": "items",
|
||||
"pointerId": "epiphany.model-atlas.selected.claims",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#selected.claims",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#selected.claims",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Endpoint-owned claims retained without merging their authority."
|
||||
|
|
@ -240,7 +241,7 @@
|
|||
{
|
||||
"targetProp": "items",
|
||||
"pointerId": "epiphany.model-atlas.selected.evidence",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#selected.evidence",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#selected.evidence",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Verification evidence projected by Epiphany Modeling."
|
||||
|
|
@ -294,7 +295,7 @@
|
|||
{
|
||||
"targetProp": "nodes",
|
||||
"pointerId": "epiphany.model-atlas.graph.nodes",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#graph.nodes",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#graph.nodes",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Derived repository nodes for graphical lowering."
|
||||
|
|
@ -302,7 +303,7 @@
|
|||
{
|
||||
"targetProp": "edges",
|
||||
"pointerId": "epiphany.model-atlas.graph.edges",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#graph.edges",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#graph.edges",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Derived entanglement edges for graphical lowering."
|
||||
|
|
@ -338,7 +339,7 @@
|
|||
{
|
||||
"targetProp": "items",
|
||||
"pointerId": "epiphany.model-atlas.graph.linear",
|
||||
"sourceId": "cultmesh://gamecult.swarm/epiphany/modeling/entanglements#graph.linear",
|
||||
"sourceId": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#graph.linear",
|
||||
"schemaId": "gamecult.model.entanglement_projection.v0",
|
||||
"routeKind": "network",
|
||||
"routeDescription": "Linear projection of the same graph for compact and TUI lowerings."
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"schema": "gamecult.eve.provider_advertisement.v1",
|
||||
"providerId": "epiphany.model-atlas",
|
||||
"serviceId": "epiphany.modeling",
|
||||
"verseId": "gamecult.swarm",
|
||||
"rootVerse": "gamecult",
|
||||
"canonicalService": "gamecult.epiphany.modeling",
|
||||
"locatedService": "gamecult.swarm.epiphany.modeling",
|
||||
"cultMeshAddress": "cultmesh://gamecult.swarm/epiphany/modeling",
|
||||
"serviceId": "epiphany.model-entanglement-projector",
|
||||
"verseId": "gamecult-local",
|
||||
"rootVerse": "asgard",
|
||||
"canonicalService": "asgard.epiphany.model-atlas",
|
||||
"locatedService": "asgard.starfire.epiphany.model-atlas",
|
||||
"cultMeshAddress": "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas",
|
||||
"title": "Epiphany Model Atlas",
|
||||
"kind": "modeling.projection",
|
||||
"updatedAtUtc": "2026-08-14T00:00:00Z",
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
"gamecult.model.entanglement_projection.v0"
|
||||
],
|
||||
"ownership": "epiphany-owns-entanglement-projection-eve-renders-one-retained-tree",
|
||||
"domainMutationRoute": "gamecult://swarm/{swarm_id}/workspace/{workspace_id}/epiphany/modeling",
|
||||
"summary": "Attention-first cross-repo Modeling view with drilldown and a secondary graph from one typed CultMesh projection."
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import test from "node:test";
|
|||
import { findProviderCatalogEntry, mergeProviderAdvertisement } from "./provider-advertisements.mjs";
|
||||
|
||||
const projectionSchema = "gamecult.model.entanglement_projection.v0";
|
||||
const projectionSource = "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas/entanglements#";
|
||||
const domainMutationRoute = "gamecult://swarm/{swarm_id}/workspace/{workspace_id}/epiphany/modeling";
|
||||
const catalog = readJson("./local-provider-catalog.json");
|
||||
const advertisement = readJson("./fixtures/epiphany-model-atlas.provider-advertisement.json");
|
||||
const surface = readJson("./fixtures/epiphany-model-atlas-surface.json");
|
||||
|
|
@ -27,6 +29,13 @@ test("advertises one canonical Model Atlas surface to GUI and TUI consumers", ()
|
|||
const merged = mergeProviderAdvertisement(catalogProvider, advertisement);
|
||||
|
||||
assert.equal(merged.surfaces.length, 1);
|
||||
assert.equal(advertisement.providerId, "epiphany.model-atlas");
|
||||
assert.equal(advertisement.serviceId, "epiphany.model-entanglement-projector");
|
||||
assert.equal(advertisement.verseId, "gamecult-local");
|
||||
assert.equal(advertisement.rootVerse, "asgard");
|
||||
assert.equal(advertisement.canonicalService, "asgard.epiphany.model-atlas");
|
||||
assert.equal(advertisement.locatedService, "asgard.starfire.epiphany.model-atlas");
|
||||
assert.equal(advertisement.cultMeshAddress, "cultmesh://gamecult-local/asgard/starfire/epiphany/model-atlas");
|
||||
assert.equal(merged.surfaces[0].surfaceId, surface.surface.id);
|
||||
assert.equal(merged.surfaces[0].url, "./fixtures/epiphany-model-atlas-surface.json");
|
||||
assert.deepEqual(merged.surfaces[0].loweringTargets, ["gui", "tui"]);
|
||||
|
|
@ -34,6 +43,8 @@ test("advertises one canonical Model Atlas surface to GUI and TUI consumers", ()
|
|||
assert.equal(surface.surface.root.kind, "surface");
|
||||
assert.equal("nodes" in surface, false);
|
||||
assert.equal("selectedNodeId" in surface, false);
|
||||
assert.equal(merged.surfaces[0].domainMutationRoute, domainMutationRoute);
|
||||
assert.equal(surface.surface.root.props.domainMutationRoute, domainMutationRoute);
|
||||
});
|
||||
|
||||
test("keeps attention primary while retaining drilldown and a secondary graph", () => {
|
||||
|
|
@ -63,7 +74,7 @@ test("binds every modeled value to the Epiphany-owned CultMesh projection", () =
|
|||
|
||||
assert.ok(bindings.length >= 9);
|
||||
assert.ok(bindings.every(binding => binding.schemaId === projectionSchema));
|
||||
assert.ok(bindings.every(binding => binding.sourceId.startsWith("cultmesh://gamecult.swarm/epiphany/modeling/entanglements#")));
|
||||
assert.ok(bindings.every(binding => binding.sourceId.startsWith(projectionSource)));
|
||||
assert.ok(bindings.every(binding => binding.routeKind === "network"));
|
||||
assert.deepEqual(
|
||||
component("epiphany.model-atlas.graph").stateBindings.map(binding => binding.targetProp),
|
||||
|
|
@ -83,6 +94,10 @@ test("limits select and filter operations to provider-owned presentation state",
|
|||
.filter(Boolean);
|
||||
|
||||
assert.deepEqual([...surfaceCommands.keys()].sort(), [...advertisedCommands.keys()].sort());
|
||||
assert.deepEqual([...surfaceCommands.keys()].sort(), [
|
||||
"epiphany.model-atlas.presentation.filter",
|
||||
"epiphany.model-atlas.presentation.select",
|
||||
]);
|
||||
assert.deepEqual(controlCommands.sort(), [...surfaceCommands.keys()].sort());
|
||||
for (const command of [...advertisement.commands, ...surface.commands]) {
|
||||
assert.equal(command.presentationOnly, true);
|
||||
|
|
|
|||
Loading…
Reference in a new issue