[prime-time] Durable saga store (KvSagaStore + createDurableSagaRuntime)#74
Conversation
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 1 landed: durable Deno KV Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 2 landed: plugin-layer durable native runtime factory and runtime exports. Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 3 landed: core store-less native runtime warning seam. Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 4 landed: sagas service now uses the durable runtime composition root. Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 5 landed: standalone supervisor/runner native path is durable by default. Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 6 landed: cross-restart durable runtime integration coverage. Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Slice 7 landed: corrected stale Prisma-store/read-model promises. Commit
Scope
Gate Evidence
Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Final validation sweep landed for the durable saga store slice. Commit
What changed in this final slice
Green Slice-Owned Gates
Red Gate / Drift
This is recorded in Pushed with explicit refspec: |
|
[PHASE: IMPL] [SLICE: sagas-durable-store] Artifact-only follow-up pushed. Commit
Scope
No product code changed. Pushed with explicit refspec: |
|
@openhands-agent model=openrouter/qwen/qwen3.7-max output=pr-comment Run IMPL-EVAL for the framework-prime-time blocker slice Read, in order:
Slice-specific note: FOUNDATION of the saga cluster (KvSagaStore + createDurableSagaRuntime over the existing SagaStorePort). Verify the durable store is real (over Deno.Kv), not in-memory-only, and that the locked contract in plan-meta.json is honored so the dependent slices can build on it. Production/enterprise bar (hard): real persistence, real error handling, idempotency, observability, and graceful shutdown wherever the archetype demands; NO stubs/no-ops/TODOs/silent fallbacks; every locked contract + test in Run exactly the gate set named in the plan's Lock hygiene: do NOT commit Emit a verdict — |
OpenHands Agent — CompletedModel: openrouter/qwen/qwen3.7-max IMPL-EVAL Summary: sagas-durable-storeVerdict: PASSEvaluation SummaryThe Key deliverables:
Gate ResultsStatic Gates (all PASS)
Test Gates (all PASS)
Total: 42 tests passed, 0 failed Architecture Check
Contract VerificationAll 5 contracts from plan-meta.json §contracts verified:
Test Plan DeliveryAll 6 test categories from plan-meta.json §testPlan delivered:
Scope & Archetype Alignment✅ SCOPE-service — Drift Analysis✅ No drift detected — implementation matches approved plan exactly. All locked decisions honored, all deferred scope properly deferred (idempotency dedup, telemetry spans, graceful drain, read-path reconciliation). Production/Enterprise Bar Assessment✅ Real persistence — Locked Contract HonoredDependent slices can build on the Remaining RisksR1: Read-Path Divergence (DECLARED OUT-OF-SCOPE)The HTTP API read path ( Mitigation: Documented in umbrella PR description; supervisor reconciliation will track this as a separate blocker slice. R2: Pre-Existing Arch Check NoiseThe repo-wide Mitigation: Supervisor should baseline arch-check failures per-slice or require slice-scoped arch-check runs (e.g., R3: KV Permission RequirementsStandalone runner/supervisor now opens Mitigation: Env-driven path with injection seam preserved; tests use RecommendationMerge the PR. The slice delivers a production-grade durable saga store foundation that honors all locked contracts, passes all required gates, and provides a solid base for dependent slices (idempotency-e2e, telemetry-spans, graceful-shutdown). The read-path divergence is a known, deferred-safe tradeoff that does not block merge. Evaluator Metadata
Run: https://github.com/rickylabs/netscript/actions/runs/27857743138 |
…s; hold #75/#76 for post-#74 rebase Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
Author the Prisma durable SagaStorePort backend-parity slice plan grounded on the merged #74 seam: formal research (post-#74 contract/seam/schema/db-client reads), plan.md (ARCHETYPE-2+5, dedicated durable tables, backward-compatible backend-select + dispose() seam refactor, env/appsettings/CLI selection, e2e-cli-gate), and plan-meta.json. Also record main-red root cause (stale nativeRetrial assertion), #75/#76 rebase+IMPL-EVAL dispatch, and e2e gate green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
IMPL-EVAL verdict PASS (OpenHands qwen3.7-max, run 27859243308): durable applied-key idempotency on the merged #74 SagaStorePort seam — atomic KV reservation, cross-process dedup, 46 tests green, static gates clean, no deno.lock churn. Rebased on 5c4a458 (#74/#78/#79/#80 landed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
Blocker slice
sagas-durable-storeFramework prime-time blocker batch — sub-PR into the umbrella
feat/framework-prime-time(#73)..llm/tmp/run/feat-framework-prime-time--supervisor/slices/sagas-durable-store/(research.md,plan.md,plan-meta.json)..llm/tmp/run/feat-framework-prime-time--supervisor/slices/sagas-durable-store/implement-brief.md.Draft until the implementation agent reports complete and gates are green.