From 96e5c96cb8a0ea5544da5466bc57524fdaf25e03 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 11 May 2026 15:12:18 +0100 Subject: [PATCH] Publish Epiphany CultNet surface catalog --- .../src/bin/epiphany-runtime-spine.rs | 43 +- epiphany-core/src/lib.rs | 2 + epiphany-core/src/runtime_spine.rs | 184 ++++- epiphany-core/tests/cultnet_backend.rs | 6 +- notes/fresh-workspace-handoff.md | 1 + schemas/README.md | 4 + schemas/cultnet/README.md | 44 ++ .../epiphany.agent-heartbeat.schema.json | 86 +++ .../cultnet/epiphany.agent.memory.schema.json | 55 ++ ...piphany.agent_memory_intent.v0.schema.json | 29 + ...epiphany.character-turn-packet.schema.json | 78 +++ ...phany.character_turn_intent.v0.schema.json | 36 + ...any.circadian_rhythm_intent.v0.schema.json | 26 + ...discord_persona_post_intent.v0.schema.json | 44 ++ .../cultnet/epiphany.face-bubble.schema.json | 57 ++ .../cultnet/epiphany.face-chat.schema.json | 54 ++ ...epiphany.face_bubble_intent.v0.schema.json | 29 + ...phany.heartbeat_pump_intent.v0.schema.json | 46 ++ ...iphany.job_interrupt_intent.v0.schema.json | 25 + .../epiphany.job_launch_intent.v0.schema.json | 26 + ...y.objective_adoption_intent.v0.schema.json | 23 + ...hany.planning_update_intent.v0.schema.json | 24 + ...hany.reorient_accept_intent.v0.schema.json | 31 + ...hany.reorient_launch_intent.v0.schema.json | 22 + .../epiphany.repo-birth-runner.schema.json | 69 ++ ...any.repo-initialization-record.schema.json | 52 ++ ...any.repo-personality-artifacts.schema.json | 78 +++ ...phany.repo_birth_run_intent.v0.schema.json | 61 ++ ...nitialization_accept_intent.v0.schema.json | 59 ++ ...piphany.repo_startup_intent.v0.schema.json | 34 + ...iphany.rider_context_intent.v0.schema.json | 52 ++ ...phany.rider_open_ref_intent.v0.schema.json | 49 ++ ...piphany.rider_status_intent.v0.schema.json | 16 + ...epiphany.role_accept_intent.v0.schema.json | 29 + ...epiphany.role_launch_intent.v0.schema.json | 26 + .../epiphany.runtime.event.schema.json | 52 ++ .../epiphany.runtime.identity.schema.json | 48 ++ .../epiphany.runtime.job-result.schema.json | 63 ++ .../cultnet/epiphany.runtime.job.schema.json | 53 ++ .../epiphany.runtime.session.schema.json | 43 ++ ...hany.runtime.session_intent.v0.schema.json | 23 + .../cultnet/epiphany.state-ledger.schema.json | 36 + .../epiphany.surface.context.schema.json | 37 + .../epiphany.surface.coordinator.schema.json | 72 ++ .../cultnet/epiphany.surface.crrc.schema.json | 58 ++ .../cultnet/epiphany.surface.face.schema.json | 50 ++ .../epiphany.surface.freshness.schema.json | 38 + .../epiphany.surface.graph-query.schema.json | 50 ++ .../cultnet/epiphany.surface.jobs.schema.json | 31 + .../epiphany.surface.planning.schema.json | 37 + .../epiphany.surface.pressure.schema.json | 25 + ...iphany.surface.reorient-result.schema.json | 47 ++ .../epiphany.surface.reorient.schema.json | 32 + ...hany.surface.repo-birth-runner.schema.json | 69 ++ ...ny.surface.repo-initialization.schema.json | 87 +++ .../epiphany.surface.rider-bridge.schema.json | 41 ++ .../epiphany.surface.role-result.schema.json | 51 ++ .../epiphany.surface.roles.schema.json | 39 ++ .../epiphany.surface.scene.schema.json | 31 + .../epiphany.surface.unity-bridge.schema.json | 47 ++ .../epiphany.surface.void-memory.schema.json | 41 ++ ...epiphany.swarm-control-receipt.schema.json | 67 ++ ...ty_check_compilation_intent.v0.schema.json | 19 + ...iphany.unity_inspect_intent.v0.schema.json | 16 + ...epiphany.unity_probe_intent.v0.schema.json | 59 ++ ...hany.unity_run_tests_intent.v0.schema.json | 28 + schemas/cultnet/index.json | 654 ++++++++++++++++++ state/ledgers.msgpack | Bin 60650 -> 60975 bytes state/map.yaml | 1 + vendor/cultnet-rs | 2 +- 70 files changed, 3535 insertions(+), 12 deletions(-) create mode 100644 schemas/cultnet/README.md create mode 100644 schemas/cultnet/epiphany.agent-heartbeat.schema.json create mode 100644 schemas/cultnet/epiphany.agent.memory.schema.json create mode 100644 schemas/cultnet/epiphany.agent_memory_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.character-turn-packet.schema.json create mode 100644 schemas/cultnet/epiphany.character_turn_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.circadian_rhythm_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.discord_persona_post_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.face-bubble.schema.json create mode 100644 schemas/cultnet/epiphany.face-chat.schema.json create mode 100644 schemas/cultnet/epiphany.face_bubble_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.heartbeat_pump_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.job_interrupt_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.job_launch_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.objective_adoption_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.planning_update_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.reorient_accept_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.reorient_launch_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.repo-birth-runner.schema.json create mode 100644 schemas/cultnet/epiphany.repo-initialization-record.schema.json create mode 100644 schemas/cultnet/epiphany.repo-personality-artifacts.schema.json create mode 100644 schemas/cultnet/epiphany.repo_birth_run_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.repo_initialization_accept_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.repo_startup_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.rider_context_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.rider_open_ref_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.rider_status_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.role_accept_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.role_launch_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.runtime.event.schema.json create mode 100644 schemas/cultnet/epiphany.runtime.identity.schema.json create mode 100644 schemas/cultnet/epiphany.runtime.job-result.schema.json create mode 100644 schemas/cultnet/epiphany.runtime.job.schema.json create mode 100644 schemas/cultnet/epiphany.runtime.session.schema.json create mode 100644 schemas/cultnet/epiphany.runtime.session_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.state-ledger.schema.json create mode 100644 schemas/cultnet/epiphany.surface.context.schema.json create mode 100644 schemas/cultnet/epiphany.surface.coordinator.schema.json create mode 100644 schemas/cultnet/epiphany.surface.crrc.schema.json create mode 100644 schemas/cultnet/epiphany.surface.face.schema.json create mode 100644 schemas/cultnet/epiphany.surface.freshness.schema.json create mode 100644 schemas/cultnet/epiphany.surface.graph-query.schema.json create mode 100644 schemas/cultnet/epiphany.surface.jobs.schema.json create mode 100644 schemas/cultnet/epiphany.surface.planning.schema.json create mode 100644 schemas/cultnet/epiphany.surface.pressure.schema.json create mode 100644 schemas/cultnet/epiphany.surface.reorient-result.schema.json create mode 100644 schemas/cultnet/epiphany.surface.reorient.schema.json create mode 100644 schemas/cultnet/epiphany.surface.repo-birth-runner.schema.json create mode 100644 schemas/cultnet/epiphany.surface.repo-initialization.schema.json create mode 100644 schemas/cultnet/epiphany.surface.rider-bridge.schema.json create mode 100644 schemas/cultnet/epiphany.surface.role-result.schema.json create mode 100644 schemas/cultnet/epiphany.surface.roles.schema.json create mode 100644 schemas/cultnet/epiphany.surface.scene.schema.json create mode 100644 schemas/cultnet/epiphany.surface.unity-bridge.schema.json create mode 100644 schemas/cultnet/epiphany.surface.void-memory.schema.json create mode 100644 schemas/cultnet/epiphany.swarm-control-receipt.schema.json create mode 100644 schemas/cultnet/epiphany.unity_check_compilation_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.unity_inspect_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.unity_probe_intent.v0.schema.json create mode 100644 schemas/cultnet/epiphany.unity_run_tests_intent.v0.schema.json create mode 100644 schemas/cultnet/index.json diff --git a/epiphany-core/src/bin/epiphany-runtime-spine.rs b/epiphany-core/src/bin/epiphany-runtime-spine.rs index 01b91659..64eaaed4 100644 --- a/epiphany-core/src/bin/epiphany-runtime-spine.rs +++ b/epiphany-core/src/bin/epiphany-runtime-spine.rs @@ -13,6 +13,7 @@ use epiphany_core::create_runtime_job; use epiphany_core::create_runtime_session; use epiphany_core::initialize_runtime_spine; use epiphany_core::runtime_spine_status; +use epiphany_core::write_runtime_schema_catalog_json; use epiphany_core::write_runtime_hello_frame; use std::env; use std::path::PathBuf; @@ -165,6 +166,15 @@ fn main() -> Result<()> { println!("path: {}", output.display()); println!("bytes: {bytes}"); } + Command::SchemaCatalog { + output, + include_schema_json, + } => { + let bytes = write_runtime_schema_catalog_json(&output, include_schema_json)?; + println!("cultnet schema catalog written"); + println!("path: {}", output.display()); + println!("bytes: {bytes}"); + } } Ok(()) } @@ -214,6 +224,10 @@ enum Command { HelloFrame { output: PathBuf, }, + SchemaCatalog { + output: PathBuf, + include_schema_json: bool, + }, } impl Args { @@ -444,6 +458,25 @@ fn parse_command(mut args: Vec) -> Result { })?; Ok(Command::HelloFrame { output }) } + "schema-catalog" => { + let mut output = PathBuf::from(".epiphany-dogfood/runtime-spine/schema-catalog.json"); + let mut include_schema_json = false; + parse_options(args, |name, value| match name { + "--output" => { + output = PathBuf::from(value); + Ok(()) + } + "--include-schema-json" => { + include_schema_json = parse_bool_flag(&value, "--include-schema-json")?; + Ok(()) + } + _ => Err(anyhow!("unknown schema-catalog argument: {name}")), + })?; + Ok(Command::SchemaCatalog { + output, + include_schema_json, + }) + } _ => Err(anyhow!(usage())), } } @@ -471,10 +504,18 @@ fn take_path(args: &mut impl Iterator, name: &str) -> Result Result { + match value { + "true" | "1" | "yes" => Ok(true), + "false" | "0" | "no" => Ok(false), + _ => Err(anyhow!("{name} must be true/false")), + } +} + fn now() -> String { chrono::Utc::now().to_rfc3339_opts(SecondsFormat::Secs, true) } fn usage() -> &'static str { - "usage: epiphany-runtime-spine [--store path] " + "usage: epiphany-runtime-spine [--store path] " } diff --git a/epiphany-core/src/lib.rs b/epiphany-core/src/lib.rs index 0eb749ce..17b2c00e 100644 --- a/epiphany-core/src/lib.rs +++ b/epiphany-core/src/lib.rs @@ -110,8 +110,10 @@ pub use runtime_spine::ensure_runtime_session; pub use runtime_spine::initialize_runtime_spine; pub use runtime_spine::runtime_hello_frame; pub use runtime_spine::runtime_job_snapshot; +pub use runtime_spine::runtime_schema_catalog_response; pub use runtime_spine::runtime_spine_cache; pub use runtime_spine::runtime_spine_status; +pub use runtime_spine::write_runtime_schema_catalog_json; pub use runtime_spine::write_runtime_hello_frame; pub use state_ledger::EpiphanyBranchRecord; pub use state_ledger::EpiphanyLedgerEvidenceRecord; diff --git a/epiphany-core/src/runtime_spine.rs b/epiphany-core/src/runtime_spine.rs index 6074664c..a7309d7b 100644 --- a/epiphany-core/src/runtime_spine.rs +++ b/epiphany-core/src/runtime_spine.rs @@ -1,6 +1,11 @@ use anyhow::Context; use anyhow::Result; use anyhow::anyhow; +use crate::agent_memory::AGENT_MEMORY_TYPE; +use crate::heartbeat_state::HEARTBEAT_STATE_SCHEMA_VERSION; +use crate::heartbeat_state::HEARTBEAT_STATE_TYPE; +use crate::state_ledger::STATE_LEDGER_SCHEMA_VERSION; +use crate::state_ledger::STATE_LEDGER_STORE_TYPE; use cultcache_rs::CultCache; use cultcache_rs::DatabaseEntry; use cultcache_rs::SingleFileMessagePackBackingStore; @@ -8,7 +13,11 @@ use cultnet_rs::CultNetDocumentMutationContract; use cultnet_rs::CultNetDocumentOperation; use cultnet_rs::CultNetMessage; use cultnet_rs::CultNetMutationAuthority; +use cultnet_rs::CultNetSchemaKind; +use cultnet_rs::CultNetSchemaRegistration; +use cultnet_rs::CultNetSchemaRegistry; use cultnet_rs::CultNetWireContract; +use cultnet_rs::builtin_schema_registry; use cultnet_rs::encode_cultnet_message_to_vec; use cultnet_rs::encode_frame; use serde::Deserialize; @@ -16,6 +25,7 @@ use serde::Serialize; use std::collections::BTreeMap; use std::fs; use std::path::Path; +use std::path::PathBuf; pub const RUNTIME_IDENTITY_TYPE: &str = "epiphany.runtime.identity"; pub const RUNTIME_SESSION_TYPE: &str = "epiphany.runtime.session"; @@ -23,6 +33,9 @@ pub const RUNTIME_JOB_TYPE: &str = "epiphany.runtime.job"; pub const RUNTIME_JOB_RESULT_TYPE: &str = "epiphany.runtime.job_result"; pub const RUNTIME_EVENT_TYPE: &str = "epiphany.runtime.event"; pub const SURFACE_SCENE_TYPE: &str = "epiphany.surface.scene"; +pub const SURFACE_FRESHNESS_TYPE: &str = "epiphany.surface.freshness"; +pub const SURFACE_CONTEXT_TYPE: &str = "epiphany.surface.context"; +pub const SURFACE_GRAPH_QUERY_TYPE: &str = "epiphany.surface.graph_query"; pub const SURFACE_PRESSURE_TYPE: &str = "epiphany.surface.pressure"; pub const SURFACE_REORIENT_TYPE: &str = "epiphany.surface.reorient"; pub const SURFACE_CRRC_TYPE: &str = "epiphany.surface.crrc"; @@ -41,6 +54,9 @@ pub const SURFACE_UNITY_BRIDGE_TYPE: &str = "epiphany.surface.unity_bridge"; pub const RUNTIME_IDENTITY_KEY: &str = "self"; pub const RUNTIME_SPINE_SCHEMA_VERSION: &str = "epiphany.runtime_spine.v0"; pub const SCENE_SURFACE_SCHEMA_VERSION: &str = "epiphany.scene_surface.v0"; +pub const FRESHNESS_SURFACE_SCHEMA_VERSION: &str = "epiphany.freshness_surface.v0"; +pub const CONTEXT_SURFACE_SCHEMA_VERSION: &str = "epiphany.context_surface.v0"; +pub const GRAPH_QUERY_SURFACE_SCHEMA_VERSION: &str = "epiphany.graph_query_surface.v0"; pub const PRESSURE_SURFACE_SCHEMA_VERSION: &str = "epiphany.pressure_surface.v0"; pub const REORIENT_SURFACE_SCHEMA_VERSION: &str = "epiphany.reorient_surface.v0"; pub const CRRC_SURFACE_SCHEMA_VERSION: &str = "epiphany.crrc_surface.v0"; @@ -58,6 +74,30 @@ pub const REPO_BIRTH_RUNNER_SURFACE_SCHEMA_VERSION: &str = "epiphany.repo_birth_runner_surface.v0"; pub const RIDER_BRIDGE_SURFACE_SCHEMA_VERSION: &str = "epiphany.rider_bridge_surface.v0"; pub const UNITY_BRIDGE_SURFACE_SCHEMA_VERSION: &str = "epiphany.unity_bridge_surface.v0"; +pub const AGENT_MEMORY_PAYLOAD_SCHEMA_VERSION: &str = "epiphany.agent_memory.v0"; +pub const CULTNET_SCHEMA_INDEX_RELATIVE: &str = "schemas/cultnet/index.json"; + +#[derive(Clone, Debug, PartialEq, Eq, Deserialize)] +#[serde(rename_all = "camelCase")] +struct EpiphanyCultNetSchemaIndex { + schema_version: String, + schemas: Vec, +} + +#[derive(Clone, Debug, PartialEq, Eq, Deserialize)] +#[serde(rename_all = "camelCase")] +struct EpiphanyCultNetSchemaIndexEntry { + schema_id: String, + kind: CultNetSchemaKind, + wire_contracts: Vec, + #[serde(default)] + schema_version: Option, + #[serde(default)] + document_type: Option, + #[serde(default)] + title: Option, + path: String, +} #[derive(Clone, Debug, PartialEq, DatabaseEntry)] #[cultcache(type = "epiphany.runtime.identity", schema = "EpiphanyRuntimeIdentity")] @@ -680,6 +720,85 @@ pub fn write_runtime_hello_frame( Ok(frame.len()) } +pub fn epiphany_schema_registry() -> Result { + let mut registry = builtin_schema_registry()?; + let schema_root = epiphany_schema_root(); + let index_path = schema_root.join("index.json"); + let raw_index = fs::read_to_string(&index_path) + .with_context(|| format!("failed to read {}", index_path.display()))?; + let index: EpiphanyCultNetSchemaIndex = serde_json::from_str(&raw_index) + .with_context(|| format!("failed to parse {}", index_path.display()))?; + if index.schema_version.trim().is_empty() { + return Err(anyhow!( + "CultNet schema index at {} is missing schemaVersion", + index_path.display() + )); + } + + for entry in index.schemas { + let schema_path = schema_root.join(&entry.path); + let schema_json = fs::read_to_string(&schema_path) + .with_context(|| format!("failed to read {}", schema_path.display()))?; + registry.register(CultNetSchemaRegistration { + schema_id: entry.schema_id, + kind: entry.kind, + wire_contracts: entry.wire_contracts, + schema_version: entry.schema_version, + document_type: entry.document_type, + title: entry.title, + schema_json: Some(schema_json), + })?; + } + + Ok(registry) +} + +pub fn runtime_schema_catalog_response( + message_id: impl Into, + include_schema_json: bool, + schema_ids: Option>, + kinds: Option>, +) -> Result { + let registry = epiphany_schema_registry()?; + registry.create_catalog_response(&CultNetMessage::SchemaCatalogRequest { + message_id: message_id.into(), + include_schema_json: Some(include_schema_json), + schema_ids, + kinds, + }) +} + +pub fn write_runtime_schema_catalog_json( + output_path: impl AsRef, + include_schema_json: bool, +) -> Result { + let output_path = output_path.as_ref(); + if let Some(parent) = output_path.parent() { + fs::create_dir_all(parent) + .with_context(|| format!("failed to create {}", parent.display()))?; + } + let response = runtime_schema_catalog_response( + "runtime-spine-schema-catalog".to_string(), + include_schema_json, + None, + None, + )?; + let body = serde_json::to_vec_pretty(&response)?; + fs::write(output_path, &body) + .with_context(|| format!("failed to write {}", output_path.display()))?; + Ok(body.len()) +} + +fn epiphany_schema_root() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .parent() + .expect("epiphany-core has no parent repo root") + .join(CULTNET_SCHEMA_INDEX_RELATIVE) + .parent() + .expect("cultnet schema index has no parent directory") + .to_path_buf() +} + fn require_identity(cache: &CultCache) -> Result { cache .get::(RUNTIME_IDENTITY_KEY)? @@ -824,8 +943,8 @@ fn epiphany_mutation_contracts() -> Vec { vec!["Runtime events are append-only projections for inspection."], ), mutation_contract( - "epiphany.agent.memory", - "ghostlight.agent_state.v0", + AGENT_MEMORY_TYPE, + AGENT_MEMORY_PAYLOAD_SCHEMA_VERSION, vec![ CultNetDocumentOperation::Snapshot, CultNetDocumentOperation::IntentSubmit, @@ -839,8 +958,8 @@ fn epiphany_mutation_contracts() -> Vec { ], ), mutation_contract( - "epiphany.heartbeat.state", - "epiphany.agent_heartbeat.v0", + HEARTBEAT_STATE_TYPE, + HEARTBEAT_STATE_SCHEMA_VERSION, vec![ CultNetDocumentOperation::Snapshot, CultNetDocumentOperation::IntentSubmit, @@ -857,8 +976,8 @@ fn epiphany_mutation_contracts() -> Vec { ], ), mutation_contract( - "epiphany.state_ledger", - "epiphany.state_ledger.v0", + STATE_LEDGER_STORE_TYPE, + STATE_LEDGER_SCHEMA_VERSION, vec![CultNetDocumentOperation::Snapshot], CultNetMutationAuthority::ReadOnly, vec![], @@ -875,6 +994,30 @@ fn epiphany_mutation_contracts() -> Vec { "Aquarium should read this before offering live coordination actions.", ], ), + read_only_surface_contract( + SURFACE_FRESHNESS_TYPE, + FRESHNESS_SURFACE_SCHEMA_VERSION, + vec![ + "Freshness reflection mirrored from thread/epiphany/freshness.", + "Use this to visualize retrieval and graph staleness without inventing a hidden refresh daemon.", + ], + ), + read_only_surface_contract( + SURFACE_CONTEXT_TYPE, + CONTEXT_SURFACE_SCHEMA_VERSION, + vec![ + "Targeted graph, frontier, checkpoint, observation, and evidence context mirrored from thread/epiphany/context.", + "Aquarium should inspect bounded state shards here instead of scraping state blobs by superstition.", + ], + ), + read_only_surface_contract( + SURFACE_GRAPH_QUERY_TYPE, + GRAPH_QUERY_SURFACE_SCHEMA_VERSION, + vec![ + "Bounded graph traversal mirrored from thread/epiphany/graphQuery.", + "Use this for architecture/dataflow inspection and frontier neighborhoods without mutating state.", + ], + ), read_only_surface_contract( SURFACE_PRESSURE_TYPE, PRESSURE_SURFACE_SCHEMA_VERSION, @@ -1235,7 +1378,7 @@ mod tests { let contracts = supported_mutation_contracts.unwrap(); let heartbeat_contract = contracts .iter() - .find(|contract| contract.document_type == "epiphany.heartbeat.state") + .find(|contract| contract.document_type == HEARTBEAT_STATE_TYPE) .expect("heartbeat state should advertise mutation contract"); assert_eq!( heartbeat_contract.authority, @@ -1290,4 +1433,31 @@ mod tests { } Ok(()) } + + #[test] + fn runtime_spine_schema_catalog_includes_surface_and_control_receipts() -> Result<()> { + let registry = epiphany_schema_registry()?; + let schemas = registry.list(&cultnet_rs::CultNetSchemaCatalogOptions { + include_schema_json: false, + schema_ids: None, + kinds: None, + }); + assert!(schemas.iter().any(|schema| { + schema.document_type.as_deref() == Some(SURFACE_SCENE_TYPE) + && schema.schema_version.as_deref() == Some(SCENE_SURFACE_SCHEMA_VERSION) + })); + assert!(schemas.iter().any(|schema| { + schema.document_type.as_deref() == Some(SURFACE_COORDINATOR_TYPE) + && schema.schema_version.as_deref() == Some(COORDINATOR_SURFACE_SCHEMA_VERSION) + })); + assert!(schemas.iter().any(|schema| { + schema.document_type.as_deref() == Some("epiphany.role_launch_intent.v0") + && schema.schema_version.as_deref() == Some("epiphany.role_launch_intent.v0") + })); + assert!(schemas.iter().any(|schema| { + schema.document_type.as_deref() == Some("epiphany.swarm_control_receipt.v0") + && schema.schema_version.as_deref() == Some("epiphany.swarm_control_receipt.v0") + })); + Ok(()) + } } diff --git a/epiphany-core/tests/cultnet_backend.rs b/epiphany-core/tests/cultnet_backend.rs index 3482a32d..56eef2eb 100644 --- a/epiphany-core/tests/cultnet_backend.rs +++ b/epiphany-core/tests/cultnet_backend.rs @@ -20,9 +20,9 @@ fn epiphany_agent_memory_can_move_over_cultnet_documents() -> Result<()> { let mut registry = CultNetDocumentRegistry::new(); registry.register( - CultNetDocumentBinding::for_entry::(Some( - "ghostlight.agent_state.v0".to_string(), - )), + CultNetDocumentBinding::for_entry::( + "ghostlight.agent_state.v0", + ), ); let snapshot = registry.create_snapshot_response( &source_cache, diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index 26556ffc..6e9da7b8 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -37,6 +37,7 @@ remembers doctrine; the branch remembers the blade. - Native `epiphany-runtime-spine` is the first Codex-independent runtime vertebra. It owns typed CultCache documents for runtime identity, sessions, jobs, job results, and events; opens/completes native jobs; snapshots jobs/results by runtime job id; projects job-result counts; and can emit a framed CultNet hello message advertising the native document and mutation contract surface. Codex app-server launch/read-back/acceptance is now a typed heartbeat/runtime-spine bridge with no Epiphany job-result dependency on the Codex SQLite runtime. - CultNet APIs are advertised as compatible schemas plus mutation contracts. Hello frames now expose readable document types, allowed operations, mutation authority, typed intent document types, and typed receipt document types; Aquarium should use those contracts to submit state changes and watch receipts rather than growing a little bespoke verb zoo. - The native runtime-spine hello now publishes the interactive surface catalog, not just the deep runtime bones. In addition to runtime/session/job/memory/heartbeat/ledger documents, Aquarium-discoverable contracts now advertise scene, pressure, reorient, CRRC, jobs, roles, role-result, reorient-result, planning, coordinator, Face, Void memory, repo initialization/birth runner, Rider bridge, and Unity bridge surfaces, with explicit read-only versus coordinator-owned intent/receipt posture. The point is to let Aquarium discover operator affordances from CultNet instead of hard-coding a secret menu of verbs. +- Epiphany now publishes those CultNet receipts locally under `schemas/cultnet/`, and `epiphany-runtime-spine schema-catalog --include-schema-json true` emits a merged builtin-plus-local schema catalog Aquarium can consume directly. The local catalog covers runtime-spine documents, durable agent/heartbeat/ledger state, operator-safe `epiphany.surface.*` projections, control intents, and receipt/artifact payloads. The vendored `cultnet-rs` wire contract was aligned with the C# canon at the same time: raw document replication now keys on `schemaId` and `recordKey`, snapshot filters use `schemaIds` / `recordKeys`, and hello supports typed mutation-contract advertisement instead of the old half-remembered payload-schema-version folklore. - Epiphany now owns the canonical schema paperwork locally under `schemas/`. The key receipts are `schemas/ghostlight.agent-state.schema.json`, `schemas/canonical-agent-state-schema.md`, `schemas/agent-state-variable-glossary.md`, `schemas/repo-personality-birth-projection.md`, and `schemas/heartbeat-state-schema.md`. If a standing trait name like `routing_discipline` changes, or if dossier/heartbeat/birth-projection semantics move, update those docs in the same pass instead of relying on old Ghostlight notes or live store archaeology. - The schema doctrine now makes the dossier split explicit: most resident Epiphany organs are `lane_core` dossiers with a lean role lattice and growth via rumination/distillation, while Face is an `embodied_actor` dossier that should trend toward dense Ghostlight-family personality, relationship pressure, and fallible character-loop response. `epiphany-agent-memory-store status` and `epiphany-character-loop` now surface that classification on the wire. - Face packets now carry deterministic Ghostlight-style `projectionSeed`, `appraisalSeed`, and `reactionSeed` surfaces rebuilt from local dossier traits, relationship memories, perceived overlays, and visible stimulus so the public mouth can use actual projection/appraisal machinery instead of decorative prompt text. Also record this now before some future fool hard-codes singularity: multiple Face actors are part of the plan, even though the current MVP still routes through one `face` role. diff --git a/schemas/README.md b/schemas/README.md index 03f4a437..29ebdb52 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -26,6 +26,10 @@ developer's damp recollection. heartbeat seeds. - [heartbeat-state-schema.md](./heartbeat-state-schema.md): typed initiative and routine-state contract for the swarm heartbeat organ. +- [cultnet/README.md](./cultnet/README.md): + published CultNet-facing state, surface, intent, and receipt schemas that + Aquarium and other runtimes can discover through Epiphany's schema-catalog + response. ## Source Of Truth diff --git a/schemas/cultnet/README.md b/schemas/cultnet/README.md new file mode 100644 index 00000000..193a4b99 --- /dev/null +++ b/schemas/cultnet/README.md @@ -0,0 +1,44 @@ +# CultNet Schemas + +This folder is Epiphany's published CultNet contract surface for Aquarium and +other swarm-side observers. It contains the runtime state, operator-facing +surface projections, control intents, and receipt/artifact payloads that the +runtime-spine advertises over `cultnet.schema.v0`. + +## What Lives Here + +- `index.json`: local registration manifest loaded by + `epiphany-runtime-spine` when answering schema-catalog requests. +- `*.schema.json`: top-level JSON Schema receipts for payload/document shapes. + +The payload receipts are deliberately practical rather than religiously +exhaustive. They publish the stable top-level structure Aquarium needs for +inspection, visualization, and control without pretending every nested app +server object deserves to be duplicated into a second baroque schema maze. + +## Main Families + +- `epiphany.runtime.*`: native runtime-spine identity, session, job, job + result, and event documents. +- `epiphany.agent_*` and `epiphany.state-ledger`: durable typed state the swarm + actually lives on. +- `epiphany.surface.*`: operator-safe projections for scene, freshness, + context, graph query, coordinator, roles, jobs, Face, Rider, Unity, repo + initialization, and related live surfaces. +- `*.intent.v0`: control documents Aquarium or another trusted coordinator can + submit through CultNet. +- receipt/artifact schemas such as `epiphany.swarm-control-receipt`, + `epiphany.face-bubble`, `epiphany.character-turn-packet`, and + `epiphany.repo-birth-runner`. + +## Publication Path + +Generate a schema-catalog response with inline schema bodies: + +```powershell +cargo run --manifest-path .\epiphany-core\Cargo.toml --bin epiphany-runtime-spine -- schema-catalog --output .epiphany-dogfood\runtime-spine\schema-catalog.json --include-schema-json true +``` + +The runtime-spine merges the builtin CultNet schema registry with this local +index before answering the request, so consumers can discover both canonical +wire contracts and Epiphany-local payload contracts from one place. diff --git a/schemas/cultnet/epiphany.agent-heartbeat.schema.json b/schemas/cultnet/epiphany.agent-heartbeat.schema.json new file mode 100644 index 00000000..44ec2f3b --- /dev/null +++ b/schemas/cultnet/epiphany.agent-heartbeat.schema.json @@ -0,0 +1,86 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.agent-heartbeat.schema.json", + "title": "Epiphany Heartbeat State", + "description": "Typed heartbeat store entry for initiative, rumination, and routine physiology.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "targetHeartbeatRate": { + "type": "number" + }, + "sceneClock": { + "type": "number" + }, + "selectionPolicy": { + "type": "object", + "additionalProperties": true + }, + "pacingPolicy": { + "type": "object", + "additionalProperties": true + }, + "participants": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "history": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "sleepCycle": { + "type": "object", + "additionalProperties": true + }, + "memoryResonance": { + "type": "object", + "additionalProperties": true + }, + "incubation": { + "type": "object", + "additionalProperties": true + }, + "thoughtLanes": { + "type": "object", + "additionalProperties": true + }, + "bridge": { + "type": "object", + "additionalProperties": true + }, + "candidateInterventions": { + "type": "object", + "additionalProperties": true + }, + "appraisals": { + "type": "object", + "additionalProperties": true + }, + "reactions": { + "type": "object", + "additionalProperties": true + }, + "extra": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "targetHeartbeatRate", + "sceneClock", + "selectionPolicy", + "pacingPolicy", + "participants", + "history" + ] +} diff --git a/schemas/cultnet/epiphany.agent.memory.schema.json b/schemas/cultnet/epiphany.agent.memory.schema.json new file mode 100644 index 00000000..861d0979 --- /dev/null +++ b/schemas/cultnet/epiphany.agent.memory.schema.json @@ -0,0 +1,55 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.agent.memory.schema.json", + "title": "Epiphany Agent Memory", + "description": "Ghostlight-shaped role dossier entry used by Epiphany lanes and Face.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "world": { + "type": "object", + "additionalProperties": true + }, + "agent": { + "type": "object", + "additionalProperties": true + }, + "relationships": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "events": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "scenes": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "extra": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "roleId", + "world", + "agent" + ] +} diff --git a/schemas/cultnet/epiphany.agent_memory_intent.v0.schema.json b/schemas/cultnet/epiphany.agent_memory_intent.v0.schema.json new file mode 100644 index 00000000..2edce37d --- /dev/null +++ b/schemas/cultnet/epiphany.agent_memory_intent.v0.schema.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.agent_memory_intent.v0.schema.json", + "title": "epiphany agent_memory_intent v0", + "description": "Coordinator-reviewed role self-memory mutation petition.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "patch": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "roleId", + "reason", + "patch" + ] +} diff --git a/schemas/cultnet/epiphany.character-turn-packet.schema.json b/schemas/cultnet/epiphany.character-turn-packet.schema.json new file mode 100644 index 00000000..c3539326 --- /dev/null +++ b/schemas/cultnet/epiphany.character-turn-packet.schema.json @@ -0,0 +1,78 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.character-turn-packet.schema.json", + "title": "Epiphany Character Turn Packet", + "description": "Epiphany-native character-loop projection packet.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "protocol": { + "type": "object", + "additionalProperties": true + }, + "source": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "stimulus": { + "type": "object", + "additionalProperties": true + }, + "projectedLocalContext": { + "type": "object", + "additionalProperties": true + }, + "projectionSeed": { + "type": "object", + "additionalProperties": true + }, + "appraisalSeed": { + "type": "object", + "additionalProperties": true + }, + "reactionSeed": { + "type": "object", + "additionalProperties": true + }, + "allowedOutputs": { + "type": "array", + "items": { + "type": "string" + } + }, + "cognitionLanes": { + "type": "object", + "additionalProperties": true + }, + "guardrails": { + "type": "array", + "items": { + "type": "string" + } + }, + "resultShape": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "protocol", + "source", + "createdAt", + "stimulus", + "projectedLocalContext", + "projectionSeed", + "appraisalSeed", + "reactionSeed", + "allowedOutputs", + "cognitionLanes", + "guardrails", + "resultShape" + ] +} diff --git a/schemas/cultnet/epiphany.character_turn_intent.v0.schema.json b/schemas/cultnet/epiphany.character_turn_intent.v0.schema.json new file mode 100644 index 00000000..8fd103f8 --- /dev/null +++ b/schemas/cultnet/epiphany.character_turn_intent.v0.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.character_turn_intent.v0.schema.json", + "title": "epiphany character_turn_intent v0", + "description": "Character-loop turn intent for Face or other embodied actors.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "stimulus": { + "type": "string" + }, + "source": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "status": { + "type": "string" + }, + "mood": { + "type": "string" + } + }, + "required": [ + "threadId", + "roleId", + "stimulus" + ] +} diff --git a/schemas/cultnet/epiphany.circadian_rhythm_intent.v0.schema.json b/schemas/cultnet/epiphany.circadian_rhythm_intent.v0.schema.json new file mode 100644 index 00000000..a19ede90 --- /dev/null +++ b/schemas/cultnet/epiphany.circadian_rhythm_intent.v0.schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.circadian_rhythm_intent.v0.schema.json", + "title": "epiphany circadian_rhythm_intent v0", + "description": "Circadian rhythm intent for letting the swarm sleep or wake.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "sleeping": { + "type": "boolean" + }, + "targetHeartbeatRate": { + "type": "number" + }, + "allowDream": { + "type": "boolean" + } + }, + "required": [ + "threadId", + "sleeping" + ] +} diff --git a/schemas/cultnet/epiphany.discord_persona_post_intent.v0.schema.json b/schemas/cultnet/epiphany.discord_persona_post_intent.v0.schema.json new file mode 100644 index 00000000..cdb320e4 --- /dev/null +++ b/schemas/cultnet/epiphany.discord_persona_post_intent.v0.schema.json @@ -0,0 +1,44 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.discord_persona_post_intent.v0.schema.json", + "title": "epiphany discord_persona_post_intent v0", + "description": "Face persona post intent for the #aquarium Discord mouth.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "content": { + "type": "string" + }, + "channelId": { + "type": [ + "string", + "null" + ] + }, + "personaName": { + "type": [ + "string", + "null" + ] + }, + "personaAvatarUrl": { + "type": [ + "string", + "null" + ] + }, + "replyToMessageId": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "threadId", + "content" + ] +} diff --git a/schemas/cultnet/epiphany.face-bubble.schema.json b/schemas/cultnet/epiphany.face-bubble.schema.json new file mode 100644 index 00000000..ffa5e512 --- /dev/null +++ b/schemas/cultnet/epiphany.face-bubble.schema.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.face-bubble.schema.json", + "title": "Epiphany Face Bubble", + "description": "Aquarium-visible Face bubble artifact.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "status": { + "type": "string" + }, + "source": { + "type": "string" + }, + "target": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "agentId": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "mood": { + "type": "string" + }, + "content": { + "type": "string" + }, + "bubble": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "createdAt", + "status", + "source", + "target", + "roleId", + "agentId", + "displayName", + "mood", + "content", + "bubble" + ] +} diff --git a/schemas/cultnet/epiphany.face-chat.schema.json b/schemas/cultnet/epiphany.face-chat.schema.json new file mode 100644 index 00000000..1cd612ad --- /dev/null +++ b/schemas/cultnet/epiphany.face-chat.schema.json @@ -0,0 +1,54 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.face-chat.schema.json", + "title": "Epiphany Face Chat Draft", + "description": "Face chat draft/post artifact.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "status": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "allowedChannelName": { + "type": "string" + }, + "allowedChannelId": { + "type": [ + "string", + "null" + ] + }, + "personaName": { + "type": [ + "string", + "null" + ] + }, + "personaAvatarUrl": { + "type": [ + "string", + "null" + ] + }, + "content": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "createdAt", + "status", + "reason", + "allowedChannelName", + "content" + ] +} diff --git a/schemas/cultnet/epiphany.face_bubble_intent.v0.schema.json b/schemas/cultnet/epiphany.face_bubble_intent.v0.schema.json new file mode 100644 index 00000000..cdd9c941 --- /dev/null +++ b/schemas/cultnet/epiphany.face_bubble_intent.v0.schema.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.face_bubble_intent.v0.schema.json", + "title": "epiphany face_bubble_intent v0", + "description": "Face bubble intent for Aquarium-visible chat puffs.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "content": { + "type": "string" + }, + "source": { + "type": "string" + }, + "status": { + "type": "string" + }, + "mood": { + "type": "string" + } + }, + "required": [ + "threadId", + "content" + ] +} diff --git a/schemas/cultnet/epiphany.heartbeat_pump_intent.v0.schema.json b/schemas/cultnet/epiphany.heartbeat_pump_intent.v0.schema.json new file mode 100644 index 00000000..8c77bf3e --- /dev/null +++ b/schemas/cultnet/epiphany.heartbeat_pump_intent.v0.schema.json @@ -0,0 +1,46 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.heartbeat_pump_intent.v0.schema.json", + "title": "epiphany heartbeat_pump_intent v0", + "description": "Heartbeat pump intent for waking lanes and pacing the swarm.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "scheduleId": { + "type": [ + "string", + "null" + ] + }, + "sourceSceneRef": { + "type": [ + "string", + "null" + ] + }, + "coordinatorAction": { + "type": [ + "string", + "null" + ] + }, + "targetRole": { + "type": [ + "string", + "null" + ] + }, + "externalUrgency": { + "type": "number" + }, + "maxTicks": { + "type": "integer" + } + }, + "required": [ + "threadId" + ] +} diff --git a/schemas/cultnet/epiphany.job_interrupt_intent.v0.schema.json b/schemas/cultnet/epiphany.job_interrupt_intent.v0.schema.json new file mode 100644 index 00000000..9f1b88e2 --- /dev/null +++ b/schemas/cultnet/epiphany.job_interrupt_intent.v0.schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.job_interrupt_intent.v0.schema.json", + "title": "epiphany job_interrupt_intent v0", + "description": "Bounded job interrupt intent mirroring thread/epiphany/jobInterrupt.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "bindingId": { + "type": [ + "string", + "null" + ] + }, + "reason": { + "type": "string" + } + }, + "required": [ + "threadId" + ] +} diff --git a/schemas/cultnet/epiphany.job_launch_intent.v0.schema.json b/schemas/cultnet/epiphany.job_launch_intent.v0.schema.json new file mode 100644 index 00000000..daa2893b --- /dev/null +++ b/schemas/cultnet/epiphany.job_launch_intent.v0.schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.job_launch_intent.v0.schema.json", + "title": "epiphany job_launch_intent v0", + "description": "Bounded job launch intent mirroring thread/epiphany/jobLaunch.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + }, + "maxRuntimeSeconds": { + "type": "integer" + } + }, + "required": [ + "threadId", + "kind" + ] +} diff --git a/schemas/cultnet/epiphany.objective_adoption_intent.v0.schema.json b/schemas/cultnet/epiphany.objective_adoption_intent.v0.schema.json new file mode 100644 index 00000000..ffdf26ce --- /dev/null +++ b/schemas/cultnet/epiphany.objective_adoption_intent.v0.schema.json @@ -0,0 +1,23 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.objective_adoption_intent.v0.schema.json", + "title": "epiphany objective_adoption_intent v0", + "description": "Explicit objective-draft adoption intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "draftId": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + } + }, + "required": [ + "threadId", + "draftId" + ] +} diff --git a/schemas/cultnet/epiphany.planning_update_intent.v0.schema.json b/schemas/cultnet/epiphany.planning_update_intent.v0.schema.json new file mode 100644 index 00000000..7ee0c361 --- /dev/null +++ b/schemas/cultnet/epiphany.planning_update_intent.v0.schema.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.planning_update_intent.v0.schema.json", + "title": "epiphany planning_update_intent v0", + "description": "Planning update intent over captures, backlog, roadmap, and drafts.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + }, + "patch": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "patch" + ] +} diff --git a/schemas/cultnet/epiphany.reorient_accept_intent.v0.schema.json b/schemas/cultnet/epiphany.reorient_accept_intent.v0.schema.json new file mode 100644 index 00000000..ce578371 --- /dev/null +++ b/schemas/cultnet/epiphany.reorient_accept_intent.v0.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.reorient_accept_intent.v0.schema.json", + "title": "epiphany reorient_accept_intent v0", + "description": "Review-gated reorientation finding acceptance intent mirroring thread/epiphany/reorientAccept.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + }, + "bindingId": { + "type": [ + "string", + "null" + ] + }, + "updateScratch": { + "type": "boolean" + }, + "updateInvestigationCheckpoint": { + "type": "boolean" + } + }, + "required": [ + "threadId" + ] +} diff --git a/schemas/cultnet/epiphany.reorient_launch_intent.v0.schema.json b/schemas/cultnet/epiphany.reorient_launch_intent.v0.schema.json new file mode 100644 index 00000000..f77109cd --- /dev/null +++ b/schemas/cultnet/epiphany.reorient_launch_intent.v0.schema.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.reorient_launch_intent.v0.schema.json", + "title": "epiphany reorient_launch_intent v0", + "description": "Bounded reorient-worker launch intent mirroring thread/epiphany/reorientLaunch.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + }, + "maxRuntimeSeconds": { + "type": "integer" + } + }, + "required": [ + "threadId" + ] +} diff --git a/schemas/cultnet/epiphany.repo-birth-runner.schema.json b/schemas/cultnet/epiphany.repo-birth-runner.schema.json new file mode 100644 index 00000000..5c9e5637 --- /dev/null +++ b/schemas/cultnet/epiphany.repo-birth-runner.schema.json @@ -0,0 +1,69 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.repo-birth-runner.schema.json", + "title": "Epiphany Repo Birth Runner Summary", + "description": "Startup-only birth runner summary artifact.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "baseline": { + "type": "string" + }, + "artifactDir": { + "type": "string" + }, + "initStore": { + "type": "string" + }, + "agentStore": { + "type": "string" + }, + "heartbeatStore": { + "type": "string" + }, + "startup": { + "type": "object", + "additionalProperties": true + }, + "executions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "requiresReview": { + "type": "boolean" + }, + "nextSafeMove": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "createdAt", + "mode", + "repo", + "baseline", + "artifactDir", + "initStore", + "agentStore", + "heartbeatStore", + "startup", + "executions", + "requiresReview", + "nextSafeMove" + ] +} diff --git a/schemas/cultnet/epiphany.repo-initialization-record.schema.json b/schemas/cultnet/epiphany.repo-initialization-record.schema.json new file mode 100644 index 00000000..f9639ffe --- /dev/null +++ b/schemas/cultnet/epiphany.repo-initialization-record.schema.json @@ -0,0 +1,52 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.repo-initialization-record.schema.json", + "title": "Epiphany Repo Initialization Record", + "description": "Accepted startup-only birth rite record.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "recordId": { + "type": "string" + }, + "repoId": { + "type": "string" + }, + "repoPath": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "sourcePacketSchemaVersion": { + "type": "string" + }, + "sourcePacketPath": { + "type": "string" + }, + "acceptedAt": { + "type": "string" + }, + "acceptedBy": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "recordId", + "repoId", + "repoPath", + "kind", + "sourcePacketSchemaVersion", + "sourcePacketPath", + "acceptedAt", + "acceptedBy", + "summary" + ] +} diff --git a/schemas/cultnet/epiphany.repo-personality-artifacts.schema.json b/schemas/cultnet/epiphany.repo-personality-artifacts.schema.json new file mode 100644 index 00000000..9582e65d --- /dev/null +++ b/schemas/cultnet/epiphany.repo-personality-artifacts.schema.json @@ -0,0 +1,78 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.repo-personality-artifacts.schema.json", + "title": "Epiphany Repo Personality Artifacts", + "description": "Repo scout/project/startup artifact family emitted by epiphany-repo-personality.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "root": { + "type": [ + "string", + "null" + ] + }, + "repo": { + "type": [ + "string", + "null" + ] + }, + "repoId": { + "type": [ + "string", + "null" + ] + }, + "artifactDir": { + "type": [ + "string", + "null" + ] + }, + "store": { + "type": [ + "string", + "null" + ] + }, + "profile": { + "type": "object", + "additionalProperties": true + }, + "terrain": { + "type": "object", + "additionalProperties": true + }, + "trajectory": { + "type": "object", + "additionalProperties": true + }, + "generatedPackets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "requiredActions": { + "type": "array", + "items": { + "type": "string" + } + }, + "nextSafeMove": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "mode" + ] +} diff --git a/schemas/cultnet/epiphany.repo_birth_run_intent.v0.schema.json b/schemas/cultnet/epiphany.repo_birth_run_intent.v0.schema.json new file mode 100644 index 00000000..fcdea484 --- /dev/null +++ b/schemas/cultnet/epiphany.repo_birth_run_intent.v0.schema.json @@ -0,0 +1,61 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.repo_birth_run_intent.v0.schema.json", + "title": "epiphany repo_birth_run_intent v0", + "description": "Startup-only repo birth runner plan/run intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "repo": { + "type": "string" + }, + "baseline": { + "type": [ + "string", + "null" + ] + }, + "artifactDir": { + "type": [ + "string", + "null" + ] + }, + "initStore": { + "type": [ + "string", + "null" + ] + }, + "agentStore": { + "type": [ + "string", + "null" + ] + }, + "heartbeatStore": { + "type": [ + "string", + "null" + ] + }, + "mode": { + "type": "string" + }, + "model": { + "type": [ + "string", + "null" + ] + }, + "timeoutSeconds": { + "type": "integer" + }, + "autoAccept": { + "type": "boolean" + } + }, + "required": [ + "repo" + ] +} diff --git a/schemas/cultnet/epiphany.repo_initialization_accept_intent.v0.schema.json b/schemas/cultnet/epiphany.repo_initialization_accept_intent.v0.schema.json new file mode 100644 index 00000000..941f737e --- /dev/null +++ b/schemas/cultnet/epiphany.repo_initialization_accept_intent.v0.schema.json @@ -0,0 +1,59 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.repo_initialization_accept_intent.v0.schema.json", + "title": "epiphany repo_initialization_accept_intent v0", + "description": "Startup-only repo initialization acceptance intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "kind": { + "type": "string" + }, + "packetPath": { + "type": "string" + }, + "resultPath": { + "type": [ + "string", + "null" + ] + }, + "acceptedBy": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "type": [ + "string", + "null" + ] + }, + "agentStore": { + "type": [ + "string", + "null" + ] + }, + "applySelfPatches": { + "type": "boolean" + }, + "applyTraitSeeds": { + "type": "boolean" + }, + "heartbeatStore": { + "type": [ + "string", + "null" + ] + }, + "applyHeartbeatSeeds": { + "type": "boolean" + } + }, + "required": [ + "kind", + "packetPath" + ] +} diff --git a/schemas/cultnet/epiphany.repo_startup_intent.v0.schema.json b/schemas/cultnet/epiphany.repo_startup_intent.v0.schema.json new file mode 100644 index 00000000..abb3c4ae --- /dev/null +++ b/schemas/cultnet/epiphany.repo_startup_intent.v0.schema.json @@ -0,0 +1,34 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.repo_startup_intent.v0.schema.json", + "title": "epiphany repo_startup_intent v0", + "description": "Startup-only repo initialization intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "repo": { + "type": "string" + }, + "baseline": { + "type": [ + "string", + "null" + ] + }, + "artifactDir": { + "type": [ + "string", + "null" + ] + }, + "initStore": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "repo" + ] +} diff --git a/schemas/cultnet/epiphany.rider_context_intent.v0.schema.json b/schemas/cultnet/epiphany.rider_context_intent.v0.schema.json new file mode 100644 index 00000000..b617fa26 --- /dev/null +++ b/schemas/cultnet/epiphany.rider_context_intent.v0.schema.json @@ -0,0 +1,52 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.rider_context_intent.v0.schema.json", + "title": "epiphany rider_context_intent v0", + "description": "Rider bridge context capture intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectRoot": { + "type": "string" + }, + "file": { + "type": [ + "string", + "null" + ] + }, + "line": { + "type": "integer" + }, + "column": { + "type": "integer" + }, + "selectionStart": { + "type": "integer" + }, + "selectionEnd": { + "type": "integer" + }, + "symbolName": { + "type": [ + "string", + "null" + ] + }, + "symbolKind": { + "type": [ + "string", + "null" + ] + }, + "symbolNamespace": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "projectRoot" + ] +} diff --git a/schemas/cultnet/epiphany.rider_open_ref_intent.v0.schema.json b/schemas/cultnet/epiphany.rider_open_ref_intent.v0.schema.json new file mode 100644 index 00000000..2f3a01fa --- /dev/null +++ b/schemas/cultnet/epiphany.rider_open_ref_intent.v0.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.rider_open_ref_intent.v0.schema.json", + "title": "epiphany rider_open_ref_intent v0", + "description": "Rider bridge open-ref intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectRoot": { + "type": "string" + }, + "file": { + "type": [ + "string", + "null" + ] + }, + "line": { + "type": "integer" + }, + "column": { + "type": "integer" + }, + "symbolName": { + "type": [ + "string", + "null" + ] + }, + "symbolKind": { + "type": [ + "string", + "null" + ] + }, + "symbolNamespace": { + "type": [ + "string", + "null" + ] + }, + "launch": { + "type": "boolean" + } + }, + "required": [ + "projectRoot" + ] +} diff --git a/schemas/cultnet/epiphany.rider_status_intent.v0.schema.json b/schemas/cultnet/epiphany.rider_status_intent.v0.schema.json new file mode 100644 index 00000000..5e9686a8 --- /dev/null +++ b/schemas/cultnet/epiphany.rider_status_intent.v0.schema.json @@ -0,0 +1,16 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.rider_status_intent.v0.schema.json", + "title": "epiphany rider_status_intent v0", + "description": "Rider bridge status intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectRoot": { + "type": "string" + } + }, + "required": [ + "projectRoot" + ] +} diff --git a/schemas/cultnet/epiphany.role_accept_intent.v0.schema.json b/schemas/cultnet/epiphany.role_accept_intent.v0.schema.json new file mode 100644 index 00000000..cd688675 --- /dev/null +++ b/schemas/cultnet/epiphany.role_accept_intent.v0.schema.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.role_accept_intent.v0.schema.json", + "title": "epiphany role_accept_intent v0", + "description": "Review-gated role acceptance intent mirroring thread/epiphany/roleAccept.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + }, + "bindingId": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "threadId", + "roleId" + ] +} diff --git a/schemas/cultnet/epiphany.role_launch_intent.v0.schema.json b/schemas/cultnet/epiphany.role_launch_intent.v0.schema.json new file mode 100644 index 00000000..0442e027 --- /dev/null +++ b/schemas/cultnet/epiphany.role_launch_intent.v0.schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.role_launch_intent.v0.schema.json", + "title": "epiphany role_launch_intent v0", + "description": "Fixed-lane role launch intent mirroring thread/epiphany/roleLaunch.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "expectedRevision": { + "type": "integer" + }, + "maxRuntimeSeconds": { + "type": "integer" + } + }, + "required": [ + "threadId", + "roleId" + ] +} diff --git a/schemas/cultnet/epiphany.runtime.event.schema.json b/schemas/cultnet/epiphany.runtime.event.schema.json new file mode 100644 index 00000000..36325bdf --- /dev/null +++ b/schemas/cultnet/epiphany.runtime.event.schema.json @@ -0,0 +1,52 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.event.schema.json", + "title": "Epiphany Runtime Event", + "description": "Append-only native runtime event projection.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "eventId": { + "type": "string" + }, + "occurredAt": { + "type": "string" + }, + "eventType": { + "type": "string" + }, + "source": { + "type": "string" + }, + "sessionId": { + "type": [ + "string", + "null" + ] + }, + "jobId": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "type": "string" + }, + "metadata": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "eventId", + "occurredAt", + "eventType", + "source", + "summary" + ] +} diff --git a/schemas/cultnet/epiphany.runtime.identity.schema.json b/schemas/cultnet/epiphany.runtime.identity.schema.json new file mode 100644 index 00000000..1758fb02 --- /dev/null +++ b/schemas/cultnet/epiphany.runtime.identity.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.identity.schema.json", + "title": "Epiphany Runtime Identity", + "description": "Identity record for the native Epiphany runtime spine.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string", + "description": "Runtime identity payload version." + }, + "runtimeId": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "runtimeKind": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "supportedDocumentTypes": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "runtimeId", + "displayName", + "runtimeKind", + "createdAt", + "updatedAt", + "supportedDocumentTypes" + ] +} diff --git a/schemas/cultnet/epiphany.runtime.job-result.schema.json b/schemas/cultnet/epiphany.runtime.job-result.schema.json new file mode 100644 index 00000000..7c1ba9b7 --- /dev/null +++ b/schemas/cultnet/epiphany.runtime.job-result.schema.json @@ -0,0 +1,63 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.job-result.schema.json", + "title": "Epiphany Runtime Job Result", + "description": "Reviewable runtime-spine job result.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "resultId": { + "type": "string" + }, + "jobId": { + "type": "string" + }, + "sessionId": { + "type": "string" + }, + "role": { + "type": "string" + }, + "verdict": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "completedAt": { + "type": "string" + }, + "nextSafeMove": { + "type": "string" + }, + "evidenceRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "artifactRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "resultId", + "jobId", + "sessionId", + "role", + "verdict", + "summary", + "completedAt" + ] +} diff --git a/schemas/cultnet/epiphany.runtime.job.schema.json b/schemas/cultnet/epiphany.runtime.job.schema.json new file mode 100644 index 00000000..d706f4c3 --- /dev/null +++ b/schemas/cultnet/epiphany.runtime.job.schema.json @@ -0,0 +1,53 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.job.schema.json", + "title": "Epiphany Runtime Job", + "description": "Native runtime-spine job state.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "jobId": { + "type": "string" + }, + "sessionId": { + "type": "string" + }, + "role": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "artifactRefs": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "jobId", + "sessionId", + "role", + "status", + "createdAt", + "updatedAt" + ] +} diff --git a/schemas/cultnet/epiphany.runtime.session.schema.json b/schemas/cultnet/epiphany.runtime.session.schema.json new file mode 100644 index 00000000..05fe8987 --- /dev/null +++ b/schemas/cultnet/epiphany.runtime.session.schema.json @@ -0,0 +1,43 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.session.schema.json", + "title": "Epiphany Runtime Session", + "description": "Native runtime-spine session state.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "sessionId": { + "type": "string" + }, + "objective": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "coordinatorNote": { + "type": "string" + }, + "metadata": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "sessionId", + "objective", + "status", + "createdAt", + "updatedAt" + ] +} diff --git a/schemas/cultnet/epiphany.runtime.session_intent.v0.schema.json b/schemas/cultnet/epiphany.runtime.session_intent.v0.schema.json new file mode 100644 index 00000000..3e8f4696 --- /dev/null +++ b/schemas/cultnet/epiphany.runtime.session_intent.v0.schema.json @@ -0,0 +1,23 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.session_intent.v0.schema.json", + "title": "epiphany runtime session_intent v0", + "description": "Coordinator-owned runtime session creation/update intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "objective": { + "type": "string" + }, + "coordinatorNote": { + "type": "string" + } + }, + "required": [ + "threadId", + "objective" + ] +} diff --git a/schemas/cultnet/epiphany.state-ledger.schema.json b/schemas/cultnet/epiphany.state-ledger.schema.json new file mode 100644 index 00000000..9cdb7c6f --- /dev/null +++ b/schemas/cultnet/epiphany.state-ledger.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.state-ledger.schema.json", + "title": "Epiphany State Ledger", + "description": "Durable branch/evidence ledger entry.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "branches": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "evidence": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "extra": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "schemaVersion", + "branches", + "evidence" + ] +} diff --git a/schemas/cultnet/epiphany.surface.context.schema.json b/schemas/cultnet/epiphany.surface.context.schema.json new file mode 100644 index 00000000..36bb8c49 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.context.schema.json @@ -0,0 +1,37 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.context.schema.json", + "title": "Epiphany context", + "description": "Bounded graph/evidence context shard mirrored from thread/epiphany/context.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "context": { + "type": "object", + "additionalProperties": true + }, + "missing": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "context", + "missing" + ] +} diff --git a/schemas/cultnet/epiphany.surface.coordinator.schema.json b/schemas/cultnet/epiphany.surface.coordinator.schema.json new file mode 100644 index 00000000..1abcdeae --- /dev/null +++ b/schemas/cultnet/epiphany.surface.coordinator.schema.json @@ -0,0 +1,72 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.coordinator.schema.json", + "title": "Epiphany coordinator", + "description": "Fixed-lane coordinator recommendation surface mirrored from thread/epiphany/coordinator.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "action": { + "type": "string" + }, + "targetRole": { + "type": [ + "string", + "null" + ] + }, + "recommendedSceneAction": { + "type": [ + "string", + "null" + ] + }, + "requiresReview": { + "type": "boolean" + }, + "canAutoRun": { + "type": "boolean" + }, + "reason": { + "type": "string" + }, + "sourceSignals": { + "type": "object", + "additionalProperties": true + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "action", + "requiresReview", + "canAutoRun", + "reason", + "sourceSignals", + "roles", + "note" + ] +} diff --git a/schemas/cultnet/epiphany.surface.crrc.schema.json b/schemas/cultnet/epiphany.surface.crrc.schema.json new file mode 100644 index 00000000..cedfaacd --- /dev/null +++ b/schemas/cultnet/epiphany.surface.crrc.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.crrc.schema.json", + "title": "Epiphany crrc", + "description": "Read-only CRRC recommendation surface mirrored from thread/epiphany/crrc.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "pressure": { + "type": "object", + "additionalProperties": true + }, + "decision": { + "type": "object", + "additionalProperties": true + }, + "recommendation": { + "type": "object", + "additionalProperties": true + }, + "reorientBindingId": { + "type": "string" + }, + "reorientResultStatus": { + "type": "string" + }, + "job": { + "type": "object", + "additionalProperties": true + }, + "finding": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "pressure", + "decision", + "recommendation", + "reorientBindingId", + "reorientResultStatus" + ] +} diff --git a/schemas/cultnet/epiphany.surface.face.schema.json b/schemas/cultnet/epiphany.surface.face.schema.json new file mode 100644 index 00000000..2ef71609 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.face.schema.json @@ -0,0 +1,50 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.face.schema.json", + "title": "Epiphany face", + "description": "Operator-safe Face bubble/draft/post surface mirrored from epiphany-face-discord and epiphany-character-loop artifacts.", + "type": "object", + "additionalProperties": true, + "properties": { + "ok": { + "type": "boolean" + }, + "status": { + "type": "string" + }, + "latestArtifacts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "bubbles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "drafts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "posts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "ok" + ] +} diff --git a/schemas/cultnet/epiphany.surface.freshness.schema.json b/schemas/cultnet/epiphany.surface.freshness.schema.json new file mode 100644 index 00000000..e4c62d63 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.freshness.schema.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.freshness.schema.json", + "title": "Epiphany freshness", + "description": "Read-only freshness reflection mirrored from thread/epiphany/freshness.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "retrieval": { + "type": "object", + "additionalProperties": true + }, + "graph": { + "type": "object", + "additionalProperties": true + }, + "watcher": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "retrieval", + "graph", + "watcher" + ] +} diff --git a/schemas/cultnet/epiphany.surface.graph-query.schema.json b/schemas/cultnet/epiphany.surface.graph-query.schema.json new file mode 100644 index 00000000..f4519009 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.graph-query.schema.json @@ -0,0 +1,50 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.graph-query.schema.json", + "title": "Epiphany graph-query", + "description": "Bounded graph traversal response mirrored from thread/epiphany/graphQuery.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "graph": { + "type": "object", + "additionalProperties": true + }, + "frontier": { + "type": "object", + "additionalProperties": true + }, + "checkpoint": { + "type": "object", + "additionalProperties": true + }, + "matched": { + "type": "object", + "additionalProperties": true + }, + "missing": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "graph", + "matched", + "missing" + ] +} diff --git a/schemas/cultnet/epiphany.surface.jobs.schema.json b/schemas/cultnet/epiphany.surface.jobs.schema.json new file mode 100644 index 00000000..d7fb7e13 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.jobs.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.jobs.schema.json", + "title": "Epiphany jobs", + "description": "Job/progress reflection mirrored from thread/epiphany/jobs.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "jobs": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + } + }, + "required": [ + "threadId", + "source", + "jobs" + ] +} diff --git a/schemas/cultnet/epiphany.surface.planning.schema.json b/schemas/cultnet/epiphany.surface.planning.schema.json new file mode 100644 index 00000000..85da3ac7 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.planning.schema.json @@ -0,0 +1,37 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.planning.schema.json", + "title": "Epiphany planning", + "description": "Planning projection mirrored from thread/epiphany/planning.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "planning": { + "type": "object", + "additionalProperties": true + }, + "summary": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "planning", + "summary" + ] +} diff --git a/schemas/cultnet/epiphany.surface.pressure.schema.json b/schemas/cultnet/epiphany.surface.pressure.schema.json new file mode 100644 index 00000000..8a264322 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.pressure.schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.pressure.schema.json", + "title": "Epiphany pressure", + "description": "Read-only context pressure reflection mirrored from thread/epiphany/pressure.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "pressure": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "pressure" + ] +} diff --git a/schemas/cultnet/epiphany.surface.reorient-result.schema.json b/schemas/cultnet/epiphany.surface.reorient-result.schema.json new file mode 100644 index 00000000..19c97a2d --- /dev/null +++ b/schemas/cultnet/epiphany.surface.reorient-result.schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.reorient-result.schema.json", + "title": "Epiphany reorient-result", + "description": "Completed reorientation finding surface mirrored from thread/epiphany/reorientResult.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "bindingId": { + "type": "string" + }, + "status": { + "type": "string" + }, + "job": { + "type": "object", + "additionalProperties": true + }, + "finding": { + "type": "object", + "additionalProperties": true + }, + "note": { + "type": "string" + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "bindingId", + "status", + "note" + ] +} diff --git a/schemas/cultnet/epiphany.surface.reorient.schema.json b/schemas/cultnet/epiphany.surface.reorient.schema.json new file mode 100644 index 00000000..5cdf4fe1 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.reorient.schema.json @@ -0,0 +1,32 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.reorient.schema.json", + "title": "Epiphany reorient", + "description": "Read-only reorientation verdict mirrored from thread/epiphany/reorient.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "decision": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "decision" + ] +} diff --git a/schemas/cultnet/epiphany.surface.repo-birth-runner.schema.json b/schemas/cultnet/epiphany.surface.repo-birth-runner.schema.json new file mode 100644 index 00000000..24098b0e --- /dev/null +++ b/schemas/cultnet/epiphany.surface.repo-birth-runner.schema.json @@ -0,0 +1,69 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.repo-birth-runner.schema.json", + "title": "Epiphany repo-birth-runner", + "description": "Startup-only birth runner summary mirrored from epiphany-repo-birth-runner.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "baseline": { + "type": "string" + }, + "artifactDir": { + "type": "string" + }, + "initStore": { + "type": "string" + }, + "agentStore": { + "type": "string" + }, + "heartbeatStore": { + "type": "string" + }, + "startup": { + "type": "object", + "additionalProperties": true + }, + "executions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "requiresReview": { + "type": "boolean" + }, + "nextSafeMove": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "createdAt", + "mode", + "repo", + "baseline", + "artifactDir", + "initStore", + "agentStore", + "heartbeatStore", + "startup", + "executions", + "requiresReview", + "nextSafeMove" + ] +} diff --git a/schemas/cultnet/epiphany.surface.repo-initialization.schema.json b/schemas/cultnet/epiphany.surface.repo-initialization.schema.json new file mode 100644 index 00000000..1f1601ee --- /dev/null +++ b/schemas/cultnet/epiphany.surface.repo-initialization.schema.json @@ -0,0 +1,87 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.repo-initialization.schema.json", + "title": "Epiphany repo-initialization", + "description": "Startup-only repo initialization summary mirrored from epiphany-repo-personality startup.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "action": { + "type": "string" + }, + "repoId": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "baseline": { + "type": "string" + }, + "artifactDir": { + "type": "string" + }, + "initStore": { + "type": "string" + }, + "acceptedKinds": { + "type": "array", + "items": { + "type": "string" + } + }, + "missingKinds": { + "type": "array", + "items": { + "type": "string" + } + }, + "projectionStore": { + "type": [ + "string", + "null" + ] + }, + "generatedPackets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "requiredActions": { + "type": "array", + "items": { + "type": "string" + } + }, + "requiresReview": { + "type": "boolean" + }, + "nextSafeMove": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "mode", + "action", + "repoId", + "repo", + "baseline", + "artifactDir", + "initStore", + "acceptedKinds", + "missingKinds", + "generatedPackets", + "requiredActions", + "requiresReview", + "nextSafeMove" + ] +} diff --git a/schemas/cultnet/epiphany.surface.rider-bridge.schema.json b/schemas/cultnet/epiphany.surface.rider-bridge.schema.json new file mode 100644 index 00000000..4bb86327 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.rider-bridge.schema.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.rider-bridge.schema.json", + "title": "Epiphany rider-bridge", + "description": "Operator-safe Rider status/context/open-ref surface mirrored from epiphany-rider-bridge.", + "type": "object", + "additionalProperties": true, + "properties": { + "status": { + "type": "string" + }, + "projectRoot": { + "type": "string" + }, + "rider": { + "type": "object", + "additionalProperties": true + }, + "solution": { + "type": "object", + "additionalProperties": true + }, + "vcs": { + "type": "object", + "additionalProperties": true + }, + "artifacts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "status" + ] +} diff --git a/schemas/cultnet/epiphany.surface.role-result.schema.json b/schemas/cultnet/epiphany.surface.role-result.schema.json new file mode 100644 index 00000000..a301fd21 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.role-result.schema.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.role-result.schema.json", + "title": "Epiphany role-result", + "description": "Reviewable role finding read-back mirrored from thread/epiphany/roleResult.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "bindingId": { + "type": "string" + }, + "status": { + "type": "string" + }, + "job": { + "type": "object", + "additionalProperties": true + }, + "finding": { + "type": "object", + "additionalProperties": true + }, + "note": { + "type": "string" + } + }, + "required": [ + "threadId", + "roleId", + "source", + "stateStatus", + "bindingId", + "status", + "note" + ] +} diff --git a/schemas/cultnet/epiphany.surface.roles.schema.json b/schemas/cultnet/epiphany.surface.roles.schema.json new file mode 100644 index 00000000..e162fa15 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.roles.schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.roles.schema.json", + "title": "Epiphany roles", + "description": "Role ownership reflection mirrored from thread/epiphany/roles.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "threadId", + "source", + "stateStatus", + "roles", + "note" + ] +} diff --git a/schemas/cultnet/epiphany.surface.scene.schema.json b/schemas/cultnet/epiphany.surface.scene.schema.json new file mode 100644 index 00000000..6a65dfea --- /dev/null +++ b/schemas/cultnet/epiphany.surface.scene.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.scene.schema.json", + "title": "Epiphany scene", + "description": "Operator-safe scene reflection mirrored from thread/epiphany/scene.", + "type": "object", + "additionalProperties": true, + "properties": { + "threadId": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stateStatus": { + "type": "string" + }, + "stateRevision": { + "type": "integer" + }, + "scene": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "threadId", + "source", + "scene" + ] +} diff --git a/schemas/cultnet/epiphany.surface.unity-bridge.schema.json b/schemas/cultnet/epiphany.surface.unity-bridge.schema.json new file mode 100644 index 00000000..8c2787b1 --- /dev/null +++ b/schemas/cultnet/epiphany.surface.unity-bridge.schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.unity-bridge.schema.json", + "title": "Epiphany unity-bridge", + "description": "Pinned Unity editor/runtime bridge surface mirrored from epiphany-unity-bridge.", + "type": "object", + "additionalProperties": true, + "properties": { + "status": { + "type": "string" + }, + "projectPath": { + "type": "string" + }, + "projectVersion": { + "type": "object", + "additionalProperties": true + }, + "bridge": { + "type": "object", + "additionalProperties": true + }, + "installations": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "runStatus": { + "type": "string" + }, + "artifacts": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "status" + ] +} diff --git a/schemas/cultnet/epiphany.surface.void-memory.schema.json b/schemas/cultnet/epiphany.surface.void-memory.schema.json new file mode 100644 index 00000000..b250182c --- /dev/null +++ b/schemas/cultnet/epiphany.surface.void-memory.schema.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.void-memory.schema.json", + "title": "Epiphany void-memory", + "description": "Inspection surface for Void-derived memory organs.", + "type": "object", + "additionalProperties": true, + "properties": { + "ok": { + "type": "boolean" + }, + "status": { + "type": "string" + }, + "postgres": { + "type": "object", + "additionalProperties": true + }, + "qdrant": { + "type": "object", + "additionalProperties": true + }, + "archive": { + "type": "object", + "additionalProperties": true + }, + "collections": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "ok" + ] +} diff --git a/schemas/cultnet/epiphany.swarm-control-receipt.schema.json b/schemas/cultnet/epiphany.swarm-control-receipt.schema.json new file mode 100644 index 00000000..d2c1b7aa --- /dev/null +++ b/schemas/cultnet/epiphany.swarm-control-receipt.schema.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.swarm-control-receipt.schema.json", + "title": "Epiphany Swarm Control Receipt", + "description": "Generic receipt emitted after a coordinator-owned Epiphany control action.", + "type": "object", + "additionalProperties": true, + "properties": { + "schemaVersion": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "action": { + "type": "string" + }, + "authority": { + "type": "string" + }, + "targetDocumentType": { + "type": "string" + }, + "targetBindingId": { + "type": [ + "string", + "null" + ] + }, + "targetRole": { + "type": [ + "string", + "null" + ] + }, + "targetThreadId": { + "type": [ + "string", + "null" + ] + }, + "status": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "artifactPaths": { + "type": "array", + "items": { + "type": "string" + } + }, + "note": { + "type": "string" + } + }, + "required": [ + "schemaVersion", + "ok", + "action", + "authority", + "targetDocumentType", + "status", + "summary" + ] +} diff --git a/schemas/cultnet/epiphany.unity_check_compilation_intent.v0.schema.json b/schemas/cultnet/epiphany.unity_check_compilation_intent.v0.schema.json new file mode 100644 index 00000000..d764966f --- /dev/null +++ b/schemas/cultnet/epiphany.unity_check_compilation_intent.v0.schema.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_check_compilation_intent.v0.schema.json", + "title": "epiphany unity_check_compilation_intent v0", + "description": "Unity bridge compilation-check intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectPath": { + "type": "string" + }, + "dryRun": { + "type": "boolean" + } + }, + "required": [ + "projectPath" + ] +} diff --git a/schemas/cultnet/epiphany.unity_inspect_intent.v0.schema.json b/schemas/cultnet/epiphany.unity_inspect_intent.v0.schema.json new file mode 100644 index 00000000..9b910ac6 --- /dev/null +++ b/schemas/cultnet/epiphany.unity_inspect_intent.v0.schema.json @@ -0,0 +1,16 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_inspect_intent.v0.schema.json", + "title": "epiphany unity_inspect_intent v0", + "description": "Unity bridge inspect intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectPath": { + "type": "string" + } + }, + "required": [ + "projectPath" + ] +} diff --git a/schemas/cultnet/epiphany.unity_probe_intent.v0.schema.json b/schemas/cultnet/epiphany.unity_probe_intent.v0.schema.json new file mode 100644 index 00000000..f03b9103 --- /dev/null +++ b/schemas/cultnet/epiphany.unity_probe_intent.v0.schema.json @@ -0,0 +1,59 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_probe_intent.v0.schema.json", + "title": "epiphany unity_probe_intent v0", + "description": "Unity bridge named probe intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectPath": { + "type": "string" + }, + "operation": { + "type": "string" + }, + "scene": { + "type": [ + "string", + "null" + ] + }, + "asset": { + "type": [ + "string", + "null" + ] + }, + "guid": { + "type": [ + "string", + "null" + ] + }, + "maxObjects": { + "type": "integer" + }, + "maxProperties": { + "type": "integer" + }, + "maxDependencies": { + "type": "integer" + }, + "platform": { + "type": "string" + }, + "filter": { + "type": [ + "string", + "null" + ] + }, + "dryRun": { + "type": "boolean" + } + }, + "required": [ + "projectPath", + "operation" + ] +} diff --git a/schemas/cultnet/epiphany.unity_run_tests_intent.v0.schema.json b/schemas/cultnet/epiphany.unity_run_tests_intent.v0.schema.json new file mode 100644 index 00000000..139df069 --- /dev/null +++ b/schemas/cultnet/epiphany.unity_run_tests_intent.v0.schema.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_run_tests_intent.v0.schema.json", + "title": "epiphany unity_run_tests_intent v0", + "description": "Unity bridge run-tests intent.", + "type": "object", + "additionalProperties": true, + "properties": { + "projectPath": { + "type": "string" + }, + "platform": { + "type": "string" + }, + "filter": { + "type": [ + "string", + "null" + ] + }, + "dryRun": { + "type": "boolean" + } + }, + "required": [ + "projectPath" + ] +} diff --git a/schemas/cultnet/index.json b/schemas/cultnet/index.json new file mode 100644 index 00000000..8d0f3de0 --- /dev/null +++ b/schemas/cultnet/index.json @@ -0,0 +1,654 @@ +{ + "schemaVersion": "epiphany.cultnet_catalog.v0", + "schemas": [ + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.identity.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.runtime_spine.v0", + "documentType": "epiphany.runtime.identity", + "title": "Epiphany Runtime Identity", + "path": "epiphany.runtime.identity.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.session.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.runtime_spine.v0", + "documentType": "epiphany.runtime.session", + "title": "Epiphany Runtime Session", + "path": "epiphany.runtime.session.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.job.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.runtime_spine.v0", + "documentType": "epiphany.runtime.job", + "title": "Epiphany Runtime Job", + "path": "epiphany.runtime.job.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.job-result.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.runtime_spine.v0", + "documentType": "epiphany.runtime.job_result", + "title": "Epiphany Runtime Job Result", + "path": "epiphany.runtime.job-result.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.event.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.runtime_spine.v0", + "documentType": "epiphany.runtime.event", + "title": "Epiphany Runtime Event", + "path": "epiphany.runtime.event.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.agent.memory.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.agent_memory.v0", + "documentType": "epiphany.agent_memory", + "title": "Epiphany Agent Memory", + "path": "epiphany.agent.memory.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.agent-heartbeat.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.agent_heartbeat.v0", + "documentType": "epiphany.agent_heartbeat", + "title": "Epiphany Heartbeat State", + "path": "epiphany.agent-heartbeat.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.state-ledger.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.state_ledger.v0", + "documentType": "epiphany.state_ledger", + "title": "Epiphany State Ledger", + "path": "epiphany.state-ledger.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.scene.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.scene_surface.v0", + "documentType": "epiphany.surface.scene", + "title": "Epiphany scene", + "path": "epiphany.surface.scene.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.freshness.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.freshness_surface.v0", + "documentType": "epiphany.surface.freshness", + "title": "Epiphany freshness", + "path": "epiphany.surface.freshness.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.context.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.context_surface.v0", + "documentType": "epiphany.surface.context", + "title": "Epiphany context", + "path": "epiphany.surface.context.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.graph-query.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.graph_query_surface.v0", + "documentType": "epiphany.surface.graph_query", + "title": "Epiphany graph-query", + "path": "epiphany.surface.graph-query.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.pressure.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.pressure_surface.v0", + "documentType": "epiphany.surface.pressure", + "title": "Epiphany pressure", + "path": "epiphany.surface.pressure.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.reorient.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.reorient_surface.v0", + "documentType": "epiphany.surface.reorient", + "title": "Epiphany reorient", + "path": "epiphany.surface.reorient.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.crrc.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.crrc_surface.v0", + "documentType": "epiphany.surface.crrc", + "title": "Epiphany crrc", + "path": "epiphany.surface.crrc.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.jobs.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.jobs_surface.v0", + "documentType": "epiphany.surface.jobs", + "title": "Epiphany jobs", + "path": "epiphany.surface.jobs.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.roles.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.roles_surface.v0", + "documentType": "epiphany.surface.roles", + "title": "Epiphany roles", + "path": "epiphany.surface.roles.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.role-result.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.role_result_surface.v0", + "documentType": "epiphany.surface.role_result", + "title": "Epiphany role-result", + "path": "epiphany.surface.role-result.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.reorient-result.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.reorient_result_surface.v0", + "documentType": "epiphany.surface.reorient_result", + "title": "Epiphany reorient-result", + "path": "epiphany.surface.reorient-result.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.planning.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.planning_surface.v0", + "documentType": "epiphany.surface.planning", + "title": "Epiphany planning", + "path": "epiphany.surface.planning.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.coordinator.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.coordinator_surface.v0", + "documentType": "epiphany.surface.coordinator", + "title": "Epiphany coordinator", + "path": "epiphany.surface.coordinator.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.face.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.face_surface.v0", + "documentType": "epiphany.surface.face", + "title": "Epiphany face", + "path": "epiphany.surface.face.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.void-memory.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.void_memory_surface.v0", + "documentType": "epiphany.surface.void_memory", + "title": "Epiphany void-memory", + "path": "epiphany.surface.void-memory.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.repo-initialization.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_initialization_surface.v0", + "documentType": "epiphany.surface.repo_initialization", + "title": "Epiphany repo-initialization", + "path": "epiphany.surface.repo-initialization.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.repo-birth-runner.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_birth_runner_surface.v0", + "documentType": "epiphany.surface.repo_birth_runner", + "title": "Epiphany repo-birth-runner", + "path": "epiphany.surface.repo-birth-runner.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.rider-bridge.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.rider_bridge_surface.v0", + "documentType": "epiphany.surface.rider_bridge", + "title": "Epiphany rider-bridge", + "path": "epiphany.surface.rider-bridge.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.surface.unity-bridge.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.unity_bridge_surface.v0", + "documentType": "epiphany.surface.unity_bridge", + "title": "Epiphany unity-bridge", + "path": "epiphany.surface.unity-bridge.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.runtime.session_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.runtime.session_intent.v0", + "documentType": "epiphany.runtime.session_intent.v0", + "title": "epiphany runtime session_intent v0", + "path": "epiphany.runtime.session_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.heartbeat_pump_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.heartbeat_pump_intent.v0", + "documentType": "epiphany.heartbeat_pump_intent.v0", + "title": "epiphany heartbeat_pump_intent v0", + "path": "epiphany.heartbeat_pump_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.circadian_rhythm_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.circadian_rhythm_intent.v0", + "documentType": "epiphany.circadian_rhythm_intent.v0", + "title": "epiphany circadian_rhythm_intent v0", + "path": "epiphany.circadian_rhythm_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.agent_memory_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.agent_memory_intent.v0", + "documentType": "epiphany.agent_memory_intent.v0", + "title": "epiphany agent_memory_intent v0", + "path": "epiphany.agent_memory_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.job_launch_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.job_launch_intent.v0", + "documentType": "epiphany.job_launch_intent.v0", + "title": "epiphany job_launch_intent v0", + "path": "epiphany.job_launch_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.job_interrupt_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.job_interrupt_intent.v0", + "documentType": "epiphany.job_interrupt_intent.v0", + "title": "epiphany job_interrupt_intent v0", + "path": "epiphany.job_interrupt_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.role_launch_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.role_launch_intent.v0", + "documentType": "epiphany.role_launch_intent.v0", + "title": "epiphany role_launch_intent v0", + "path": "epiphany.role_launch_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.role_accept_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.role_accept_intent.v0", + "documentType": "epiphany.role_accept_intent.v0", + "title": "epiphany role_accept_intent v0", + "path": "epiphany.role_accept_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.reorient_launch_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.reorient_launch_intent.v0", + "documentType": "epiphany.reorient_launch_intent.v0", + "title": "epiphany reorient_launch_intent v0", + "path": "epiphany.reorient_launch_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.reorient_accept_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.reorient_accept_intent.v0", + "documentType": "epiphany.reorient_accept_intent.v0", + "title": "epiphany reorient_accept_intent v0", + "path": "epiphany.reorient_accept_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.planning_update_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.planning_update_intent.v0", + "documentType": "epiphany.planning_update_intent.v0", + "title": "epiphany planning_update_intent v0", + "path": "epiphany.planning_update_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.objective_adoption_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.objective_adoption_intent.v0", + "documentType": "epiphany.objective_adoption_intent.v0", + "title": "epiphany objective_adoption_intent v0", + "path": "epiphany.objective_adoption_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.face_bubble_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.face_bubble_intent.v0", + "documentType": "epiphany.face_bubble_intent.v0", + "title": "epiphany face_bubble_intent v0", + "path": "epiphany.face_bubble_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.character_turn_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.character_turn_intent.v0", + "documentType": "epiphany.character_turn_intent.v0", + "title": "epiphany character_turn_intent v0", + "path": "epiphany.character_turn_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.discord_persona_post_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.discord_persona_post_intent.v0", + "documentType": "epiphany.discord_persona_post_intent.v0", + "title": "epiphany discord_persona_post_intent v0", + "path": "epiphany.discord_persona_post_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.repo_startup_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_startup_intent.v0", + "documentType": "epiphany.repo_startup_intent.v0", + "title": "epiphany repo_startup_intent v0", + "path": "epiphany.repo_startup_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.repo_initialization_accept_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_initialization_accept_intent.v0", + "documentType": "epiphany.repo_initialization_accept_intent.v0", + "title": "epiphany repo_initialization_accept_intent v0", + "path": "epiphany.repo_initialization_accept_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.repo_birth_run_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_birth_run_intent.v0", + "documentType": "epiphany.repo_birth_run_intent.v0", + "title": "epiphany repo_birth_run_intent v0", + "path": "epiphany.repo_birth_run_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.rider_status_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.rider_status_intent.v0", + "documentType": "epiphany.rider_status_intent.v0", + "title": "epiphany rider_status_intent v0", + "path": "epiphany.rider_status_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.rider_context_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.rider_context_intent.v0", + "documentType": "epiphany.rider_context_intent.v0", + "title": "epiphany rider_context_intent v0", + "path": "epiphany.rider_context_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.rider_open_ref_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.rider_open_ref_intent.v0", + "documentType": "epiphany.rider_open_ref_intent.v0", + "title": "epiphany rider_open_ref_intent v0", + "path": "epiphany.rider_open_ref_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_inspect_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.unity_inspect_intent.v0", + "documentType": "epiphany.unity_inspect_intent.v0", + "title": "epiphany unity_inspect_intent v0", + "path": "epiphany.unity_inspect_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_probe_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.unity_probe_intent.v0", + "documentType": "epiphany.unity_probe_intent.v0", + "title": "epiphany unity_probe_intent v0", + "path": "epiphany.unity_probe_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_check_compilation_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.unity_check_compilation_intent.v0", + "documentType": "epiphany.unity_check_compilation_intent.v0", + "title": "epiphany unity_check_compilation_intent v0", + "path": "epiphany.unity_check_compilation_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.unity_run_tests_intent.v0.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.unity_run_tests_intent.v0", + "documentType": "epiphany.unity_run_tests_intent.v0", + "title": "epiphany unity_run_tests_intent v0", + "path": "epiphany.unity_run_tests_intent.v0.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.swarm-control-receipt.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.swarm_control_receipt.v0", + "documentType": "epiphany.swarm_control_receipt.v0", + "title": "Epiphany Swarm Control Receipt", + "path": "epiphany.swarm-control-receipt.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.face-bubble.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.face_bubble.v0", + "documentType": "epiphany.face_bubble.v0", + "title": "Epiphany Face Bubble", + "path": "epiphany.face-bubble.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.face-chat.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.face_chat.v0", + "documentType": "epiphany.face_chat.v0", + "title": "Epiphany Face Chat Draft", + "path": "epiphany.face-chat.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.character-turn-packet.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.character_turn_packet.v0", + "documentType": "epiphany.character_turn_packet.v0", + "title": "Epiphany Character Turn Packet", + "path": "epiphany.character-turn-packet.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.repo-personality-artifacts.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_personality_artifacts.v0", + "documentType": "epiphany.repo_personality_artifacts.v0", + "title": "Epiphany Repo Personality Artifacts", + "path": "epiphany.repo-personality-artifacts.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.repo-initialization-record.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_initialization_record.v0", + "documentType": "epiphany.repo_initialization_record", + "title": "Epiphany Repo Initialization Record", + "path": "epiphany.repo-initialization-record.schema.json" + }, + { + "schemaId": "https://gamecult.dev/epiphany/cultnet/epiphany.repo-birth-runner.schema.json", + "kind": "document_payload", + "wireContracts": [ + "cultnet.schema.v0" + ], + "schemaVersion": "epiphany.repo_birth_runner.v0", + "documentType": "epiphany.repo_birth_runner.v0", + "title": "Epiphany Repo Birth Runner Summary", + "path": "epiphany.repo-birth-runner.schema.json" + } + ] +} diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index 1442353aa07bbdd7477c2990fa6aff497cebf703..76338071022b0623abf99350cf4f9cdbfd6b8743 100644 GIT binary patch delta 333 zcmZXQu}T9$5QaJP5JIYvv{{o2YLQM-i69DAcH{1Nx3D*R?#?Dy#li;=1hMu7M6}U2 z5d?e1+SXOh%69nw@B5kem)_lL?{aPB^Xq*tUE IpEEi724rD*vj6}9 delta 31 pcmV+)0O0?x+ym;_1CSvC?6R>VmH`2mv$_Eq>jHqZlacEa0b1#O4bK1o diff --git a/state/map.yaml b/state/map.yaml index 4e5ffd03..4b7252aa 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -118,6 +118,7 @@ accepted_design: - Native `epiphany-runtime-spine` is the first Codex-independent runtime vertebra: it initializes and inspects typed CultCache `epiphany.runtime.identity`, `epiphany.runtime.session`, `epiphany.runtime.job`, `epiphany.runtime.job_result`, and `epiphany.runtime.event` documents, opens/completes native jobs with result records, snapshots jobs by id, and can emit a framed CultNet hello message advertising the native document and mutation contract surface. App-server launch now opens typed runtime jobs; `roleResult` / `reorientResult` read heartbeat-backed typed job results only; and `roleAccept` / `reorientAccept` accept completed heartbeat findings from the typed runtime-spine path without opening the Codex SQLite state runtime. - CultNet public API shape is schema-first and mutation-contract-first: hello frames advertise readable document types, allowed operations, mutation authority, typed intent document types, and typed receipt document types. Aquarium and swarm clients should submit intents and watch receipts instead of inventing JSON-RPC verbs or blindly replacing authoritative state. - Runtime-spine hello now advertises the interactive surface catalog as CultNet contracts, not just the deep runtime documents. Scene, pressure, reorient, CRRC, jobs, roles, role-result, reorient-result, planning, coordinator, Face, Void memory, repo initialization/birth runner, Rider bridge, and Unity bridge all publish explicit read/write posture so Aquarium can discover affordances from the wire contract instead of carrying a private button-to-command gospel. + - Epiphany publishes its Aquarium-facing CultNet receipts locally under `schemas/cultnet/`, and `epiphany-runtime-spine schema-catalog --include-schema-json true` emits a merged builtin-plus-local schema catalog for consumers. The local receipts cover runtime-spine documents, durable agent/heartbeat/ledger state, `epiphany.surface.*` operator projections, control intents, and receipt/artifact payloads. Vendored `cultnet-rs` is aligned to the canonical C# CultNet raw record shapes: replication uses `schemaId` plus `recordKey`, snapshot filters use `schemaIds` / `recordKeys`, and hello advertises typed mutation contracts. - Epiphany now owns the canonical schema paperwork in `schemas/`: a local mirror of `ghostlight.agent-state.schema.json`, plus human-facing receipts for canonical agent-state shape, standing role-trait glossary, heartbeat store shape, and repo-personality birth projection. Trait names like `routing_discipline` are now documented at the source instead of existing only in live dossiers, startup templates, or stale Ghostlight notes. - The dossier doctrine now distinguishes `lane_core` from `embodied_actor`. Most Epiphany sub-agents want a lean role lattice plus memory/goals/values/private-note growth, because effectiveness matters more than theatrical density. Face and Ghostlight-style characters want dense Ghostlight-family personality, relationship pressure, perceived overlays, and appraisal-shaped fallibility. The classification is now queryable through native agent-memory status and character-loop packets instead of hiding only in docs. - Face packets now expose deterministic Ghostlight-style projection, appraisal, and reaction seeds built from local canonical traits, relationship memories, perceived overlays, and visible stimulus. This makes embodied response machinery available to the public mouth without granting omniscience or silent state mutation. Multiple Face actors remain part of the long-plan; the current singular `face` role is an MVP simplification, not the intended endpoint. diff --git a/vendor/cultnet-rs b/vendor/cultnet-rs index 42c7f9a7..e64572df 160000 --- a/vendor/cultnet-rs +++ b/vendor/cultnet-rs @@ -1 +1 @@ -Subproject commit 42c7f9a736291db0571e2b1f4c47cdb4fb7b22b3 +Subproject commit e64572dfb14bf9ff579df29d77d45182f51d7573