Per thing2:ruling:eve-dashboards-quarantined. Removes cultMeshSurfaceKeys, the eve witness family and the eve surface schema from the exporter and fixture; the contract names the quarantine. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
196 lines
7.3 KiB
JavaScript
196 lines
7.3 KiB
JavaScript
#!/usr/bin/env node
|
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
|
|
const document = {
|
|
schema: "gamecult.eve.provider_advertisement.v1",
|
|
providerId: "aquasynth.service",
|
|
title: "AquaSynth Service",
|
|
description:
|
|
"AquaSynth accepts .aqua DSL and Weksa utterance handoffs, compiles Faust-native instruments, owns live streaming patch sessions, and publishes controllable synth state through CultMesh.",
|
|
mode: "fixture-read-only",
|
|
serviceVerse: {
|
|
id: "verse.aquasynth.service.v1",
|
|
cultMeshKey: "aquasynth.service/provider-advertisement",
|
|
authority: "AquaSynth daemon identity, schema catalog, provider publication, and synth runtime boundary",
|
|
owns: [
|
|
".aqua patch parsing",
|
|
"patch graph semantics",
|
|
"Faust source emission",
|
|
"native Faust compilation",
|
|
"compiled instrument sessions",
|
|
"live streaming patch sessions",
|
|
"live session control state",
|
|
"live session lifecycle receipts",
|
|
"sample/render receipts",
|
|
"learned utterance embeddings and synth-driver controls",
|
|
],
|
|
doesNotOwn: ["Weksa conversational intent", "Persona canonical state", "Eve presentation runtime"],
|
|
},
|
|
nestedVerses: [
|
|
{
|
|
id: "aquasynth.patch",
|
|
kind: "patch",
|
|
cultMeshKey: "aquasynth.patch/current",
|
|
authority: "AquaSynth.Core .aqua parser and patch graph model",
|
|
schemas: ["aquasynth.patch_graph.v0"],
|
|
},
|
|
{
|
|
id: "aquasynth.compile",
|
|
kind: "compile",
|
|
cultMeshKey: "aquasynth.compile/jobs",
|
|
authority: "AquaSynth.Faust compiler boundary",
|
|
schemas: ["aquasynth.faust_source.v0", "aquasynth.compiled_instrument.v0"],
|
|
},
|
|
{
|
|
id: "aquasynth.instrument",
|
|
kind: "instrument",
|
|
cultMeshKey: "aquasynth.instrument/sessions",
|
|
authority: "AquaSynth native host and live-session owner",
|
|
schemas: [
|
|
"aquasynth.compiled_instrument_session.v1",
|
|
"aquasynth.live_instrument_session.v1",
|
|
"aquasynth.command.instrument_open.v1",
|
|
"aquasynth.command.instrument_control.v1",
|
|
"aquasynth.command.instrument_block.v1",
|
|
"aquasynth.command.instrument_close.v1",
|
|
"aquasynth.instrument_open_receipt.v1",
|
|
"aquasynth.instrument_control_receipt.v1",
|
|
"aquasynth.instrument_block_receipt.v1",
|
|
"aquasynth.instrument_close_receipt.v1",
|
|
],
|
|
},
|
|
{
|
|
id: "aquasynth.speech",
|
|
kind: "speech",
|
|
cultMeshKey: "aquasynth.speech/current",
|
|
authority: "AquaSynth utterance embedding and synth-driver runtime",
|
|
schemas: ["aquasynth.utterance_embedding.v0", "aquasynth.speech_render_receipt.v0"],
|
|
},
|
|
{
|
|
id: "aquasynth.operator",
|
|
kind: "operator",
|
|
cultMeshKey: "aquasynth.operator/status",
|
|
authority: "AquaSynth daemon runtime",
|
|
schemas: ["aquasynth.operator_state.v0"],
|
|
},
|
|
],
|
|
schemaWitnessFamilies: [
|
|
{
|
|
family: "patch",
|
|
namespace: "aquasynth.patch.*",
|
|
witnesses: ["aquasynth.patch_graph.v0"],
|
|
durableShape: ".aquasynth/patches/{patchId}.cc",
|
|
},
|
|
{
|
|
family: "compile",
|
|
namespace: "aquasynth.compile.*",
|
|
witnesses: ["aquasynth.faust_source.v0", "aquasynth.compiled_instrument.v0"],
|
|
durableShape: ".aquasynth/faust/{compileId}.cc",
|
|
},
|
|
{
|
|
family: "instrument",
|
|
namespace: "aquasynth.instrument.*",
|
|
witnesses: [
|
|
"aquasynth.compiled_instrument_session.v1",
|
|
"aquasynth.live_instrument_session.v1",
|
|
"aquasynth.instrument_open_receipt.v1",
|
|
"aquasynth.instrument_control_receipt.v1",
|
|
"aquasynth.instrument_block_receipt.v1",
|
|
"aquasynth.instrument_close_receipt.v1",
|
|
],
|
|
durableShape: ".aquasynth/sessions/{sessionId}.cc and .aquasynth/live-sessions/{sessionId}.cc",
|
|
},
|
|
{
|
|
family: "render",
|
|
namespace: "aquasynth.render.*",
|
|
witnesses: ["aquasynth.render_sample.v0", "aquasynth.render_loss.v0"],
|
|
durableShape: ".aquasynth/renders/{renderId}.cc",
|
|
},
|
|
{
|
|
family: "speech",
|
|
namespace: "aquasynth.speech.*",
|
|
witnesses: ["aquasynth.utterance_embedding.v0", "aquasynth.speech_render_receipt.v0"],
|
|
durableShape: ".aquasynth/speech/{utteranceId}.cc",
|
|
},
|
|
],
|
|
commandBoundaries: [
|
|
{
|
|
id: "aquasynth.command.patch.compile",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: [".aqua DSL", "compile target", "host architecture"],
|
|
emits: ["aquasynth.patch_graph.v0", "aquasynth.faust_source.v0", "aquasynth.compiled_instrument.v0"],
|
|
},
|
|
{
|
|
id: "aquasynth.command.instrument.open",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: [".aqua DSL", "block size", "initial semantic control values"],
|
|
emits: ["aquasynth.compiled_instrument_session.v1", "aquasynth.live_instrument_session.v1", "aquasynth.instrument_open_receipt.v1"],
|
|
},
|
|
{
|
|
id: "aquasynth.command.instrument.control",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: ["live session id", "semantic control values"],
|
|
emits: ["aquasynth.live_instrument_session.v1", "aquasynth.instrument_control_receipt.v1"],
|
|
},
|
|
{
|
|
id: "aquasynth.command.instrument.block",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: ["live session id", "frame count", "optional control values"],
|
|
emits: ["aquasynth.live_instrument_session.v1", "aquasynth.instrument_block_receipt.v1"],
|
|
},
|
|
{
|
|
id: "aquasynth.command.instrument.close",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: ["live session id"],
|
|
emits: ["aquasynth.live_instrument_session.v1", "aquasynth.instrument_close_receipt.v1"],
|
|
},
|
|
{
|
|
id: "aquasynth.command.instrument.sample",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: [".aqua DSL", "duration", "sample format", "optional semantic control values"],
|
|
emits: ["aquasynth.render_sample.v0"],
|
|
},
|
|
{
|
|
id: "aquasynth.command.speech.realize",
|
|
owner: "AquaSynth",
|
|
acceptedByFixture: false,
|
|
allowedInputs: ["weksa.utterance_handoff.v0", "weksa.utterance_embedding_handoff.v0.1"],
|
|
emits: ["aquasynth.utterance_embedding.v0", "aquasynth.speech_render_receipt.v0"],
|
|
forbiddenTargets: ["Weksa conversational intent truth"],
|
|
},
|
|
],
|
|
loweringRules: [
|
|
"AquaSynth owns learned embeddings, synth controls, Faust compilation, native binary lifetime, compiled instrument sessions, live streaming patch sessions, and sampled outputs.",
|
|
"Weksa owns writing-to-intent and intent-to-utterance lowering.",
|
|
"Faust source and native binaries are emitted artifacts with typed receipts, not the semantic patch owner.",
|
|
"Dashboards and other renderers control and inspect sessions through CultMesh command documents and retained live-session state; they do not own audio state.",
|
|
],
|
|
};
|
|
|
|
async function main() {
|
|
const args = process.argv.slice(2);
|
|
const outIndex = args.indexOf("--out");
|
|
const outputPath = outIndex >= 0 ? args[outIndex + 1] : undefined;
|
|
const json = `${JSON.stringify(document, null, 2)}\n`;
|
|
|
|
if (outputPath) {
|
|
const resolved = path.resolve(process.cwd(), outputPath);
|
|
await mkdir(path.dirname(resolved), { recursive: true });
|
|
await writeFile(resolved, json, "utf8");
|
|
return;
|
|
}
|
|
|
|
process.stdout.write(json);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(error);
|
|
process.exitCode = 1;
|
|
});
|