feat: add durable Event Await suspension protocol - #441
miyaontherelay wants to merge 42 commits into
Conversation
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9 Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9 Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Review swarm: maintainabilityNo fresh transcript was produced for run |
Review swarm: historyNo fresh transcript was produced for run |
Review swarm: structureNo fresh transcript was produced for run |
Review swarm: FAILED
Cloud run: |
Session-Id: 01a09c40-ce3b-7f11-a7df-b6b7ccab6fd9
Reject malformed pending ranges, malformed stream entries, and missing frames. Remove the unused one-off implementation driver; the current runtime probe remains the acceptance fixture.
# Conflicts: # packages/sdk/src/authored-flow-error.ts # packages/sdk/src/authored-node-entry.ts # packages/sdk/src/authored-node-runner.ts # packages/sdk/src/cli/run.ts # packages/sdk/src/journal-client.ts # packages/sdk/src/protocol.ts # packages/sdk/tests/authored-node-runtime.test.ts
attachLocalAgent's fifth parameter diverged: HEAD pins declared named streams, main takes worker capacity. Kept main's position-5 capacity contract (published callers unchanged) and added declaredStreams as a sixth parameter; run.ts passes both. Executor unions AuthoredActivities with main's stepEdges wiring.
Union resolutions: authored-root imports (suspended result + durable verdict kinds), tsconfig test lists, surface index exports. Main's executor reads journal streams for the authored step index/verdicts — the activity loopback test now answers stream.read with an empty page. Verified: kernel workspace tests all green; sdk typecheck clean; authored-activity 15, authored completion/status/detail suites 87, authored-flow family 171, activity/cli/live event-await suites green at this tree.
The merged tree's run-report boundary appends a trailing protocol_error diagnostic when durable subscriptions cannot be inspected, so `at(-1)` no longer names the step failure the test means to pin. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Session-Id: 01a0d51d-44ff-76b3-924f-83afe48f4b4f
Session-Id: 01a0d51d-44ff-76b3-924f-83afe48f4b4f
Session-Id: 01a0d51d-44ff-76b3-924f-83afe48f4b4f
khaliqgant
left a comment
There was a problem hiding this comment.
Independent exact-head review of 8e170e4. Cargo relayflowd-core suite passes 76/76 in a detached exact-head worktree; worker reports Event Await CLI E2E 1/1, focused relevant group 36, full cargo workspace, Surface/SDK builds and source/test typechecks green. Required CI is terminal green: linux 36059287733, packed 36059287664, validate 36059287669, guard 36059284529. This approval covers the repository repair; hosted Cloud delivery remains explicitly unproven and blocked by external #3873 (open draft/DIRTY af496834) and #3878 (closed unmerged 6884d037), so PR stays draft and is not merge-ready.
Repair status — 2026-09-24
Head:
8e170e4bc493710b618e282a68a63338fb630f67(main merged ate04c5b9715d6bc2c3233b92610dd15133010c229).The required
linux-x64-artifactfailure was reproducible: the Event Await CLI fixture ranfalse, which durably exhausted eight semantic retries and their backoffs. Its 75-second child timeout expired first, returned empty stdout, and the test then obscured the timeout withJSON.parse: Unexpected end of JSON input.The regression now uses the supported fail-closed authored verdict
f.done('step_failed', { detail }). It asserts the report diagnostic, root completion output, closed subscription, zeroworker_errorretries, and the exact durablerelayflows.authored-verdict.v1stream record. The fixture also refuses empty stdout before parsing. Its local ingress path uses receipt-fencedsubscriptionDeliver, resumes the authored root, and reads the durable verdict from the journal.Local verification after the main merge:
cargo test --workspace: exit 0.Detailed evidence:
evidence/pr441-router-2026-09-20.md.Hosted proof boundary
This proves the local runtime/protocol and receipt-fenced ingress path. It does not prove deployed hosted Event Await or a real GitHub webhook delivery. Cloud PR #3873 remains an open, conflicting draft at
af49683468017885de9b95ee0e50314734721368; Cloud PR #3878 is closed without merge at6884d0373dda256f8b71d9ce4fa9898515dd329b. The available credential also lacksadmin:repo_hook, so the exact real-delivery dedup proof remains externally blocked.Do not merge or represent this PR as hosted-complete on the basis of local evidence.
Prior hosted-dev context — 2026-09-20
The pinned Linux artifact CI run
35525739964succeeded; downloaded artifact10610415637had inner tar SHA-256f740bbc3ff44843cde3021ad15c4a9a59f0b58b394bc15a11798d78b25bc3620and manifest source commita4f857589af930bd5d6ea365a0e0a4166417a125.Dev candidate
e882221f47a8ff894bdfcaa5ad61ca8a8239f28bdeployed successfully in Cloud run35526582211. A freshGET https://dev.agentrelay.com/cloud/api/healthreturnedbuildSha: e882…andbindingsOk: true. A real granted-repository PR reached a durableevent_waitbinding, but no matching frame was consumed; the next resume was the idle boundary.