CineSpine: from paperwork to agents

CineSpine: from paperwork to agents A data-flow diagram generated by Archify. 01 / Sources 02 / In-process bus 03 / Spine of record 04 / Agents 05 / Outcomes POST /api/upload · 5 departments · 01 / Sources · paperwork POST /api/upload 5 departments paperwork Classifier · Gemini Flash + rules · 02 / In-process bus · doc type, department Classifier Gemini Flash + rules doc type, department raw.<dept> topics · in-process EventBus · 02 / In-process bus · no broker raw.<dept> topics in-process EventBus no broker IngestionDispatcher · department parsers · 02 / In-process bus · raises on failure IngestionDispatcher department parsers raises on failure spine_events · SQLite, append-only · 03 / Spine of record · source of truth spine_events SQLite, append-only source of truth ClickHouse · mirror + projections · 03 / Spine of record · best effort · ClickHouse ClickHouse mirror + projections best effort cinespine-mcp · read-only SQL · 04 / Agents · Cloud Run cinespine-mcp read-only SQL Cloud Run Wrap Rescue Agent · ADK LlmAgent, Gemini · 04 / Agents · ranks blockers Wrap Rescue Agent ADK LlmAgent, Gemini ranks blockers AE Queue Agent · deterministic · 04 / Agents · clean scenes AE Queue Agent deterministic clean scenes Requirements · + notifications, audit trail · 05 / Outcomes · assigned_to Requirements + notifications, audit trail assigned_to LiveEventBroker · SSE /api/events/stream · 05 / Outcomes · per handle LiveEventBroker SSE /api/events/stream per handle document text, PDF, image publish EventEnvelope subscribed handler synchronous append takes, slates mirror insert async, + projections SELECT via MCP list_tables, run_query discrepancies JSON-RPC, unacked clean-scene evidence SQLite read create_requirement blocker → assignee scene cards one per assistant publish_sync SpineLiveEvent Legend primary data async batch data store data flow

The bus is in-process

  • • No broker: the spine is the append-only log; a handler that fails raises EventHandlerError, so no 200 INGESTED covers a lost write
  • • Rejected documents go to production.events.dlq, which only feeds telemetry

Two agents, two shapes

  • • Wrap Rescue is an ADK LlmAgent run by a crew member for a shoot day; it reads ClickHouse only through cinespine-mcp and drafts with Gemini
  • • The Assistant Editor Queue is deterministic: paperwork present, offload evidence, no open blockers; both write requirements into SQLite

What people see

  • • Every requirement, tag and resolution publishes a SpineLiveEvent over SSE, addressed by @handle
  • • The activity ledger records every mutation, agent runs included