feat(journal): v0.6.25 — durable workflow_journal backend (JournalClient + event-sink)#292
Merged
Conversation
…ASK-125b BU-1/BU-3) BU-1: resolve a workflow_journal backend ONCE at WorkflowStateManager::new — SQLite by default (byte-identical to today), or an installed workflow_journal plugin (Postgres, ...) when present. Route every WorkflowStateManager public method (save/load/list/list_active/list_all/query_ids/delete, save_checkpoint/ load_checkpoint/list_checkpoints/prune_checkpoints, set/load_workflow_actor, prune_runs/delete_run, cleanup_terminal_workflows) plus the free-function summary/index readers (active/failed/history/ref-index) through the resolved backend. New journal_client.rs mirrors config_source_client (resident host per root, death-aware respawn, sync<->async run_blocking bridge). Pin animus-journal-protocol v0.1.26. Register workflow_journal as an OPTIONAL RequiredRole (never in daemon_default; absence never blocks boot). BU-3: tee phase/run lifecycle events from WorkflowEventBroadcaster::emit into journal/record (fire-and-forget, no-op when no plugin installed). Daemon enables the sink at startup and reaps the resident journal host on shutdown. No-plugin path is byte-identical: every existing workflow test passes unchanged.
…ree|Plugin + event-sink)
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a
JournalClient(InTree | Plugin) behindWorkflowStateManagerso run-state + checkpoints can persist to an optionalworkflow_journalplugin (e.g. animus-journal-postgres) instead of only local SQLite — durable across restarts/redeploys.discover_by_kind("workflow_journal"); kill-switchANIMUS_DISABLE_WORKFLOW_JOURNAL_PLUGIN=1.config_source_client(resident host, death-aware respawn,run_blockingsync↔async bridge). AllWorkflowStateManagermethods routed via guard-at-top; readers (history/cost/status) too, so plugin mode doesn't read a stale local table.RequiredRole::WorkflowJournalis optional — presence reported, never blocks boot.journal/record(fire-and-forget, no-op on SQLite).Merges current main (v0.6.24: subject
--query, chat-search perf) — no journal-file conflicts.Verification
346 orchestrator-core tests pass (existing unchanged + 4 new journal_client); workspace only the 2 pre-existing
decision_gate::workflow_*fail. clippy/fmt clean. codex P1-clear (one P2 deferred: approximate plugin checkpoint-prune needs acheckpoint_deletewire method; SQLite path exact).🤖 Generated with Claude Code