From d039a5d62a9ac6ababae70d9d96422ca59f2b2d4 Mon Sep 17 00:00:00 2001 From: Brett Parson Date: Fri, 21 Aug 2026 13:55:37 -0500 Subject: Scaffold miniroute routing/middleware kernel --- docs/adr/0003-request-response-boundary.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docs/adr/0003-request-response-boundary.md (limited to 'docs/adr/0003-request-response-boundary.md') diff --git a/docs/adr/0003-request-response-boundary.md b/docs/adr/0003-request-response-boundary.md new file mode 100644 index 0000000..9129c0d --- /dev/null +++ b/docs/adr/0003-request-response-boundary.md @@ -0,0 +1,27 @@ +# ADR 0003: Thin HTTP Contracts + +- Status: Accepted +- Date: 2026-08-17 + +## Context + +The kernel needs request/response types, but applications already have their +own concrete HTTP objects (and their own security headers, session handling, +and parsing). + +## Decision + +The kernel defines `RequestInterface` and `ResponseInterface` with only the +surface routing needs (method, path, params) and middleware needs (headers). +Applications implement these interfaces on their own classes. + +Middleware and controllers operate on the interfaces, so application code that +needs app-specific features narrows to its concrete types. + +## Consequences + +- The kernel stays decoupled from any one app's HTTP layer. +- Applications must implement the two interfaces (usually a small change to + existing Request/Response classes). +- Middleware parameters use `RequestInterface`; concrete middleware may need + an `instanceof` narrowing to access app-specific request methods. -- cgit v1.2.3