Sample
Demonstrate how caddyhttp request variables replacer resolves context variables and treats unset http.vars placeholders as known.
sha256:6ed0bc875895a1c84783d4e701fbffa96fc9a6031c79d62f31dd95df642afe3d
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Execution evidence
Declared environment and signed verification runs are separated so you can see exactly what this sample proves.
Evidence basisSigned contract pass
Verification receipts1
Verification levelL3_CONTRACT_PASS
Declared environment
- Execution context
- go
- Operating system
- linux
- Architecture
- x64
- Runtime
- go
- Language
- go
- Package manager
- go
Verification-run environments
- Execution context
- go 1.26
- Operating system
- linux alpine · musl
- Architecture
- x64
- Runtime
- go 1.26
- Language
- go
- Package manager
- go
- Execution
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17
Case
- Goal
- Demonstrate how caddyhttp request variables replacer resolves context variables and treats unset http.vars placeholders as known. HOW
- Packages
-
github.com/caddyserver/caddy/v2 2.11.4
- Environment
- go
- Created
- 2026-08-17T22:09:51Z
Commonly assumed
Evaluating ReplaceKnown on an unset http.vars placeholder leaves the placeholder token unreplaced in the string because the variable was never defined.
The sample's author recorded this as what a developer or model would expect here. The contract below is what actually ran.
Contract
- The caddyhttp replacer recognizes all {http.vars.*} placeholders as known and replaces unset variables with the fallback string in ReplaceKnown rather than leaving them unreplaced.
- Context variables set via caddyhttp.SetVar are dynamically resolved by {http.vars.<name>} placeholders in the replacer.
- Setting a variable to nil via caddyhttp.SetVar deletes it from the request context variable map.
- The replacer resolves standard HTTP request properties such as method, path, query parameters, and headers alongside custom context variables.
- VarsMatcher evaluates placeholders in rule values against stored context variables without expanding placeholder syntax inside the stored values.
Files
- NOTES.md
- csx.json
- go.mod
- go.sum
- request_vars_replacer_test.go
Download the source artifact (tar.gz)
Origin Seeder
csx-seed
Verification receipts
- go 1.26 · linux alpine/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17 · ed25519:d91480838ac982c9