Webhook poll delivery (4/4): enable the mode and prove it end to end - #690
Shearerbeard wants to merge 1 commit into
Conversation
|
| //! `make test-integration-hitl-local` starts the shared `mock-mcp` fixture | ||
| //! for the sibling suite; this suite runs directly with the same feature | ||
| //! flag (equivalent wiring, needs no env beyond `OPENAI_API_KEY`): | ||
| //! | ||
| //! ```sh | ||
| //! cargo test -p aura-web-server --features integration-hitl-header-forwarding \ | ||
| //! --test poll_delivery_e2e_test | ||
| //! ``` |
There was a problem hiding this comment.
The new poll-delivery suite is not executed by make test-integration-hitl-local: that target selects only hitl_header_forwarding_tests, and the aggregate integration feature does not include this test's feature. As a result, routine integration runs will not catch regressions in the newly enabled poll and restart flows. This is non-blocking, but the suite should be added to the established integration command.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
4fd7f43 to
11d0f51
Compare
f965a05 to
18ab1ba
Compare
11d0f51 to
c91f447
Compare
18ab1ba to
5fbd5d1
Compare
Drop the load-time refusal: a webhook route configured for poll delivery now runs - the gate parks the call, the reconciler notifies the receiver and polls its status, and a decided row resolves durable through the ingress path. No re-execution here: the flow ends at durable resolve; the resume endpoint is separate work. The e2e rig proves the flow against an in-process mock receiver over the real chat endpoint, including a restart between the park and the decision landing, and runs from make test-integration-hitl-local alongside the header-forwarding suite. Ref: #271
c91f447 to
c1a97c2
Compare
5fbd5d1 to
b155f00
Compare
Last of four. Removes the config-validation refusal so
delivery = "poll"becomes usable, and adds the end-to-end rig.What changes:
delivery = "poll"passes validation, andheaders_from_requestis accepted on poll routes now that the resolved values persist on the parked approval record. The other refusals stand: poll without[hitl.park].enabled, and a plaintext URL with an HMAC secret./v1/chat/completionswith a request-scoped header while the mock holds every notify POST open past the request timeout. It proves that the notify carries that header, that polling and resolution proceed even though no notify is ever acknowledged, and that a decided status lands approver identity in the durable decision record with the run still parked. The restart test kills the server between notify and decision. With nothing running, the receiver records the decision; the server then reboots onto the same store and the first tick resolves it, with at most one duplicate notify.docs/adr/2026-08-13-approver-identity-forwarding.mdgains the config consequence: poll accepts request-derived headers while the two remaining refusals stay. It also records that onlydeliveryenters the config fingerprint; the three poll tuning keys do not.Not in this PR: re-execution after a decision. The rig proves the flow through durable resolve; the resume endpoint is separate work.
Tested with
cargo test -p aura-web-server --features integration-hitl-header-forwarding --test poll_delivery_e2e_testwith mock-mcp up, plus the header-forwarding suite.The hosted configuration page for the new
[hitl.route]keys follows as a separate PR inmezmo/documentation.Stack: based on
mshearer/271-poll-at-rest.