03b6a2a2f9
Records variant (b): the panel will check Origin / Sec-Fetch-Site in the same middleware as the security headers, and will not carry CSRF tokens. The coverage table above the decision already says what that buys; what the item was missing is what it does not buy, so both are now written down — the accepted risk (a client sending neither header still gets through, which is exactly the old-browser row) and the two escalation paths with their price, tightening the policy to reject those requests, or session-bound tokens. Phase 14.A grows the implementation rules: which requests are checked, the three-way decision, and the fact that only the host is compared because the panel sits behind a proxy and never sees its own external scheme. The rule depends on r.Host being the external name — all four shipped proxy fragments preserve it (checked), but a proxy that rewrites Host would turn every POST into a 403, so the rejection has to log both sides of the comparison and the container test has to run through a real proxy. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>