Normalize /execute request bodies before verb dispatch#50
Merged
Conversation
Why: /execute was forwarding nested execution envelopes to handlers that expect the legacy flat request shape. Contract impact: none
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.
Motivation
/executewas forwarding a nestedexecutionenvelope which caused validation and handler mismatches./executeto behave identically to legacy per-verb routes so receipts validate and are signed correctly.Description
/executerequest bodies by flattening nestedexecutionintoreq.bodyand always settingverbbefore dispatching tohandleVerbby updating the/executeroute to mergebodyandexecutionintoreq.bodyand setverb.handleVerbderive the execution envelope from eitherreq.body.executionor the top-levelreq.bodyby callingnormalizeExecutionEnvelope(req.body?.execution ?? req.body, verb)in both success and error paths.POST /execute normalizes nested execution into the handler body and preserves execution metadatatoruntime/tests/runtime-signing.test.mjsthat verifies nestedexecutionpayloads are flattened and thatversion/classmetadata is preserved in receipts.Testing
node --test runtime/tests/runtime-signing.test.mjswhich passed all tests in that suite (including the new regression test).npm run check(node --check server.mjs) which completed without errors.Codex Task