Summary
PR #110 added config-seeded auction coverage through the Fastly and Cloudflare adapters, but it seeds the config store in-process rather than through each platform's real store. This closes the last mile: prove the auction path works against the actual platform config store, opened by its manifest binding name.
What PR #110 already covers
crates/mocktioneer-adapter-{fastly,cloudflare}/tests/contract.rs each seed a non-default bid_cpm (0.35) into an in-process ConfigStore, inject it via the service builder's with_config_handle, and dispatch POST /openrtb2/auction, asserting the decoded bid price. These run under the real wasm runtimes (Viceroy / wasm-bindgen + headless Firefox) in the existing adapter-wasm-tests CI matrix.
That exercises: request translation → config-store binding → AppConfig extractor → auction handler → response translation.
The gap
Because the handle is injected, the service builder binds it under default_key "default" (see synthesise_store_registries). So these are not covered:
- The real platform read — Fastly
ConfigStore::try_open(...) / Cloudflare KV get(...).
- The manifest binding name
mocktioneer_config (from [stores.config] ids), as resolved by the manifest-driven run_app path.
- Emulator/local state wiring (Viceroy config-store fixture, miniflare/workerd KV binding).
A binding-name or default-key regression in the manifest path could therefore break all edge auctions while CI stays green.
Proposed work
Notes
Summary
PR #110 added config-seeded auction coverage through the Fastly and Cloudflare adapters, but it seeds the config store in-process rather than through each platform's real store. This closes the last mile: prove the auction path works against the actual platform config store, opened by its manifest binding name.
What PR #110 already covers
crates/mocktioneer-adapter-{fastly,cloudflare}/tests/contract.rseach seed a non-defaultbid_cpm(0.35) into an in-processConfigStore, inject it via the service builder'swith_config_handle, and dispatchPOST /openrtb2/auction, asserting the decoded bid price. These run under the real wasm runtimes (Viceroy / wasm-bindgen + headless Firefox) in the existingadapter-wasm-testsCI matrix.That exercises: request translation → config-store binding →
AppConfigextractor → auction handler → response translation.The gap
Because the handle is injected, the service builder binds it under default_key
"default"(seesynthesise_store_registries). So these are not covered:ConfigStore::try_open(...)/ Cloudflare KVget(...).mocktioneer_config(from[stores.config] ids), as resolved by the manifest-drivenrun_apppath.A binding-name or default-key regression in the manifest path could therefore break all edge auctions while CI stays green.
Proposed work
[local_server.config_stores]) holding the blob envelope undermocktioneer_config, and a test that dispatches an auction through the manifest-driven path.wasi:httpABI blocker) is resolved.config pushwrites (canonical JSON + SHA), ideally generated rather than hand-maintained.Notes
BlobEnvelope), so fixtures must carry a validsha256— generate viamocktioneer-cli config pushrather than hand-editing.