Architecture decision records
ADRs retain the context, alternatives and consequences of architectural choices. This is HTTP Guard's own numbering, independent of nr-vault's ADRs.
ADR-0001 through ADR-0014 preserve the complete proposals dated 8 October 2026. Their historical status does not impose a new approval gate on the current alpha project. Current behavior and qualification are documented in Security model and limits, Requirements and security invariants and Verification report.
ADR-0015 records the accepted single-extension decision dated 9 October 2026. It supersedes ADR-0002's package and publication proposal. ADR-0016 through ADR-0018 record the implemented public RequestFactory boundary, controlled DNS wire resolution and single-use cURL factory on 10 October 2026. ADR-0017 supersedes ADR-0005's default-resolution proposal; its checked address-set and connection-pinning principles remain applicable. The other proposals are not superseded merely by the packaging change. Historical alternatives remain part of the record and are not current API guidance.
Record status
- ADR-0001: Protect the outbound HTTP path, not a PHP firewall: historical proposal.
- ADR-0002: A shared library instead of a Vault dependency for every extension: package proposal superseded by ADR-0015.
- ADR-0003: Two middleware boundaries and a controlled terminal transport: historical proposal.
- ADR-0004: Enforce by default, Observe only as a visible migration mode: historical proposal.
- ADR-0005: Bind the checked address set directly to the connection: default-resolution proposal superseded by ADR-0017; connection-pinning principles retained.
- ADR-0006: Authorize internal access through client-bound endpoint grants: historical proposal.
- ADR-0007: Controlled cURL only; no proxies or PHP streams in v1: historical proposal.
- ADR-0008: Check every redirect hop and bind credentials to their origin: historical proposal.
- ADR-0009: One canonical target parser and a versioned address corpus: historical proposal.
- ADR-0010: Allow address memoization; isolate authorization and connection pooling: historical proposal.
- ADR-0011: Retain Vault streaming without falling back to the PHP stream handler: historical proposal.
- ADR-0012: Stable denial reasons without new secret leaks: historical proposal.
- ADR-0013: Explicit migration instead of silently reinterpreting existing allowlists: historical proposal.
- ADR-0014: Qualify security through target-contact and regression evidence: historical proposal.
- ADR-0015: One installable extension: accepted.
- ADR-0016: Public RequestFactory as the URI boundary: accepted.
- ADR-0017: Controlled DNS queries for the default resolver: accepted.
- ADR-0018: One cURL factory creation per transfer lease: accepted.
Original sources
Each historical ADR links to its immutable original record and specification documents. The original ADR index and source catalogue S01-S23 retain the proposal's provenance. Restoration does not turn specified tests into executed tests or historical proposals into accepted decisions.