feat(composition): map route failures to HTTP problem responses - #440
Draft
seonghobae wants to merge 37 commits into
Draft
seonghobae wants to merge 37 commits into
seonghobae wants to merge 37 commits into
Conversation
|
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 |
This was referenced Sep 23, 2026
This was referenced Sep 23, 2026
This was referenced Sep 23, 2026
This was referenced Sep 24, 2026
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.
Scope
HTTP method/error-semantics owner stacked on #439 exact
dbee7dcd6ce641e23fe93dcc59b643c066eed526. Current source head is0050f14701ea92fd85a2691a280d29c46a97b63b, open · Draft · mergeable. This PR changes no SQL/migration bytes and does not claim authentication, owner HTTP dispatch, a complete ASGI application, deployment packaging or buyer-path performance.Current contract
This owner keeps distinct HTTP authorities:
tokenoutside the fixed Orgmetra composition method profile → 501 before Path Item/PostgreSQL authority;Allowderived from currently serviceable selected-Path-Item route authority;about:blankstatus-phrase titles without internal exception detail;Allowis bound to the exact authority issued atCompositionMethodNotAllowedErrorconstruction rather than later mutable public state.Earlier RED→repair history establishes deterministic RFC 9457 mapping, 405/501 separation, RFC
tokengrammar, removal of an artificial method-length cap, HEAD no-content emission, inherited ASGI token preservation, request-time 405 serviceability, GET/HEAD parity, wire-timeAllowvalidation and lifetime-bound issued authority. Current exact0050f147...ordinary-forward preserves those deltas and #437's typed serving-expiry repair. No force-push or destructive rebase was used.PostgreSQL lineage remains 0018→0025.
Descendant lifecycle authority — current
9bbb792ef43fca8b08684f4f55a8bfe65e1120damaps only typedActivationConflictErrorcurrentness outcomes toCompositionRouteUnavailableError;ActivationAuthorizationErrorremains unwrapped.728f07a8c86f92bbf33586f2a8007da9f31f5e06owns bounded inbound ASGI request-body/receive lifecycle.e1af671deeeec682dffdf809cb8579dcc4d439daowns core outbound ASGI response-event/send validation and preserves server/runtime invocation/await failures rather than laundering them into routing errors.7954f5bf606584ddb5bbcd29e1b64e49041b9409prevalidates complete non-streaming responses beforehttp.response.start, enforces no-content/Content-Length/Transfer-Encodingframing rules and detaches validated caller header pairs before the first await.#440 remains HTTP mapping/method semantics owner. Descendant receive/send/completion boundaries do not move problem-response policy out of this PR.
Standards / security boundary
Primary HTTP authority remains RFC 9110 for method
token, 501/405,Allowand HEAD semantics; RFC 9112 constrains HTTP/1.1 framing; RFC 9457 constrains problem details. ASGI definesreceive/sendas awaitable callables and assigns closed-connection send failure to server/runtime lifecycle. Request syntax, selected Path Item declaration, serviceability, construction-time 405 authority, typed currentness classification, send lifecycle and final complete-response framing remain separate authorities.Verification boundary
Canonical package/install/PostgreSQL acceptance must use one unchanged exact #446
7954f5bf606584ddb5bbcd29e1b64e49041b9409candidate. #447 exact47ac3556dfef7d5d27af2af8ae2ba5038b837e7cis the current Draft implementation of #260 owner-neutral service discovery/runtime execution; it remains non-GREEN pending normal #64/#305 metadata integration plus protected-base checks/review. #261 owns installed wheel/sdist acceptance. #311 exactdbc2fcf70ba6a6883381e8526cd62c6e19ce159cmust execute the complete inherited 0018→0025 PostgreSQL inventory on the same exact composition tree. Unchanged SQL is not database GREEN; predecessor/bot evidence does not transfer.Proposed architecture #433 is source-current at
ff50182c25ccf45928b1413f947c992f62be2ded, but ADR 0432 remains Proposed and requires independent admission after canonical execution.Keep Draft until same-tree package/install/PostgreSQL execution, prerequisite checks and qualifying independent review exist. No self-approval, routine administrator bypass, gate weakening, synthetic status, force-push/destructive rebase, mutable sibling source, migration-number reuse, predecessor-GREEN transfer or premature Ready/merge/release is authorized.
Refs #432 #433 #434 #435 #436 #437 #438 #439 #442 #443 #444 #446 #447 #260 #261 #311 #100.