PRD 0053: Egress DLP addon #196

Merged
didericis merged 8 commits from prd-0053-egress-dlp-addon into main 2026-06-06 00:09:21 -04:00
Showing only changes of commit 035ed430ba - Show all commits
@@ -0,0 +1,486 @@
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
# YAML route matching formats: paths, headers, and methods
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Question
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Bot-bottle's egress manifest currently supports exact-host matching and
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
a flat list of path prefixes (`path_allowlist`). As the DLP work (PRD 0053)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
and future route hardening evolve, we may want more expressive matching:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
glob-style path patterns (`/api/*/data`), header predicates (Content-Type,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Accept), and per-method rules (GET allowed, POST blocked). What established
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
YAML-based formats exist for declaring this kind of route matching, and
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
which design choices should bot-bottle adopt?
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Summary
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Four formats stand out as well-designed, widely deployed references:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Kubernetes Gateway API `HTTPRoute`**, **Envoy `RouteConfiguration`**,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**AWS ALB listener rules**, and **Traefik dynamic routing**. A fifth,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Istio `VirtualService`, is worth noting but is largely superseded by
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Gateway API for new designs.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Recommendation for bot-bottle:** adopt the Gateway API `HTTPRoute`
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
match vocabulary as a direct model. It is the most carefully designed of
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
the four, has a published spec, handles all three requirements cleanly, and
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
its match object nests naturally into a YAML route block alongside
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
bot-bottle's existing `host`, `path_allowlist`, and `auth` fields.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Envoy's format is more powerful but far more verbose and harder to
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
validate by hand; ALB rules use a flat predicate list that does not
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
compose well; Traefik uses string expressions rather than structured YAML.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Current bot-bottle route schema
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
egress:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
routes:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- host: api.github.com
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
path_allowlist:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- /repos/myorg/
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
auth:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
scheme: Bearer
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
token_ref: EGRESS_TOKEN_0
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Matching today: exact host + path-prefix list. No method or header
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
awareness.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Format 1: Kubernetes Gateway API `HTTPRoute`
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Spec:** [gateway.networking.k8s.io/v1](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteMatch)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Maturity:** GA (v1.0+, 2023). Backed by SIG Network; shipping in GKE,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
EKS, AKS, Istio, Envoy Gateway, Cilium, Traefik v3.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Match object
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
rules:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- matches:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- path:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: Exact # Exact | PathPrefix | RegularExpression
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: /api/v1/data
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: Content-Type
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: Exact # Exact | RegularExpression
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: application/json
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
queryParams:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: version
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: Exact
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: "2"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
method: GET # GET | POST | PUT | DELETE | PATCH | …
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
A `matches` entry is a logical AND across all predicates within it. Multiple
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
entries in the `matches` list are ORed: the rule fires if any entry matches.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Path matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `type` | Semantics |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
|--------|-----------|
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `Exact` | Full path must equal `value` (no trailing-slash equivalence) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `PathPrefix` | Path must start with `value`; `/api` matches `/api/v1` but not `/apiv1` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `RegularExpression` | RE2-syntax regex; implementations may differ on anchoring |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Glob-style paths (`/api/*/data`):** Gateway API does not define a glob
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type. The intent is to use `RegularExpression` for that case:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
`/api/[^/]+/data` replaces `/api/*/data`. This is unambiguous and widely
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
understood.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Header matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: Content-Type
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: Exact
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: application/json
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: X-Request-Id
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: RegularExpression
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: "[0-9a-f]{8}-.*"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
All `headers` entries must match (AND semantics). Missing a header is a
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
non-match (no "header absent" type in v1; implementations add it as an
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
extension).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Method matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
method: GET
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Single method per match entry. To allow GET and POST, use two match
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
entries (OR semantics at the matches level):
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
matches:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- path:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: PathPrefix
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: /api/v1
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
method: GET
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- path:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: PathPrefix
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: /api/v1
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
method: POST
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Strengths / weaknesses
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Strengths:** spec-backed, implementation-tested, composable AND/OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
semantics, explicit about what is not supported (no glob, no header-absent),
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
good field naming (`type` + `value` pattern is consistent throughout).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Weaknesses:** verbosity when expressing OR across methods; regex is
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
the only path wildcard mechanism; no body matching.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Format 2: Envoy `RouteConfiguration`
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Spec:** [envoy.config.route.v3.RouteMatch](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#config-route-v3-routematch)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Maturity:** Widely deployed (Istio data plane, AWS App Mesh, solo.io
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Gloo). Defined in protobuf; YAML is the human-readable rendering.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Match object
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
path: /exact/path # exact match
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
# OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
prefix: /api/ # prefix match
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
# OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
safe_regex:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
google_re2: {}
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
regex: "/api/v[0-9]+/.*"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
# OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
path_separated_prefix: /api/v1 # prefix with segment boundary enforcement
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: content-type
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
string_match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
exact: application/json
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
# OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
prefix: text/
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
# OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
safe_regex:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
google_re2: {}
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
regex: "application/(json|xml)"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
invert_match: false # negate the predicate
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: x-custom-header
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
present_match: true # just check presence
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
query_parameters:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: version
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
string_match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
exact: "2"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Method is matched via a pseudo-header:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: :method
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
string_match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
exact: GET
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Multiple methods require an OR combinator (`or_match`), available in
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Envoy v1.21+:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: :method
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
or_match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value_matchers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- string_match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
exact: GET
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- string_match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
exact: POST
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Path matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| Field | Semantics |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
|-------|-----------|
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `prefix` | Path starts with value (any suffix allowed) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `path` | Exact match |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `safe_regex` | RE2 regex (Google RE2 safety guarantees) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `path_separated_prefix` | Like `prefix` but only matches at segment boundaries (`/api/v1` won't match `/api/v10`) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `connect_matcher` | CONNECT method only |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Glob (`/api/*/data`): use `safe_regex`: `/api/[^/]+/data`.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Strengths / weaknesses
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Strengths:** most expressive format surveyed; `invert_match`, `present_match`,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
OR combinators, pseudo-header method matching; handles every edge case.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Weaknesses:** very verbose; protobuf-origin field names are not
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
self-evident; `or_match` nesting is awkward; hard to validate in a
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
lightweight schema check; not appropriate as a user-facing YAML format
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
without a wrapping DSL.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Format 3: AWS ALB Listener Rules
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Spec:** [AWS Elastic Load Balancing API — Conditions](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#rule-condition-types)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Maturity:** GA, widely used in AWS infrastructure-as-code (CloudFormation,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Terraform `aws_lb_listener_rule`).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Match object (Terraform / CloudFormation rendering)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
conditions:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- field: path-pattern
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
path_pattern_config:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- /api/*
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- /health
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- field: http-header
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
http_header_config:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
http_header_name: Content-Type
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- application/json
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- application/x-www-form-urlencoded
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- field: http-request-method
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
http_request_method_config:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- GET
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- POST
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- field: host-header
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
host_header_config:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- "*.example.com"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- api.example.com
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- field: query-string
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
query_string_config:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- key: version
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: "2"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
All conditions in a rule are ANDed. Multiple values within a single
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
condition are ORed. Up to 5 conditions per rule.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Path matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
ALB natively supports glob patterns in `path-pattern`:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- `*` matches any sequence of characters (including `/`).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- `?` matches any single character.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
This is the only surveyed format with first-class glob support. `/api/*/data`
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
is valid and unambiguous. No regex support.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Header matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Header conditions match against the header value. Multiple values are ORed.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
The header name is fixed per condition block; to AND two header predicates,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
add two separate `http-header` conditions. Case-insensitive matching on
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Method matching
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- field: http-request-method
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
http_request_method_config:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
values:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- GET
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- POST
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Multiple values are ORed (GET or POST). Up to 40 methods per rule.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Strengths / weaknesses
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Strengths:** first-class glob path matching (the only format surveyed
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
with `*` and `?`); multi-value OR within a condition block is concise for
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
the common case; method matching is a flat list, easy to write.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Weaknesses:** maximum 5 conditions per rule; no regex; no header-absent
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
predicate; no request-body matching; the `field` + `*_config` naming is
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
awkward (the field name is a string enum that determines which sibling key
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
is relevant — a schema-validation anti-pattern); tied to AWS semantics
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
(target groups, priority integers).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Format 4: Traefik Dynamic Routing
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Spec:** [Traefik Router Rule syntax](https://doc.traefik.io/traefik/routing/routers/#rule)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Maturity:** GA, widely deployed in Kubernetes (IngressRoute CRD) and
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Docker-Compose setups. Traefik v3 aligns with Gateway API for Kubernetes
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
routes but keeps its own expression syntax for the `rule` field.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Match expression (string, embedded in YAML)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
http:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
routers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
my-router:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
rule: >
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Host(`api.example.com`) &&
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
PathPrefix(`/api/v1`) &&
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Method(`GET`, `POST`) &&
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Header(`Content-Type`, `application/json`)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
service: my-service
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
`&&` = AND, `||` = OR. Parentheses for grouping.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Available matchers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| Matcher | Example |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
|---------|---------|
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `Host` | `Host("api.example.com")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `HostRegexp` | `HostRegexp(".*\.example\.com")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `Path` | `Path("/exact/path")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `PathPrefix` | `PathPrefix("/api/v1")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `PathRegexp` | `PathRegexp("/api/v[0-9]+/.*")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `Method` | `Method("GET", "POST")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `Header` | `Header("Content-Type", "application/json")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `HeaderRegexp` | `HeaderRegexp("Accept", "application/.*")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `Query` | `Query("version", "2")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `QueryRegexp` | `QueryRegexp("id", "[0-9]+")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| `ClientIP` | `ClientIP("10.0.0.0/8")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Glob paths: not supported directly. Use `PathRegexp` instead.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### Strengths / weaknesses
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Strengths:** the most expressive and concise format for complex boolean
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
combinations (AND/OR/NOT in a single line); `Method("GET", "POST")` is
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
the cleanest multi-method syntax surveyed; full regex support on every
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
field; Traefik v3 supports this inside Kubernetes CRDs.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Weaknesses:** the rule is a *string* embedded in YAML, not a structured
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
object — it cannot be validated with JSON Schema and is harder to generate
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
programmatically; no structured round-trip; no glob, only regex.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Comparison table
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| | Gateway API | Envoy | AWS ALB | Traefik |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
|---|---|---|---|---|
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Path: exact** | ✅ `Exact` | ✅ `path` | ✅ exact value | ✅ `Path()` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Path: prefix** | ✅ `PathPrefix` | ✅ `prefix` / `path_separated_prefix` | ✅ (via glob `/*`) | ✅ `PathPrefix()` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Path: glob** (`/a/*/b`) | ❌ (use regex) | ❌ (use regex) | ✅ native | ❌ (use regex) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Path: regex** | ✅ `RegularExpression` | ✅ `safe_regex` | ❌ | ✅ `PathRegexp()` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Header: exact** | ✅ | ✅ | ✅ | ✅ |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Header: regex** | ✅ | ✅ | ❌ | ✅ |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Header: absent** | ❌ (extension) | ✅ `present_match: false` | ❌ | ❌ |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Method matching** | ✅ (one per entry; OR via multiple entries) | ✅ (via `:method` pseudo-header) | ✅ (list = OR) | ✅ `Method("GET","POST")` |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **AND semantics** | predicates within one `matches` entry | all conditions | all `conditions` entries | `&&` operator |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **OR semantics** | multiple `matches` entries | `or_match` combinator | multiple values in one condition | `\|\|` operator |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Schema-validatable** | ✅ (CRD/JSON Schema) | ✅ (protobuf) | ✅ (CloudFormation schema) | ❌ (embedded string) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Human-writable** | ✅ | ⚠️ verbose | ✅ | ✅ |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
| **Generatable** | ✅ | ✅ | ✅ | ⚠️ (string concat) |
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Design choices worth adopting
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### 1. Match object as a structured peer to `host`
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Gateway API's separation of concerns maps well onto bot-bottle's existing
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
schema. Instead of a flat `path_allowlist`, a `match` block nests all
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
predicates:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
egress:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
routes:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- host: api.github.com
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
match:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
paths:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- type: prefix # exact | prefix | glob | regex
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: /repos/myorg/
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: Content-Type
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: application/json
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
methods: [GET, POST]
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
auth:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
scheme: Bearer
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
token_ref: EGRESS_TOKEN_0
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
All predicates within `match` are ANDed. A list of `paths` entries is
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
ORed (first match wins — same as the current `path_allowlist` semantics).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### 2. Path type enum (`exact` | `prefix` | `glob` | `regex`)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Use four named types rather than inferring from the value's syntax. This
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
avoids the ambiguity that plagues `.gitignore` and `nginx location` patterns
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
where the same string can mean different things depending on leading characters.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- `prefix`: mirrors current `path_allowlist` semantics.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- `glob`: adopts ALB-style `*` (single segment) and `**` (multi-segment,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
covering `/api/*/data` and `/api/**/data`). Simpler for operators than
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
writing regex.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- `regex`: RE2 for advanced cases. Reject at load time if the pattern fails
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
to compile.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
**Glob semantics decision needed:** ALB's `*` matches across `/`; most
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
shell-glob conventions treat `*` as intra-segment and `**` as cross-segment.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
The shell convention (`*` = no slash, `**` = slash-crossing) is less
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
surprising to operators and avoids accidental over-matching.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### 3. Header matching as a list of `{name, value, type}` objects
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Mirrors Gateway API exactly. ALL headers must match (AND). `type` defaults
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
to `exact`; `regex` is available. No header-absent for now (adds complexity,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
low immediate need).
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
headers:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: Content-Type
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: application/json # type: exact (default)
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- name: X-Internal-Key
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
value: "dev-[0-9]+"
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
type: regex
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### 4. Method list as a flat enum list
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
Adopts ALB's conciseness. An empty or absent `methods` list means all
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
methods are permitted. Values are uppercased HTTP method names.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
methods: [GET, HEAD]
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
### 5. Multiple `match` entries per route: OR semantics at the route level
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
If a route needs GET on one path and POST on a different path, use a
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
`matches` (plural) list where entries are ORed:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```yaml
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
routes:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- host: api.example.com
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
matches:
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- paths: [{type: prefix, value: /read}]
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
methods: [GET, HEAD]
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
- paths: [{type: exact, value: /write}]
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
methods: [POST, PUT]
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
```
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
This mirrors Gateway API's top-level OR; each entry is an AND of its
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
predicates.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
---
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
## Open questions
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
1. **Backward compatibility:** `path_allowlist` is the current field. If
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
adopting a `match`/`matches` structure, keep `path_allowlist` as a
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
deprecated alias? Or treat this as a breaking manifest version bump?
didericis marked this conversation as resolved Outdated
Outdated
Review

Treat it as a breaking version bump/do not preserve anything about previous behavior or manifests. Also do not bother creating loud exceptions or looking for the old format.

Treat it as a breaking version bump/do not preserve anything about previous behavior or manifests. Also do not bother creating loud exceptions or looking for the old format.
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
2. **Glob segment semantics:** adopt shell convention (`*` = intra-segment,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
`**` = cross-segment) or ALB convention (`*` = anything including `/`)?
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
The shell convention is safer; ALB's is simpler.
didericis marked this conversation as resolved Outdated
Outdated
Review

Drop the glob actually, not strictly necessary/can just use regex

Drop the glob actually, not strictly necessary/can just use regex
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
3. **Header value OR:** Gateway API requires a separate match entry to OR
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
header values. ALB allows multiple values in one condition. Which is
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
less surprising for bot-bottle operators? The ALB approach is more
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
concise for the common case (e.g., `Content-Type: [application/json,
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
application/x-www-form-urlencoded]`).
didericis marked this conversation as resolved Outdated
Outdated
Review

Stick with Gateway API

Stick with Gateway API
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
4. **Case sensitivity on method names:** normalize to uppercase at parse
didericis marked this conversation as resolved
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.
time (fail on unrecognised values) or case-insensitively?
didericis marked this conversation as resolved Outdated
Outdated
Review

Case insensitivity

Case insensitivity
Review

Got it — hard cutover, no compatibility shim, no fallback parsing for the old path_allowlist shape.

Got it — hard cutover, no compatibility shim, no fallback parsing for the old `path_allowlist` shape.
Review

Dropping glob. Will update the research doc and PRD to remove it — regex type covers every case glob would handle.

Dropping glob. Will update the research doc and PRD to remove it — `regex` type covers every case glob would handle.
Review

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.

Sticking with Gateway API — OR across header values means a separate match entry, not multiple values in one header block.
Review

Case-insensitive at parse time — get, GET, Get all accepted and normalised to uppercase internally.

Case-insensitive at parse time — `get`, `GET`, `Get` all accepted and normalised to uppercase internally.