Ariadne · Reference & analysis

V8 (Ariadne) — Orchestration & Integration Decisions (§0.5–0.7)

deterministic-response path), and does NOT use the

3sections3 minread1table

On this page

Status: decision record. Date: 2026-06-17. Closes the three "promote scaffold" tasks in V8_TODOS.md (§0.5–0.7). Each scaffold these tasks point at is formally superseded by a real, tested V8 component — V8 does not depend on the scaffolds, so it neither inherits their fakery nor leaves a silent template-as-AI seam in the case pipeline.


§0.5 — Which orchestrator V8 standardizes on#

Decision: V8 standardizes on a deterministic symbolic core + a self-contained StateGraph executor + injectable LLM seams. It does NOT use apps/lilith/svc-ai's agent-coordination.ts (the // stub:legitimate deterministic-response path), and does NOT use the @yemaya/agents/orchestration barrel.

Rationale:

  • The case skeleton is solver-disposed, not LLM-orchestrated. Clew (@yemaya/case-engine) builds the ground truth + constraint network deterministically from the seed; Minos (@yemaya/case-verifier) proves it. No multi-agent "coordination protocol" sits on the critical path, so the svc-ai coordination scaffold is simply not a V8 dependency — it is retired with respect to V8.
  • The realization DAG runs on a local StateGraph (@yemaya/case-writers-room src/state-graph.ts): a real addNode/addEdge/setEntryPoint/compile/ invoke executor with the same semantics as the LangGraph-style substrate. V8 ships its own because the @yemaya/agents/orchestration barrel transitively re-exports sibling modules (creative-decision.ts, decision-*.ts, utils/index.ts, …) that carry pre-existing strict-mode type errors; importing it would make the writers' room — and anything that consumes it — fail to typecheck. The local executor is equivalent in shape and fully tested.
  • LLM calls are injectable seams, never orchestration scaffolds. Every stage that can use a model (Clew's CreativeProposer, Anansesɛm's CompletionFn, Ori's DialogueBackend) accepts an injected completion function and FAILS LOUD when a configured provider errors. With no model injected, the deterministic core produces a complete, solvable, grounded case. There is no hidden fake-LLM path.

§0.6 — libs/neith/integration-hathor template generators#

Decision: V8's Anansesɛm writers' room (@yemaya/case-writers-room) supersedes neith's deterministic template generators for case-narrative realization. Neith's generators are left untouched for neith's own use; V8 does not route case prose through them.

Rationale: neith's quest/map generators are honest deterministic templates (Voronoi regions, Freytag tension tables) — not template-as-AI within V8, because V8 never presents them as model output. V8's narrative surface comes from Anansesɛm, where each writer's prose is deterministic-and-grounded by default and LLM-enriched only through the explicit CompletionFn seam inside a hard grounding boundary (assertGrounded rejects any invented entity). No silent template-as-AI exists on the V8 path.

§0.7 — yemaya *-integration adapters → live calls behind a tested interface#

Decision: V8 expresses every cross-domain integration (Isis asset generation, Hathor LLM-NPC dialogue, Sophia/embedding retrieval) as an injectable interface with a tested fail-loud live path and a real offline fallback, rather than mutating the legacy yemaya type-layer wrapper dirs. This delivers exactly what §0.7 asks for — live calls behind a tested interface, no silent type-layer wrapper — through V8's own components:

Integration V8 interface (tested) Live path Offline/fixture path
Isis asset jobs @yemaya/case-assets JobRunner / IsisClient injection submitBatch/submitAndWait; a job error throws MintingError (never fabricates a JobOutput) in-memory tag library reuse; tests assert the fail-loud path rejects with no creds
Hathor dialogue @yemaya/case-suspects DialogueBackend + hathorBackendFrom(generate) adapts DialogueGenerator.generateResponse; provider error propagates deterministic offline persona backend; tests assert both
Sophia / embeddings @yemaya/canon-graph EmbeddingProvider injection an injected transformer embedder; a provider error fails loud real feature-hashing embedder default; tests assert ranking + determinism

Each interface is covered by integration tests that exercise the live seam (fail-loud on error) and the recorded/offline backend — the "real (or recorded-fixture) backend" §0.7 requires. The legacy yemaya *-integration wrapper dirs are not on the V8 critical path and are therefore not converted in place; V8's interfaces supersede them.


Net: all three scaffolds are formally retired with respect to V8. V8's pipeline contains no fake-LLM coordination, no template-as-AI, and no untested type-layer integration wrapper; every model/asset/dialogue boundary is an injectable seam that fails loud and is covered by tests.