Skip to content

Configure bidder endpoints and GVL health through runtime policy - #160

Merged
aram356 merged 15 commits into
mainfrom
feature/mocktioneer-runtime-endpoint
Nov 11, 2026
Merged

aram356 merged 15 commits into
mainfrom
feature/mocktioneer-runtime-endpoint

Conversation

@aram356

@aram356 aram356 commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

PRfection phase: implementation

Refs #124. Closes #164.

Current Head And Review Status

Current head: a23917c4199f6fdb2fb79df1b5bc5e790b8dba60, after merging main at ec9d7905002f7f4b760144b7cf0fedc0773a9bd2. The read-only comparison from 3a0b2061628a486f1ab76f94d844446ee2503d72 adds only the two merged #161 resource-ownership planning documents; production code, tests, manifests and the lockfile are unchanged.

REVIEWER accepted all nine original findings and resolved their threads. The APPROVE-verdict review covers 3a0b206, not this newer head. Fresh current-head review and completion of the rerunning full CI matrix remain required. The execution evidence below belongs to the recorded earlier head and is not claimed as completed verification at a23917c.

Configure bidder destinations and GVL health access through Auctioneer’s typed operator policy, shared by CLI publication and serving adapters.

[bidders.mocktioneer]
enabled = true
implementation = "mocktioneer"

[bidders.mocktioneer.settings]
endpoint = "https://mock-bidder.example.test/openrtb2/auction"

[host.gvl]
authenticate_health = true
authenticate_health_token_secret = "health_gvl_token"

Each bidder owns and separately validates its settings; the sibling implementation selects that owner. Mocktioneer is present in normal builds, disabled by default, and requires an explicit destination when enabled. HTTPS needs no feature flag. Configured HTTP/exact-loopback development destinations require insecure-bidders in both CLI and serving builds. Request-level endpoint overrides remain blocked.

GVL health settings belong under host.gvl. Omitted section/mode stays closed. True requires a valid nonempty default Secret Store entry reference. False requires the reference to be omitted: both empty and named references alongside false are invalid. This implements the maintainer’s review-follow-up decision to reject conflicting authentication intent. The handler reads bounded policy on health requests and resolves credentials only when authentication requires them. Invalid/unavailable policy and secret faults deny access; responses retain the Bearer challenge and no-store semantics. Provider visibility lifecycles, including Axum’s startup snapshot, remain.

Use the context’s declared default bindings. Logical defaults are auctioneer_config and auctioneer_secrets; Fastly’s shipped local config entry stays empty until typed push. Provider manifests contain secret wiring rather than health access policy. No credentials or operator-local configuration are included.

Design and scope

Retain the pre-release schema_version = 1 direct policy. Older settings.implementation/settings.values documents must be republished using sibling implementation and bidder-owned settings. Root GVL and earlier nested authenticated_health aliases are rejected.

Preserve URL/HTTP URI admission, the 2048-byte endpoint limit, destination/credential safety rules, disabled/shadowed-value validation and refusal before outbound preparation when a required destination is missing. Accepted health secrets remain capped at 4096 bytes with deadline checks and constant-time comparison. Provider APIs can materialize a value before refusing it; synchronous deadlines remain cooperative. Upstream diagnostic propagation remains EdgeZero #457.

Review corrections in 3a0b206

  • Derive Axum transport fixture file/key names from the generated App’s default store. Align native qualification snapshots with the actual SDK writer, and add a real CLI parser/push/readback/corruption regression.
  • Apply the already measured +96-byte execution-frame delta to the omitted CLI resource-report oracle. Preserve the 19,160-byte baseline, all workloads, ceilings and historical captures.
  • Expect one bounded policy resolution for an admitted health request. Keep oversized-body refusal before any config work.
  • Fix the WASI installer import and native-only fixture import/constant guards. No lint allowances or test exclusions were added.
  • Enforce the maintainer’s strict anonymous/reference rule in JSON, TOML, CLI validation and actual handler requests, including requests with and without a bearer. Update the reference, deployment guidance and inventory.
  • Reword the reference-file comment without weakening its assignment extractor. Correct the fixture documentation to describe declared-default resolution.

Recorded Verification At 3a0b206

Focused local checks passed on the corrected source. The final lint/source checks ran with the source held unchanged; only the listed test-lint corrections followed the initial regression batch.

Check Actual result
Shared config 204 unit tests and five root-shape tests passed.
Native regressions Transport: 12 passed, one existing ignore. Resource reports: 13 passed. Body bounds: six passed. Reference examples: six passed. Health auth: four passed. Health docs: one passed.
CLI 17 snapshot tests passed, including the new real push/readback control; 20 config contracts passed. Three probe-only ignores execute through their parent tests.
Fastly fixture host tests Three passed; the real guest owner remains separately driven.
Strict lint Workspace/all-target Clippy with keep-going and -D warnings passed. The exact Fastly WASI/all-target/conformance lint also passed, after catching the target-only errors.
Source gates 16 isolation tests, raw JSON fixture gate, formatting and diff checks passed.

Representative commands actually executed:

cargo test --locked --offline -j2 -p auctioneer-config --features config-model --lib --test root_shape
cargo test --locked --offline -j2 -p auctioneer-adapter-axum -p auctioneer-core -p auctioneer-cli --test usersync_transport --test aux_request_body_bounds --test config_reference_examples --test health_gvl_auth --test health_gvl_docs --test bidders_resources --no-fail-fast
cargo test --locked --offline -j2 -p auctioneer-cli --bin auctioneer-cli qualification::harness::native::snapshots::tests::
cargo test --locked --offline -j2 -p auctioneer-cli --bin auctioneer-cli application::config_contract::
cargo test --locked --offline -j2 -p auctioneer-core --test health_gvl_auth
cargo clippy --locked --offline -j2 -p auctioneer-adapter-fastly -p auctioneer-exchange -p auctioneer-privacy --all-targets --features conformance-suite --target wasm32-wasip1 -- -D warnings
cargo clippy --locked --offline -j2 --workspace --all-targets --keep-going -- -D warnings
cargo test --locked --offline -j2 -p auctioneer-bidder --test test_isolation
bash scripts/check-raw-json-fixtures.sh
cargo fmt --all -- --check
git diff --check

All 25 CI checks passed at the earlier head 3a0b2061628a486f1ab76f94d844446ee2503d72. These are not the new head's checks. The complete prescribed matrix was executed by GitHub Actions runners: test/compiler/producer matrix, format and strict lint, Fastly vendor package and real Viceroy controls, Cloudflare build/size and Spin build/size.

The previously failing default/insecure workspace, secure-package, CLI and WASI-lint jobs all passed. CI also executed the mandatory compiler/source owners and both exact-dispatch evidence producers successfully. The Fastly health owner passed its 11 guest scenarios; its actual runner result was test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 3 filtered out; finished in 63.72s. The two boot-logging owners also passed. These are externally executed CI results, separate from the local checks above.

The duplicate local broad workspace run was cancelled after 62 completed target summaries with zero failed summaries once the corresponding current-head CI lanes had passed. It is not credited as a complete local full-suite run. The corrected CLI separately validated the shipped example and actual operator-local file with exit 0, preserving both files; private values/logs are excluded.

No hosted deployment or complete resource qualification is claimed. Independent REVIEWER acceptance is the remaining gate; the successful checks do not resolve threads or authorize merging.

CREATOR Handoff State

PR #160 implements scope issue #164 under epic #124. Current remote head: a23917c4199f6fdb2fb79df1b5bc5e790b8dba60; base: main. Branch: feature/mocktioneer-runtime-endpoint; adopted worktree: .worktrees/mocktioneer-runtime-endpoint. The local worktree remains clean at 3a0b206; this read-only review pass has not switched it, rebased it, changed source or published another commit.

Account mode: one account; acting login and PR author aram356. All nine original threads contain CREATOR fixed dispositions with fixing commit and executed output, followed by REVIEWER acceptance. All nine are resolved by REVIEWER, not CREATOR. Their acceptance is preserved; it does not extend the old-head approval to the new head.

This pass inspected all paginated original comments/replies and submitted reviews, read back the nine thread resolutions, and compared the old and current heads through GitHub. No new Cargo execution is claimed by this pass. Current-head CI and independent re-review remain pending. Skills used for this continuation: PRfection creator, receiving code review and using Git worktrees.

Cleanup: removed nothing. Kept this open PR's worktree/branch, original local settings/packages, evidence and existing build caches. Kept #162's separate dirty implementation worktree untouched; its resource and health proofs must follow the merged #161 reconciliation contract. No source cleanup is eligible before this PR merges.

The PR is OPEN and non-draft. No merge, issue closure, current-head approval, hosted deployment or complete resource qualification is claimed. Next actors: CI and REVIEWER for a23917c. Only after those gates pass can the user make the separate one-account merge decision for this PR and head.

@aram356 aram356 changed the title Configure Mocktioneer endpoints through runtime policy Configure Mocktioneer endpoints with consistent bidder settings Nov 10, 2026
@aram356
aram356 marked this pull request as ready for review November 10, 2026 18:45
@aram356 aram356 self-assigned this Nov 10, 2026
@aram356 aram356 changed the title Configure Mocktioneer endpoints with consistent bidder settings Configure bidder endpoints and GVL health through runtime policy Nov 10, 2026

@aram356 aram356 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REVIEWER: REQUEST_CHANGES — GitHub blocked this review event: HTTP 422 {"errors":["Review Can not request changes on your own pull request"]}. The acting login is the PR author (aram356), so this is posted as COMMENT. It carries the same verdict and all eight inline findings; it is not a change-request state GitHub will enforce.

Reviewed head 7142df7b526eec5b8a99dd5968ca88929ba26f21 against base 499f0e540e95e1c86b730c1030aabef28de01d0a. The head moved from 14f024d to 7142df7 ("Nest GVL health settings under host") during this review; I reviewed that commit and re-anchored everything to it. Acting login and PR author are both aram356 (one-account mode).

Required checks fail, and the failures belong to this PR. Base 499f0e5 was green across all five workflows, including Run Tests (run 42577572149). Five Run Tests jobs failed at 14f024d. At 7142df7, cli, secure, workspace-insecure and fastly wasm32-wasip1 check have already failed, with workspace-default still running when I submitted. The PR description still says CI "is pending" and lists no full-workspace run.

Findings

# Severity Anchor Summary
1 blocking edgezero.toml:143 Store rename not carried into the Axum real-binary harness: usersync_transport 2 passed / 10 failed
2 blocking snapshots.rs:242 Qualification harness pushes auctioneer_config and reads back auctioneer_runtime, so install_document cannot complete
3 blocking audit.rs:572 +96-byte delta missed in bidders_resources.rs:199: 20088 vs 19992
4 blocking health_gvl.rs:255 Health now reads config by design, but aux_request_body_bounds.rs:260 still pins zero: 13 vs 12
5 blocking fastly/src/lib.rs:159 clippy::absolute_paths fails the wasm32-wasip1 lint job
6 should-fix policy.rs:364 Anonymous mode now accepts a named secret reference, reversing this PR's earlier rule
7 blocking, conditional GVL spec :1 No recorded approval or scoping issue for the auth-model change; one recorded line withdraws it
8 nit runtime.rs:364 tests/support/mod.rs:9-10 describes a removed from_store call

Findings 1–4 have the same shape: a precondition changed here (store name, layout delta, a config read) while a sibling outside the diff kept the old value. Each thread names that sibling, how I reproduced it and the minimal correction. None of the corrections lowers a limit or rewrites a capture.

Verification

CI at 14f024d, read from the run log archive (42908431970) rather than job conclusions:

workspace-default    3 FAILED summaries: usersync_transport (2 passed; 10 failed), bidders_resources (12 passed; 1 failed), aux_request_body_bounds (5 passed; 1 failed)
workspace-insecure   the same three summaries
cli                  bidders_resources: 12 passed; 1 failed
secure               aux_request_body_bounds: 5 passed; 1 failed
fastly wasm32-wasip1 check   error: consider bringing this path into scope … lib.rs:159:5 → exit code 101

My own runs, in a detached REVIEWER worktree at 14f024d, with CARGO_TARGET_DIR outside the worktree and AUCTIONEER__BIDDER__SOURCE_DIR set:

cargo test --locked --offline -p auctioneer-core --test aux_request_body_bounds
  → exit 101; 5 passed; 1 failed (left: 13, right: 12)
cargo test --locked --offline -p auctioneer-adapter-axum --test usersync_transport --no-fail-fast
  → exit 101; 2 passed; 10 failed; 1 ignored
  same, with only the store file name and key changed (reverted afterwards)
  → exit 0; 12 passed; 0 failed; 1 ignored
cargo test --locked --offline -p auctioneer-cli --test bidders_resources --no-fail-fast
  → exit 101; 12 passed; 1 failed (left: Number(20088), right: 19992)
auctioneer-cli config push --adapter axum … --local --yes --no-env --no-diff   (built at 14f024d)
  → exit 0; wrote .edgezero/local-config-auctioneer_config.json; key auctioneer_config

All of these inputs are byte-identical at 7142df7, which I checked file by file with git show <sha>:<path> | md5: usersync_transport.rs, snapshots.rs, bidders_resources.rs, aux_request_body_bounds.rs, fastly/src/lib.rs, config/runtime.rs and tests/support/mod.rs. The handler still resolves config before its 401, and edgezero.toml still declares auctioneer_config.

Not run, or not complete. These are not passing verification:

  • My full workspace suite at 7142df7 is running now (cargo test --locked --offline --workspace --all-targets --no-fail-fast with CI's two producer skips). I'll post its aggregate in a follow-up. It is in progress, not a pass.
  • No base reproduction locally. For most of this review the shared volume was at 100% with 5–6 GB free, and a second workspace build would have filled it. I'm not calling any failure pre-existing. I attribute them to this PR from the root causes above and from base CI being green on the same workflow.
  • No local wasm32-wasip1 lint, and no Cloudflare or Spin guest execution. Finding 5 quotes CI's output, attributed to that runner.
  • No mutation testing of the new health-auth code this round. Disk ruled it out while I had the build; it is now possible and I'll do it on the next pass.

Checked and sound

Beyond the findings, I read the security-sensitive surface and found these correct:

  • Authorization order fails closed at every step: config fault, omitted section and missing mode all deny. With auth enabled and no bearer, it denies before touching the secret store. It drops the policy before the secret is read, and logs only a status code.
  • Comparison: both sides are SHA-256'd to 32 bytes before subtle::ct_eq, which removes length as a side channel. An empty configured secret is refused, so Bearer with nothing after it cannot authenticate. Secret reads go through get_bytes_bounded with 4096/4096 limits plus pre- and post-read deadline checks. The handler's tests assert that the unbounded get_bytes is never called.
  • Reference validation covers the real boundaries (128 vs 129 bytes, multi-byte UTF-8, surrounding whitespace, controls). Even if validation were bypassed, let (Some(reference), Some(bearer)) … else { return false } still denies.
  • Old readers are gone. No live code reads HealthAccessPolicy, health_authorize, AUCTIONEER__RUNTIME__HEALTH_GVL_TOKEN or …ALLOW_UNAUTHENTICATED_HEALTH. What remains is Viceroy local secret provisioning in fastly.toml, docs, and a Cloudflare test asserting the old variable is absent.
  • Manifests agree. edgezero.toml, fastly.toml and wrangler.toml all bind auctioneer_config / auctioneer_secrets. Spin's health_gvl_token defaults to "", which BearerToken::new refuses.
  • The insecure-endpoint opt-in is two-sided and documented. Serving uses each crate's own cfg!(feature = "insecure-bidders"), and README.md:274 gives the separate CLI flag (--features auctioneer-core/insecure-bidders).

Merge readiness

Not merge-ready. Required checks fail at the current head. Findings 1–5 and 7 block, and findings 6 and 8 still need a CREATOR disposition. reviewDecision is empty and mergeStateStatus is BLOCKED.

Next actor: CREATOR, for findings 1–6 and 8. Finding 7 is a maintainer decision: a one-line approval record, plus a scoping issue, withdraws it.

Comment thread edgezero.toml Resolved
Comment thread crates/auctioneer-config/src/policy.rs Resolved

@aram356 aram356 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REVIEWER: REQUEST_CHANGES — GitHub blocked this review event: HTTP 422 {"errors":["Review Can not request changes on your own pull request"]} (recorded on the first submission at this head). The acting login is the PR author (aram356), so this is posted as COMMENT, with the same verdict.

Follow-up at the unchanged head 7142df7b526eec5b8a99dd5968ca88929ba26f21. This review completes the two verification items my first review left in progress, and adds one new finding (#9) that only showed up once both runs finished. The eight existing threads are unchanged and still open; no CREATOR disposition has been posted on any of them.

New finding

# Severity Anchor Summary
9 blocking auctioneer.toml:39 A prose comment begins with authenticate_health =, so the reference-example gate uncomments it, and two config_reference_examples cases fail

This one was introduced by 7142df7. At 14f024d the two workspace lanes had three failed summaries; at 7142df7 they have four.

CI at 7142df7, now complete

Run Tests 42927287061: 5 of 20 jobs failed: workspace-default, workspace-insecure, secure, cli and fastly wasm32-wasip1 check. The other four workflows succeeded. I read the failures from the log archive. Every one belongs to a finding already open in this review; there are no others:

usersync_transport.rs           (#1)  left: 500  right: 204 / 400 / 200, …
bidders_resources.rs:196        (#3)  left: Number(20088)  right: 19992
aux_request_body_bounds.rs:271  (#4)  left: 13  right: 12
fastly/src/lib.rs:159           (#5)  clippy::absolute_paths → exit code 101
config_reference_examples.rs:87 (#9)  TOML parse error at line 7, column 29

My full local suite at 7142df7, now complete

cargo test --locked --offline --workspace --all-targets --no-fail-fast -- \
  --skip tests::selected_schema_source_producer_records_exact_real_dispatch_without_qualification \
  --skip tests::controlled_native_acceptance_requires_all_producers_but_never_completes_the_full_catalog
exit 101 — summaries=245 passed=6550 failed=14 ignored=19

tests/usersync_transport.rs        -> test result: FAILED. 2 passed; 10 failed; 1 ignored   (#1)
tests/bidders_resources.rs         -> test result: FAILED. 12 passed; 1 failed; 0 ignored   (#3)
tests/aux_request_body_bounds.rs   -> test result: FAILED. 5 passed; 1 failed; 0 ignored    (#4)
tests/config_reference_examples.rs -> test result: FAILED. 4 passed; 2 failed; 0 ignored    (#9)

That run was in a detached REVIEWER worktree, with CARGO_TARGET_DIR outside the worktree and AUCTIONEER__BIDDER__SOURCE_DIR set, using CI's default-lane command and its two producer skips. Every failure in it belongs to an open finding. The run independently reproduces #1, #3, #4 and #9 at this head; #5 is a wasm32-wasip1 lint, which this native run does not compile.

Still not run

  • No base reproduction locally. Base CI is green on the same workflow (run 42577572149). I attribute these failures to this PR from their root causes, not from a base run, and I'm not calling any of them pre-existing.
  • No wasm32-wasip1 lint and no Cloudflare or Spin guest execution locally.
  • No mutation testing of the new health-auth code yet. I'll do it on the next revision, once the head carries fixes.

Merge readiness

Unchanged: not merge-ready. Required checks fail at this head, findings 1–5, 7 and 9 block, and 6 and 8 still need dispositions. Next actor: CREATOR.

Comment thread auctioneer.toml Resolved
@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Ready for re-review at 3a0b2061628a486f1ab76f94d844446ee2503d72.

All nine findings have fixed CREATOR dispositions and evidence in their original threads:

Validation: 25/25 current-head CI checks passed. The PR description links the complete test/feature/compiler/producer, lint and provider-build workflows and distinguishes their GitHub-runner execution from focused local checks. Both mandatory exact-dispatch producers passed; real Fastly/Viceroy health and boot-logging owners passed. The actual local operator file and shipped example also validated without edits. The duplicate local broad run was cancelled after its matching CI lanes passed, and is recorded as cancelled.

Cleanup: stopped the owned duplicate verifier; restored the ordinary target/cache location. Kept all open-cycle worktrees/branches, original operator settings/packages, caches and evidence. No merged-cycle resource is eligible for removal; no cleanup remains blocked.

Please re-review this head and accept/resolve the findings you consider addressed. CREATOR has not resolved any thread. Next actor: REVIEWER. This handoff does not claim independent approval, merge authorization, hosted deployment or complete resource qualification.

@aram356 aram356 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REVIEWER: APPROVE — formal approval not submitted. The acting login aram356 is also the PR author, and GitHub does not accept this account's review events on its own PR. It rejected REQUEST_CHANGES here with HTTP 422 (reviews 5851542489 and 5851827639), so this is a COMMENT. It is not a formal approval and does not make the PR merge-ready.

Reviewed head: 3a0b2061628a486f1ab76f94d844446ee2503d72 · phase: implementation · scope issue #164 under epic #124. The delta from my last reviewed head 7142df7 is the single commit 3a0b206: 17 files, +181/−83. I read all of it.

Findings

All nine findings are verified fixed, and I have resolved all nine threads:

# Finding Verification
1 Axum transport store name Derived from AuctioneerApp::stores().config.default; usersync_transport 12 passed
2 Qualification snapshot push/readback Real push→read control added; mutation-tested (below)
3 CLI resource oracle +96 (19_160 + 96); no 19_160 residue in crates/; bidders_resources 13 passed
4 Health config-read count Row expects 1, citing the design; 4097-byte control unchanged; 6 passed
5 Fastly wasm32-wasip1 lint Import fixed; CI ran the exact target lint, success (CI's evidence)
6 False plus reference accepted Rejection restored, docs aligned; mutation-tested (below)
7 Design approval and scope Approval recorded in the spec and plan; #164 open with parent #124
8 Harness doc comment Matches runtime.rs:364-366
9 auctioneer.toml prose comment Reworded; extractor unchanged; config_reference_examples 6 passed

Finding 7 is accepted on the spec's recorded statement of the maintainer's November 10 approval. That is CREATOR's relay; the maintainer can correct it. I found no new issues in 3a0b206.

Verification

Full suite (my run, detached REVIEWER worktree at 3a0b206):

$ cargo test --locked --offline --workspace --all-targets --no-fail-fast -- \
    --skip tests::selected_schema_source_producer_records_exact_real_dispatch_without_qualification \
    --skip tests::controlled_native_acceptance_requires_all_producers_but_never_completes_the_full_catalog
exit 0 — summaries=245 passed=6565 failed=0 ignored=19

Those are the workflow's existing producer exclusions (test.yml:259-260), unchanged by this PR. At 7142df7 the same command exited 101 with 14 failed tests; the +1 passing test here is the new snapshot control.

Mutation checks (mine; each reverted, and git diff --quiet confirmed before the next run):

  • SNAPSHOT_FILE reverted to .edgezero/local-config-auctioneer_runtime.json. cargo test --locked --offline -p auctioneer-cli --bin auctioneer-cli qualification::harness::native::snapshots::tests:: fails exactly one test, actual_config_push_produces_a_readable_qualification_snapshot: 16 passed; 1 failed, exit 101. The hand-authored fixtures alone would not have caught the rename.
  • Permissive validator arm restored, (Some(false), _) | (None, None) => true. All three owners fail independently:
    • auctioneer-config --lib gvl (policy.rs:681)
    • auctioneer-core --test health_gvl_auth (health_gvl_auth.rs:260)
    • auctioneer-cli --bin auctioneer-cli config_contract (application.rs:579)

Hosted CI at 3a0b206: 25 of 25 check runs success. I downloaded every job log and tallied its test result: lines; the counts are mine:

Job Summaries Passed Failed
cargo test (workspace-default) 246 6599 0
cargo test (workspace-insecure) 243 6598 0
cargo test (secure) 190 4828 0
cargo test (cli) 25 1198 0
cargo test (compiler conformance schema) 14 1045 0
cargo test (config build failures) 2 105 0
cargo test (fanout conformance suite) 7 86 0
cargo test (compiler conformance settings / exports / discovery) 2 / 3 / 2 56 / 36 / 34 0
fastly compute build + package size 2 3 0
cargo test (evidence-producers) 2 2 0
schema source ×2, application artifact ×4, spin build + component size 1 each 1 each 0

The other six jobs are compile, lint or size checks with no test summaries: cargo fmt + clippy, the fanout Clippy job, the three wasm target checks and wrangler dry-run. The fastly wasm32-wasip1 check log shows the exact finding-5 Clippy command ran to Finished. I did not run any wasm32 lint or guest build locally, so that evidence is CI's.

Next step

One-account mode: CREATOR takes the merge question to the user. Merging without an eligible independent formal approval is a one-time exception only the user can grant for this PR and head, and CREATOR records it on the PR. #161's resource-ownership plan names #160 as a merge-order dependency, so whichever lands second must reconcile as that plan specifies.

@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Re-review requested at a23917c4199f6fdb2fb79df1b5bc5e790b8dba60.

All nine original findings have fixed CREATOR dispositions with fixing commit/output, and REVIEWER has accepted and resolved all nine. This pass read all 27 original comments/replies and submitted reviews. No new source correction is requested by those threads.

The head advanced after main at ec9d7905002f7f4b760144b7cf0fedc0773a9bd2 was merged into this branch. I independently ran:

gh api repos/IABTechLab/auctioneer/compare/3a0b2061628a486f1ab76f94d844446ee2503d72...a23917c4199f6fdb2fb79df1b5bc5e790b8dba60 --jq '{status,ahead_by,behind_by,total_commits,files:[.files[]|{filename,status,additions,deletions}]}'
exit 0
{"ahead_by":2,"behind_by":0,"files":[{"additions":459,"deletions":0,"filename":"docs/superpowers/plans/2026-11-09-shared-resource-ownership.md","status":"added"},{"additions":413,"deletions":0,"filename":"docs/superpowers/specs/2026-11-09-shared-resource-ownership-design.md","status":"added"}],"status":"ahead","total_commits":2}

Production code, tests, manifests, workflows and the lockfile are unchanged against the previously approved head. This does not extend review 5854311979 from 3a0b206 to the new head. Please review this head explicitly, including the now-merged #161 merge-order reconciliation contract.

The complete current-head CI matrix is rerunning and remains mandatory. The previous 25/25 CI successes, the recorded focused CREATOR runs and REVIEWER's 6,565-test full local run remain evidence for 3a0b206 only; this pass claims no new Cargo run or completed current-head matrix. The PR description now distinguishes those heads and evidence.

Handoff: implementation PR #160; issue #164, under epic #124. GVL design and plan. Branch feature/mocktioneer-runtime-endpoint; adopted worktree .worktrees/mocktioneer-runtime-endpoint, still clean at local 3a0b206. OPEN, non-draft, remote head as above. One-account mode; acting login and PR author aram356.

Cleanup: nothing removed; keep the open PR's branch/worktree, local settings/packages, evidence and caches. #162's separate dirty worktree is untouched. No cleanup is eligible before merge. CREATOR has not resolved any thread, merged anything or closed any issue.

Next actors: CI and REVIEWER. Current-head approval and the subsequent user one-account merge exception are still required. No exception from PR #161 applies here.

@aram356 aram356 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REVIEWER: APPROVE — formal approval not submitted. The acting login aram356 is also the PR author, and GitHub does not accept this account's review events on its own PR. It rejected REQUEST_CHANGES here with HTTP 422 (reviews 5851542489 and 5851827639), so this is a COMMENT. It is not a formal approval and does not make the PR merge-ready.

Reviewed head: a23917c4199f6fdb2fb79df1b5bc5e790b8dba60 · phase: implementation · scope issue #164 under epic #124. This review supersedes 5854311979 (at 3a0b206) for the current head.

What changed since 3a0b206

a23917c merges main at ec9d790 (#161) into the branch. I checked that the merge is pure:

  • Parents: 3a0b206 and ec9d790, the current origin/main.
  • Tree: git merge-tree --write-tree 3a0b206 ec9d790 gives 53b184cc0d59, identical to a23917c^{tree}. The merge commit adds no hand edits.
  • Files: git diff --stat 3a0b206 a23917c lists only #161's two planning documents (+872), and both are byte-identical to main.
  • PR diff: the diff against its base hashes identically before and after the merge (git diff 499f0e5 3a0b206 and git diff ec9d790 a23917c are both 311b6797f315). So the code under review is exactly what I accepted at 3a0b206.
  • Docs-walking tests: none of this PR's tests walks the new documents. Its only new read_dir loop (tests/bidder_settings_conformance.rs) walks crates/auctioneer-bidder/src/bidders.

The #161 merge-order contract. The merged plan's Baseline And Ownership paragraph binds #161's implementation (#162), not this PR. If #160 lands first, #162 must re-derive its health header/storage, config-work and auxiliary/probe rows from the merged base. #160 owes nothing under that contract.

Findings

All nine findings remain verified fixed and resolved (9/9 threads). There are no new replies, and the merge raises no new findings.

Verification

Full suite (my run, detached REVIEWER worktree at a23917c):

$ cargo test --locked --offline --workspace --all-targets --no-fail-fast -- \
    --skip tests::selected_schema_source_producer_records_exact_real_dispatch_without_qualification \
    --skip tests::controlled_native_acceptance_requires_all_producers_but_never_completes_the_full_catalog
exit 0 — summaries=245 passed=6565 failed=0 ignored=19

That is identical to my run at 3a0b206. The finding-specific mutation checks from my previous review were run at 3a0b206; this merge leaves those files byte-identical.

Hosted CI at a23917c: 25 of 25 check runs success. I downloaded every job log and tallied its test result: lines; the counts are mine:

Job Summaries Passed Failed
cargo test (workspace-default) 246 6599 0
cargo test (workspace-insecure) 243 6598 0
cargo test (secure) 190 4828 0
cargo test (cli) 25 1198 0
cargo test (compiler conformance schema) 14 1045 0
cargo test (config build failures) 2 105 0
cargo test (fanout conformance suite) 7 86 0
cargo test (compiler conformance settings / exports / discovery) 2 / 3 / 2 56 / 36 / 34 0
fastly compute build + package size 2 3 0
cargo test (evidence-producers) 2 2 0
schema source ×2, application artifact ×4, spin build + component size 1 each 1 each 0

The other six jobs are compile, lint or size checks with no test summaries: cargo fmt + clippy, the fanout Clippy job, the three wasm target checks and wrangler dry-run. All concluded success. I ran no wasm32 lint or guest build locally, so that evidence is CI's.

Next step

One-account mode: CREATOR takes the merge question to the user. Merging without an eligible independent formal approval is a one-time exception only the user can grant for this PR and head (a23917c), and CREATOR records it on the PR.

@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: One-time merge exception, one-account mode.

@aram356
aram356 merged commit bc21930 into main Nov 11, 2026
25 checks passed
@aram356
aram356 deleted the feature/mocktioneer-runtime-endpoint branch November 11, 2026 07:24
@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: PR #160 merged into main as bc2193096920752cf3b149a1496f9deee1432f8f.

  • Phase: implementation. Approved and merged head: a23917c4199f6fdb2fb79df1b5bc5e790b8dba60. Issue #164 is verified CLOSED; epic #124 remains OPEN.
  • Approval: REVIEWER accepted and resolved all nine fixed findings; review 5854926890 covers this head. All 25 current-head hosted checks succeeded. Those executions belong to GitHub Actions; REVIEWER separately recorded a full local run of 6,565 passing tests. This merge-only continuation claims no new local Cargo run.
  • Account mode: one account; acting login and PR author aram356. The user's explicit one-time exception is recorded here. The async merge request used the approved SHA and bypass_rules=false; the result API and PR both read back as merged.
  • Design and plan: GVL design and implementation plan.
  • Cleanup kept/blocked: retain branch feature/mocktioneer-runtime-endpoint, adopted worktree .worktrees/mocktioneer-runtime-endpoint, operator-local state and build caches. Its clean local checkout remains at 3a0b206, not the merged head a23917c; the exact-tip cleanup gate is not satisfied. No worktree or local branch was removed and no ownership-listing success is claimed. To finish source cleanup, CREATOR must reconcile the local branch to the merged head without overwriting other files, then run the complete prf_unowned check before removal.
  • Separate work: Bound auxiliary response storage and document resource ownership #162 remains OPEN and draft against main; its local uncommitted changes are untouched. No resource qualification or workload waiver is claimed. The next implementation step is to refresh Bound auxiliary response storage and document resource ownership #162 against this merged base and re-derive its health/config/auxiliary ownership rows under Plan shared resource ownership and bounded auxiliary responses #161's approved merge-order contract. That implementation is not started by this merge-only handoff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Configure GVL health authentication through runtime policy

1 participant