From 55c75e3bd00d968f993fb9cfbee6f72bfe9b313a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 22 Oct 2026 20:13:36 +0200 Subject: [PATCH] Quarantine the Eve operator surface publisher; Eve is deprecated, rebuild on Thing 2 Removes buildOperatorSurface, the surface_state and interface_binding documents, eve-surfaces.cc and the surface advertisement entries. Typed state and the provider advertisement stay. Parked at parked/weksa-eve-surface per thing2:ruling:eve-dashboards-quarantined. Co-Authored-By: Claude Sonnet 5.5 --- README.md | 2 +- docs/architecture.md | 2 +- .../weksa-provider-advertisement.json | 111 +----------------- docs/roadmap.md | 6 +- docs/verse-service-contract.md | 19 +-- scripts/weksa-daemon.mjs | 107 +---------------- tools/export-provider-advertisement.mjs | 32 +---- 7 files changed, 14 insertions(+), 265 deletions(-) diff --git a/README.md b/README.md index 49de6a7..a2a51bf 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ meaning-packet contract Weksa clients should target. See [Verse Service Contract](./docs/verse-service-contract.md) for the daemon contract: Weksa owns typed conversational intent, pronunciation plans, utterance -handoffs, and the Eve/CultMesh surfaces that make those documents inspectable. +handoffs, and the typed CultMesh state that makes those documents inspectable. Eve is deprecated and Thing 2 is its successor; the operator Eve surface is quarantined (see the contract). See [Multilingual Utterance Lowering](./docs/multilingual-utterance-lowering.md) for the shared lowering target: interlingua projected through speaker state into diff --git a/docs/architecture.md b/docs/architecture.md index 06cb09f..db24c43 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -4,7 +4,7 @@ Weksa is the language-intent daemon surface: currently a state spine, pipeline map, fixtures, and service contract waiting for its runtime loop. See [Verse Service Contract](./verse-service-contract.md) for the -CultCache/CultMesh/Eve authority map. +CultCache/CultMesh authority map. ## Objective diff --git a/docs/fixtures/weksa-provider-advertisement.json b/docs/fixtures/weksa-provider-advertisement.json index f7ec25b..e2b03ba 100644 --- a/docs/fixtures/weksa-provider-advertisement.json +++ b/docs/fixtures/weksa-provider-advertisement.json @@ -2,7 +2,7 @@ "schema": "gamecult.eve.provider_advertisement.v1", "providerId": "weksa.intent.service", "title": "Weksa Intent Service", - "description": "Weksa converts writing, interlingua, and agent state into typed conversational intent, target-language realizations, pronunciation plans, speech-provider requests, and utterance handoff documents for AquaSynth and other consumers.", + "description": "Weksa converts writing, interlingua, and agent state into typed conversational intent, pronunciation plans, and utterance handoff documents for AquaSynth and other consumers.", "mode": "fixture-read-only", "serviceVerse": { "id": "verse.weksa.service.v1", @@ -12,7 +12,6 @@ "typed conversational intent", "pronunciation plans", "utterance handoff documents", - "speech-provider request projections", "lowering traces", "language-project and flavor-profile state" ], @@ -20,7 +19,6 @@ "AquaSynth learned embeddings", "Faust compilation", "rendered audio", - "MiMo provider audio", "Persona canonical state" ] }, @@ -53,23 +51,13 @@ "weksa.utterance_embedding_handoff.v0.1" ] }, - { - "id": "weksa.speech_provider", - "kind": "speech_provider", - "cultMeshKey": "weksa.speech-provider/requests", - "authority": "Weksa speech-provider request projection", - "schemas": [ - "weksa.mimo_tts_request.v0" - ] - }, { "id": "weksa.operator", "kind": "operator", "cultMeshKey": "weksa.operator/status", "authority": "Weksa daemon runtime", "schemas": [ - "weksa.operator_state.v0", - "gamecult.eve.surface.v1" + "weksa.operator_state.v0" ] }, { @@ -109,14 +97,6 @@ ], "durableShape": ".weksa/handoff/{utteranceId}.cc" }, - { - "family": "speech_provider", - "namespace": "weksa.speech_provider.*", - "witnesses": [ - "weksa.mimo_tts_request.v0" - ], - "durableShape": ".weksa/speech-provider/{requestId}.cc" - }, { "family": "trace", "namespace": "weksa.trace.*", @@ -133,47 +113,6 @@ "weksa.cultural_ontology_catalog.v0" ], "durableShape": ".weksa/cultural-ontology/{storeId}.cc" - }, - { - "family": "eve", - "namespace": "weksa.eve.*", - "witnesses": [ - "gamecult.eve.provider_advertisement.v1", - "gamecult.eve.surface.v1" - ], - "durableShape": ".weksa/eve-surfaces.cc" - } - ], - "cultMeshSurfaceKeys": [ - { - "id": "weksa.eve.intent_review.v0", - "documentSchema": "gamecult.eve.surface.v1", - "cultMeshKey": "weksa.eve.surface.intent-review", - "binds": [ - "weksa.intent.*", - "weksa.trace.*" - ], - "status": "expected-surface" - }, - { - "id": "weksa.eve.pronunciation_trace.v0", - "documentSchema": "gamecult.eve.surface.v1", - "cultMeshKey": "weksa.eve.surface.pronunciation-trace", - "binds": [ - "weksa.pronunciation.*", - "weksa.trace.*" - ], - "status": "expected-surface" - }, - { - "id": "weksa.eve.utterance_handoff.v0", - "documentSchema": "gamecult.eve.surface.v1", - "cultMeshKey": "weksa.eve.surface.utterance-handoff", - "binds": [ - "weksa.utterance.*", - "aquasynth.speech.*" - ], - "status": "expected-surface" } ], "commandBoundaries": [ @@ -217,57 +156,11 @@ "audio rendering", "AquaSynth synth driver truth" ] - }, - { - "id": "weksa.command.speech_provider.project", - "owner": "Weksa", - "acceptedByFixture": false, - "allowedInputs": [ - "accepted target-language realization", - "provider-neutral delivery intent", - "speech provider profile" - ], - "emits": [ - "weksa.mimo_tts_request.v0" - ], - "forbiddenTargets": [ - "source interlingua truth", - "Persona canonical state", - "rendered audio ownership" - ] - }, - { - "id": "weksa.command.speech_provider.mimo.voicedesign", - "owner": "Weksa", - "acceptedByFixture": true, - "commandIngress": "cultnet.transport.rudp.v0", - "inputSchema": "weksa.mimo_voicedesign_command.v0", - "allowedInputs": [ - "Persona/agent state file path", - "weksa.interlingua_packet.v0-compatible object", - "raw thought text for provisional interlingua decomposition", - "optional target-language and performance-register controls" - ], - "emits": [ - "weksa.interlingua_packet.v0-daemon-provisional", - "weksa.mimo_tts_request.v0", - "weksa.mimo_voicedesign_receipt.v0", - "rendered audio artifact reference" - ], - "forbiddenTargets": [ - "Persona canonical state mutation", - "source meaning rewrite after accepted interlingua", - "MiMo-owned text optimization", - "AquaSynth embedding truth" - ] } ], "loweringRules": [ "Weksa owns conversational intent and utterance lowering.", - "Speech-provider requests are target projections from accepted realizations, not source meaning.", "AquaSynth owns learned embeddings, synth controls, Faust compilation, and audio output.", - "MiMo owns provider rendering and audio output, not Weksa delivery truth.", - "Eve surfaces submit commands and inspect witnesses; they do not own intent truth.", "Fixture exports are discovery metadata until the daemon loop commits typed witnesses." ] } diff --git a/docs/roadmap.md b/docs/roadmap.md index c02fcd9..074d140 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -27,8 +27,8 @@ values with the AquaSynth-owned learned encoder. - Add a daemon loop that commits conversational intent, pronunciation plans, and utterance handoffs as typed CultCache witnesses. -- Publish the provider advertisement and first Eve operator/intent-review - surfaces through CultMesh for Odin discovery. +- Publish the provider advertisement through CultMesh for Odin discovery; the + operator view returns on Thing 2 (Eve is deprecated). - Preserve the first English-only lowering proof under `examples/english-lowering/`, and the shared multilingual proof under `examples/multilingual-lowering/`. @@ -39,7 +39,7 @@ - Render glossed output through grammar, morphology, phonology, and diachrony. - Emit a trace explaining which stage made each decision. - Keep runtime LLM-free; model use belongs in authoring and critique. -- Keep CLI tools, fixtures, daemon jobs, and Eve commands on the same commit and +- Keep CLI tools, fixtures, and daemon jobs on the same commit and derivation paths so Weksa does not grow split-brained intent truth. ## Later diff --git a/docs/verse-service-contract.md b/docs/verse-service-contract.md index e84bed3..e6f2869 100644 --- a/docs/verse-service-contract.md +++ b/docs/verse-service-contract.md @@ -25,8 +25,6 @@ Outputs: - `weksa.mimo_voicedesign_command.v0` - `weksa.mimo_tts_request.v0` - `weksa.mimo_voicedesign_receipt.v0` -- Eve/CultUI surfaces for intent review, pronunciation inspection, and handoff - traces Weksa owns conversational intent and utterance lowering. AquaSynth owns learned phonetic realization, packed utterance embeddings, synth-driver controls, Faust @@ -39,12 +37,10 @@ and trace. - `.weksa/provider-advertisement.cc`: read-only provider advertisement witness. - `.weksa/provider-advertisement-store.cc`: CultMesh/CultCache provider store containing `gamecult.eve.provider_advertisement.v1`, - `gamecult.eve.interface_binding.v1`, `gamecult.eve.surface_state.v1`, `weksa.operator_state.v0`, `weksa.command_boundary.v1`, and `weksa.transport_profile.v1` records for Odin discovery. - `.weksa/operator-state.cc`: daemon health, readiness, and runtime witness index used by Idunn health checks and operator inspection. -- `.weksa/eve-surfaces.cc`: current Weksa operator Eve surface witness. - `.weksa/command-boundary.cc`: provider-owned command and lifecycle boundary naming Weksa as owner, Idunn as lifecycle requester, and the MiMo VoiceDesign RUDP command ingress as daemon-owned transport authority. @@ -107,20 +103,13 @@ Odin ingests the Starfire Weksa provider through `.weksa/provider-advertisement-store.cc`. Idunn tracks the daemon as target `weksa` in the `starfire-local` swarm profile and owns restart authority through the Weksa restart script. Odin should read Weksa's provider advertisement, -operator state, command boundary, transport profile, and Eve surface from the +operator state, command boundary, and transport profile from the typed provider store and RUDP command boundary; no HTTP endpoint owns provider truth. -## Eve Surfaces +## Operator Dashboards -- `weksa.eve.intent_review.v0`: inspect typed conversational intent before it - becomes an utterance. -- `weksa.eve.pronunciation_trace.v0`: inspect pronunciation and IPA/prosody - lowering. -- `weksa.eve.utterance_handoff.v0`: inspect handoff packets, embedding request - status, and AquaSynth receipt links. -- `weksa.eve.operator.v0`: compact daemon state, queues, schema versions, and - witness freshness. +Eve is deprecated, and Thing 2 is its successor (`thing2:ruling:eve-dashboards-quarantined`, 2026-10-22). Weksa's operator Eve surface publisher is quarantined: removed from main and the build, parked at the `parked/weksa-eve-surface` tag, with follow-up `thing2:follow_up:weksa-operator-view-on-thing2` to rebuild it on Thing 2. Until Thing 2's surface contract is ready, Weksa publishes typed CultMesh state (operator state, command boundary, transport profile, provider advertisement) and no dashboard composition. ## Commands @@ -142,7 +131,7 @@ truth. - Text renderers do not own meaning. - AquaSynth does not own conversational intent. -- Eve lowerings do not own Weksa state. +- Dashboard renderers do not own Weksa state. - Fixture emitters cannot become an alternate runtime truth. - Agent transcript memory cannot silently override typed Persona or intent documents. diff --git a/scripts/weksa-daemon.mjs b/scripts/weksa-daemon.mjs index ef65385..fb63244 100644 --- a/scripts/weksa-daemon.mjs +++ b/scripts/weksa-daemon.mjs @@ -157,14 +157,12 @@ async function publishWitnesses() { const snapshot = await buildSnapshot(); await writeWitness("provider-advertisement.cc", snapshot.providerAdvertisement); await writeWitness("operator-state.cc", snapshot.operatorState); - await writeWitness("eve-surfaces.cc", snapshot.operatorSurface); await writeWitness("command-boundary.cc", snapshot.commandBoundary); await writeWitness("transport-profile.cc", snapshot.transportProfile); await writeWitness("cultmesh-publications.cc", snapshot.cultMeshPublications); await writeCultMeshStore(snapshot); await writeJson(resolve(stateRoot, "provider-advertisement.json"), snapshot.providerAdvertisement); await writeJson(resolve(stateRoot, "operator-state.json"), snapshot.operatorState); - await writeJson(resolve(stateRoot, "eve-operator-surface.json"), snapshot.operatorSurface); await writeJson(resolve(stateRoot, "command-boundary.json"), snapshot.commandBoundary); await writeJson(resolve(stateRoot, "transport-profile.json"), snapshot.transportProfile); await writeJson(resolve(stateRoot, "cultmesh-publications.json"), snapshot.cultMeshPublications); @@ -255,7 +253,6 @@ async function buildSnapshot() { provider_advertisement: ".weksa/provider-advertisement.cc", provider_advertisement_store: ".weksa/provider-advertisement-store.cc", operator_state: ".weksa/operator-state.cc", - eve_surface: ".weksa/eve-surfaces.cc", cultmesh_publications: ".weksa/cultmesh-publications.cc", }, readiness: { @@ -270,7 +267,6 @@ async function buildSnapshot() { }; const commandBoundary = buildCommandBoundary(updatedAt); const transportProfile = buildTransportProfile(updatedAt); - const operatorSurface = buildOperatorSurface({ providerAdvertisement, operatorState, commandBoundary, cultureCatalog, tuning }); const cultMeshPublications = { schema: "weksa.cultmesh_publications.v0", service_id: "weksa.intent.service", @@ -283,14 +279,13 @@ async function buildSnapshot() { publications: [ publication("weksa.service/provider-advertisement", "gamecult.eve.provider_advertisement.v1", ".weksa/provider-advertisement-store.cc", ".weksa/provider-advertisement-store.cc"), publication("weksa.operator/status", "weksa.operator_state.v0", ".weksa/operator-state.cc", ".weksa/operator-state.cc"), - publication("weksa.eve.surface.operator", "gamecult.eve.surface.v1", ".weksa/eve-surfaces.cc", ".weksa/eve-surfaces.cc"), publication("weksa.command-boundary", "weksa.command_boundary.v1", ".weksa/command-boundary.cc", null), publication("weksa.transport-profile", "weksa.transport_profile.v1", ".weksa/transport-profile.cc", null), publication("weksa.cultmesh/publications", "weksa.cultmesh_publications.v0", ".weksa/cultmesh-publications.cc", ".weksa/cultmesh-publications.cc"), publication("weksa.speech-provider/mimo/voicedesign", WEKSA_MIMO_VOICEDESIGN_COMMAND_SCHEMA_ID, ".weksa/speech-provider/mimo/{requestId}/command.cc", formatRudpEndpoint(host, port)), ], }; - return { providerAdvertisement, operatorState, operatorSurface, commandBoundary, transportProfile, cultMeshPublications }; + return { providerAdvertisement, operatorState, commandBoundary, transportProfile, cultMeshPublications }; } async function writeCultMeshStore(snapshot) { @@ -301,16 +296,12 @@ async function writeCultMeshStore(snapshot) { } const { providerAdvertisementDefinition, - interfaceBindingDefinition, - surfaceDefinition, operatorStateDefinition, commandBoundaryDefinition, transportProfileDefinition, } = defineCultMeshDocuments(runtime.defineDocumentType); const documents = [ providerAdvertisementDefinition, - interfaceBindingDefinition, - surfaceDefinition, operatorStateDefinition, commandBoundaryDefinition, transportProfileDefinition, @@ -318,35 +309,6 @@ async function writeCultMeshStore(snapshot) { await rm(cultMeshStorePath, { force: true }); const node = await createCultMeshNodeWithOwnedStoreReset(runtime.CultMesh, cultMeshStorePath, documents); await node.put(providerAdvertisementDefinition, snapshot.providerAdvertisement.providerId, snapshot.providerAdvertisement); - await node.put(interfaceBindingDefinition, "weksa.operator", { - bindingId: "weksa.operator", - providerId: snapshot.providerAdvertisement.providerId, - title: "Weksa Operator", - kind: "operator", - updatedAt: snapshot.operatorState.updated_at, - provider: { - providerId: snapshot.providerAdvertisement.providerId, - canonicalService: "asgard.weksa", - locatedService: "asgard.starfire.weksa", - cultMeshAddress: "asgard.starfire.weksa/eve/operator", - endpoints: [ - { transport: "cultmesh-store", address: ".weksa/provider-advertisement-store.cc" }, - { transport: CULTNET_RUDP_PROTOCOL_ID, address: formatRudpEndpoint(host, port) }, - ], - routes: [ - { transport: "cultmesh-store", address: ".weksa/provider-advertisement-store.cc" }, - { transport: CULTNET_RUDP_PROTOCOL_ID, address: formatRudpEndpoint(host, port) }, - ], - }, - surface: snapshot.operatorSurface, - }); - await node.put(surfaceDefinition, snapshot.providerAdvertisement.providerId, { - providerId: snapshot.providerAdvertisement.providerId, - title: "Weksa Operator", - version: tick + 1, - updatedAt: snapshot.operatorState.updated_at, - surface: snapshot.operatorSurface, - }); await node.put(operatorStateDefinition, "weksa", snapshot.operatorState); await node.put(commandBoundaryDefinition, "weksa", snapshot.commandBoundary); await node.put(transportProfileDefinition, "weksa", snapshot.transportProfile); @@ -392,31 +354,6 @@ function configureCultLibModulePath() { } function defineCultMeshDocuments(defineDocumentType) { - const surfaceDefinition = defineDocumentType({ - type: "gamecult.eve.surface_state", - schemaName: "gamecult.eve.surface_state", - schemaId: "gamecult.eve.surface_state.v1", - schemaVersion: "gamecult.eve.surface_state.v1", - global: false, - name: (value) => value?.providerId || "surface", - schema: { parse: (value) => value }, - members: [ - { slot: 0, memberName: "providerId", typeName: "string", isName: true }, - { slot: 1, memberName: "title", typeName: "string" }, - { slot: 2, memberName: "version", typeName: "long" }, - { slot: 3, memberName: "updatedAt", typeName: "string" }, - { slot: 4, memberName: "surface", typeName: "object" }, - ], - }); - const interfaceBindingDefinition = defineDocumentType({ - type: "gamecult.eve.interface_binding", - schemaName: "gamecult.eve.interface_binding", - schemaId: "gamecult.eve.interface_binding.v1", - schemaVersion: "gamecult.eve.interface_binding.v1", - global: false, - name: (value) => value?.bindingId || value?.providerId || "interface", - schema: { parse: (value) => value }, - }); const providerAdvertisementDefinition = defineDocumentType({ type: "gamecult.eve.provider_advertisement", schemaName: "gamecult.eve.provider_advertisement", @@ -455,8 +392,6 @@ function defineCultMeshDocuments(defineDocumentType) { }); return { providerAdvertisementDefinition, - interfaceBindingDefinition, - surfaceDefinition, operatorStateDefinition, commandBoundaryDefinition, transportProfileDefinition, @@ -474,7 +409,7 @@ function loadProviderAdvertisement(updatedAt) { updatedAt, canonicalService: "asgard.weksa", locatedService: "asgard.starfire.weksa", - cultMeshAddress: "asgard.starfire.weksa/eve/operator", + cultMeshAddress: "asgard.starfire.weksa/operator", serviceVerse: { ...fixture.serviceVerse, semanticAddress: "asgard.starfire.weksa", @@ -607,36 +542,6 @@ async function inspectCultureCatalog() { }; } -function buildOperatorSurface({ providerAdvertisement, operatorState, commandBoundary, cultureCatalog, tuning }) { - return { - schema: "gamecult.eve.surface.v1", - providerId: providerAdvertisement.providerId, - surfaceId: "weksa.eve.operator.v0", - title: "Weksa", - updatedAt: operatorState.updated_at, - root: { - id: "weksa.operator.root", - kind: "panel", - props: { - title: "Weksa Intent Service", - providerId: providerAdvertisement.providerId, - status: operatorState.state, - }, - children: [ - fact("health", operatorState.state), - fact("verse", operatorState.verse_id), - fact("affect", operatorState.readiness.affect_aware_lowering), - fact("affect passes", tuning ? `${tuning.affect_contrast_visible}/${tuning.pass_count} visible` : "none"), - fact("culture profiles", String(cultureCatalog.profile_count)), - fact("target profiles", String(cultureCatalog.target_language_profile_count)), - fact("commands", operatorState.readiness.command_ingress), - fact("command boundary", commandBoundary.boundary_id), - fact("mimo voicedesign", operatorState.readiness.mimo_voicedesign), - ], - }, - }; -} - async function handleMimoVoiceDesign(body) { const command = validateMimoCommand(body); const requestId = command.request_id || `mimo-${new Date().toISOString().replace(/[-:.TZ]/g, "")}-${Math.random().toString(36).slice(2, 8)}`; @@ -1008,14 +913,6 @@ async function callMimoVoiceDesign(mimoRequest) { }; } -function fact(label, value) { - return { - id: `weksa.operator.fact.${label.replace(/[^a-z0-9]+/gi, "-").toLowerCase()}`, - kind: "text", - props: { label, text: `${label}: ${value}` }, - }; -} - function publication(key, schema, witness, endpoint) { return { key, diff --git a/tools/export-provider-advertisement.mjs b/tools/export-provider-advertisement.mjs index 94c817a..be8b6fb 100644 --- a/tools/export-provider-advertisement.mjs +++ b/tools/export-provider-advertisement.mjs @@ -54,7 +54,7 @@ const document = { kind: "operator", cultMeshKey: "weksa.operator/status", authority: "Weksa daemon runtime", - schemas: ["weksa.operator_state.v0", "gamecult.eve.surface.v1"], + schemas: ["weksa.operator_state.v0"], }, { id: "weksa.cultural_ontology", @@ -95,35 +95,6 @@ const document = { witnesses: ["weksa.cultural_ontology_profile.v0", "weksa.cultural_ontology_catalog.v0"], durableShape: ".weksa/cultural-ontology/{storeId}.cc", }, - { - family: "eve", - namespace: "weksa.eve.*", - witnesses: ["gamecult.eve.provider_advertisement.v1", "gamecult.eve.surface.v1"], - durableShape: ".weksa/eve-surfaces.cc", - }, - ], - cultMeshSurfaceKeys: [ - { - id: "weksa.eve.intent_review.v0", - documentSchema: "gamecult.eve.surface.v1", - cultMeshKey: "weksa.eve.surface.intent-review", - binds: ["weksa.intent.*", "weksa.trace.*"], - status: "expected-surface", - }, - { - id: "weksa.eve.pronunciation_trace.v0", - documentSchema: "gamecult.eve.surface.v1", - cultMeshKey: "weksa.eve.surface.pronunciation-trace", - binds: ["weksa.pronunciation.*", "weksa.trace.*"], - status: "expected-surface", - }, - { - id: "weksa.eve.utterance_handoff.v0", - documentSchema: "gamecult.eve.surface.v1", - cultMeshKey: "weksa.eve.surface.utterance-handoff", - binds: ["weksa.utterance.*", "aquasynth.speech.*"], - status: "expected-surface", - }, ], commandBoundaries: [ { @@ -151,7 +122,6 @@ const document = { loweringRules: [ "Weksa owns conversational intent and utterance lowering.", "AquaSynth owns learned embeddings, synth controls, Faust compilation, and audio output.", - "Eve surfaces submit commands and inspect witnesses; they do not own intent truth.", "Fixture exports are discovery metadata until the daemon loop commits typed witnesses.", ], };