Skip to content

Bound auxiliary response storage and document resource ownership - #162

Open
aram356 wants to merge 10 commits into
mainfrom
prfection/33-resource-ownership
Open

aram356 wants to merge 10 commits into
mainfrom
prfection/33-resource-ownership

Conversation

@aram356

@aram356 aram356 commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

PRfection phase: implementation

Summary

Implement the bounded auxiliary-response ownership scope approved in #161 for #33 and #50, with partial #48 delivery. Count sync JSON and HTML expansion before fallible bounded output reservation, detach bounded headers from input backing, preserve the existing cookie formatter, and retain original route/work receipts through terminal egress. Conservative (A + P) * (H * D + T) accounting, workload limits and ceilings are unchanged. This PR does not complete physical/guest/provider proof or claim target fit.

Current fixing head: bce5cc7e37d8924aff0189287703b3a25042ef79. Base: 7f6773e29d7657819a90dd53522055623b9fd6f2, including merged archive refresh #167. Approved contract: specification and plan. Current source/proof ownership index.

Review Corrections

The six earlier findings were accepted and resolved by REVIEWER, not CREATOR. The final three corrections are now published in bce5cc7e37d8924aff0189287703b3a25042ef79:

  • Extend the existing stalled-body receipt control to configured POST/OPTIONS cookie-sync, getuids and setuid, retaining the collector/fallback rows. All seven cases run both cancellation and timeout. Poll and nonzero-work assertions prevent vacuous passes; pending/cancel/408/response-drop observations retain both original ledgers.
  • Map every second-pass serialization error to Serialization, matching shrinkage and the existing HTTP 500 mapping. Keep count-pass cap failures as BodyLimit. The growth expectation was observed failing before the production correction, then passing. Public error contracts now cover reservation refusal and count/serialization disagreement.
  • Explicitly record signed-cookie raw/escaped encoder buffers, base64/envelope strings, overlap and repeated eviction passes as remaining Prove auxiliary response-handoff storage and lifetime accounting #48 evidence. The encoder and its limits are unchanged; the final 4-KiB field bound is not presented as an intermediate-allocation proof.

Earlier cookie-sync and setuid reservation refusals map to 500 while genuine client/limit failures retain their existing mappings and fixed bodies. Public API note: the exhaustive CookieWriteError enum gained Allocation; downstream exhaustive matches must handle it. The index discloses this, and real-App allocator/egress controls preserve no-cookie, no-retry, recovery and original-receipt assertions. OpenRTB wire success and consent policy are unchanged. The HTTP server-error distinction is not claimed as an OpenRTB cookie-sync mandate.

EdgeZero Decision

The user explicitly requested the SDK refresh in this PR on 2026-11-11. Decision record. Six workspace dependencies and eight locked packages remain at official-repository revision a7d7fd0f2face027e3810ed67e80f6341fcf68b6. This repair does not chase a newer tip. Cargo.lock SHA-256 remains e7f92633b6b27c6d97bdffcbd51958de64970b67d0da3e8f6a16197b1827f61f.

Retained outbound scope/cancellation requirements are preserved. #50/#72/#73/#75 now bind the current SDK facts; #50/#73 explicitly own Fastly wake-request flags, source-waker wrappers, overlapping registrations and their next verification actions. #49/#76 record coordination and actual Trusted Server host-owned work. The historical role of #130 (already closed) is not outstanding proof ownership. Historical captures and approved planning documents retain their original bytes and SDK identities.

Current Verification

CREATOR executed the following complete native lanes for these review fixes; each exited 0. The sole subsequent code edit extracted the ingress test's request setup and renamed shadowed bindings after strict Clippy caught size/complexity/shadowing violations. No assertion or case changed. The final ingress target is rerun in both feature modes, core units are rerun, and both strict workspace Clippy modes are rerun before committing bce5cc7e37d8924aff0189287703b3a25042ef79. Counts below are sums of actual libtest result lines per command, not unique tests. Lanes overlap. Existing ignores remain visible.

Local lane Summaries Passed Failed Ignored
Default workspace 245 6,598 0 19
Insecure workspace, excluding config-data's separately owned lane 232 6,395 0 19
Secure bidder/exchange/core 154 3,921 0 11
Secure config-data 13 204 0 0
Config model/build support 2 424 0 0
Feature-enabled config-data 7 184 0 0

Exact test commands:

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
cargo test --locked --offline --workspace --all-targets --features insecure-bidders --exclude auctioneer-config-data --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
cargo test --locked --offline -p auctioneer-bidder -p auctioneer-exchange -p auctioneer-core --all-targets --no-fail-fast
cargo test --locked --offline -p auctioneer-config-data --lib --test codegen --test disclosure_codegen --test gvl_archive --test smoke --test url_safety --test activity --test product_defaults_snapshot --test simple_fold --test usersync_config --test usersync_callback_validation --test bidder_bindings --test bidder_storage
cargo test --locked --offline -p auctioneer-config --lib --test root_shape --features build-support
cargo test --locked --offline -p auctioneer-config-data --features "insecure-bidders test-harness-override" --lib --test codegen --test gvl_archive --test smoke --test url_safety --test bidder_bindings --test bidder_storage

Verbatim changed-owner lines from the completed default workspace run, before the final test-only Clippy refactor:

test handlers::sync_http::tests::sync_json_line_refuses_serialization_growth_and_shrinkage ... ok
test result: ok. 684 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
test tests::body_read_timeout_and_cancellation_preserve_the_original_auxiliary_receipt ... ok
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

The identical exact serializer command first failed with Err(BodyLimit) instead of Err(Serialization) (exit 101), then passed after the production fix (exit 0, one passed). The prior expired-archive build attempt executed no test and is not credited as that red result.

After the final test-only setup/scenario extraction, these commands also exited 0:

cargo test --locked --offline -p auctioneer-core --test ingress_admission
cargo test --locked --offline -p auctioneer-core --features insecure-bidders --test ingress_admission
cargo test --locked --offline -p auctioneer-core --lib
cargo clippy --locked --offline --workspace --all-targets -- -D warnings
cargo clippy --locked --offline --workspace --all-targets --features insecure-bidders -- -D warnings
cargo fmt --all --check
git diff --check

Verbatim final-owner results, in the three test commands' order:

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
test result: ok. 684 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s

The earlier Clippy attempts correctly rejected complexity/size and shadowed test bindings. Those source issues were corrected, not suppressed; both final strict modes pass with the same lint policy.

Raw-JSON fixture/rejection controls, roster/rejection controls and batch-rebase checks also passed. The raw-JSON gate reports 203 raw JSON fixture(s) across 56 file(s), all budgeted; the roster reports 139 uniquely owned members. Routine GVL deletion diagnostics and the existing proc-macro-error2 v2.0.1 future-incompatibility notice remain visible.

Clean committed-source resource commands each exited 0:

cargo run --locked --offline -p auctioneer-cli -- bidders resources --check --all-adapters --capture-audit > "$RUNNER_TEMP/final-resource-audit.toml"
cargo run --locked --offline -p auctioneer-cli -- bidders resources --check --all-adapters --audit "$RUNNER_TEMP/final-resource-audit.toml"
bash .github/workflows/scripts/test/reconcile-resource-fit.sh

All four captured records bind bce5cc7e37d8924aff0189287703b3a25042ef79 with dirty = false and source_tree_matches_commit = true. Strict reconciliation reports required_fit = false separately for Axum, Cloudflare, Fastly and Spin. Command success is not a fit certificate.

The two heavy producer tests retain their existing mandatory once-owned hosted lane. Compiler probes, linked application artifacts, guest/provider execution and all 25 hosted checks remain required, with no new skip, ignore, exclusion, timeout, limit or workflow change. The user's earlier decision to use the unchanged full hosted matrix for those checks remains in force. Earlier heads' green matrices are historical evidence only, not verification of this fixing head. Current hosted execution is pending; no full acceptance is claimed before it finishes.

Remaining Gates

The three original threads have final fixed replies with commands and real results; REVIEWER must independently verify and resolve them. CREATOR has not resolved any thread. One-account PRfection uses aram356 for both acting login and PR author; no formal independent approval or merge exception is claimed.

#48 remains open for complete retained-response R, encoder/input construction, container/allocator, phase overlap, applicable guest layouts and SDK/provider-copy proofs. Actual Trusted Server handoff (#76 / Trusted Server #1510) and schema C/I/V qualification remain separate. #33/#50 reconciliation is offered for review, not issue closure. No issue is closed and no merge is authorized or performed.

Branch: prfection/33-resource-ownership. Owned worktree: .worktrees/prfection/33-resource-ownership, retained for this open PR. No source/worktree/cache was removed in this review-fix round.

@aram356
aram356 added this pull request to stack #163 November 10, 2026 16:19
@aram356 aram356 self-assigned this Nov 10, 2026
Base automatically changed from prfection/33-resource-ownership-plan to main November 11, 2026 05:24
Refs #33, #50 and #48. Stack on planning PR #161 at the user's direction while independent planning review remains pending. Keep the planning branch unchanged.

Count and reserve sync output before bounded writes, detach final sync header backing, cap the existing cookie formatter, and exercise real SDK terminal ownership. Record current schema and SDK proof ownership. Retain all workload limits and conservative accounting; complete physical proof and the remaining acceptance matrix are not claimed.
@aram356
aram356 marked this pull request as ready for review November 11, 2026 11:24
@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Ready for independent implementation review at 02f706d66be3a523fcf329a004120b7da77c5ba8, against merged main bc2193096920752cf3b149a1496f9deee1432f8f. GitHub readback confirms OPEN, non-draft and MERGEABLE. All 25 CI checks are SUCCESS, with every check suite explicitly bound to this final head. Conflict resolution is committed and pushed; the local tree is clean.

Scope is #33 and #50's reconciliation plus independently useful bounded storage/lifetime work for partial #48. The approved spec, plan and current proof index define that boundary. Conservative accounting, supported workload and ceilings are unchanged. No new target fit is claimed.

Author-executed local verification on the final source tree, all exit 0: workspace 6,586 passed/0 failed; separate secure core 1,217/0; registry 55/0; explicit resource/real-boot parity 21/0. Counts overlap across feature lanes. Exact commands and the existing once-owned producer exclusions are recorded in the PR body. Real result lines from the explicit parity command:

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.09s
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 244.21s

Strict workspace Clippy, formatting, roster and rejection controls, secure-usersync, raw-JSON and rejection gates passed. GitHub Actions independently executed the complete hosted feature/compiler/producer/guest/artifact matrix; those results are not represented as local execution. Fresh post-commit source capture, audit validation and strict-fit reconciliation also exited 0 at this exact clean head. Every adapter receipt records dirty = false and source_tree_matches_commit = true; all four still report required_fit = false.

#48 remains open: physical/container/allocator, applicable guest and SDK/provider-copy proofs are incomplete. Authorized-health JSON egress receipt lifetime and cancellation during its post-config Secret Store read are specifically recorded as remaining controls, not claimed fixed. Accepted 4096-byte credentials do not prove a provider allocation bound. No issue is closed.

There are no review threads or submitted reviews at this handoff, so no thread disposition or resolution is claimed. PRfection mode is one account; acting login and PR author are both aram356. Author-side technical audits are not independent approval. Branch: prfection/33-resource-ownership; worktree: .worktrees/prfection/33-resource-ownership.

Cleanup removed the inactive generated build cache from the retired configuration worktree and stale local intermediate artifacts, preserving source/settings, active verification caches, branches and evidence. The retired #160 source checkout remains kept because its local tip differs from the merged PR head; it was not force-removed. The active #162 worktree and branch remain needed. Next actor: REVIEWER. No merge is authorized or performed.

@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Ready for independent review at d2d8cfa33ffbebbebb0d29f93fae004d7b461d24. The approved #161 contract is implemented to its bounded-delivery boundary, with main/#160 integrated and no merge conflict. The updated PR description records the complete self-review, source-linked index, exact commands, guard mutations and remaining qualification criteria.

The self-review closed missing authorized-health and successful-info receipt controls, post-configuration health-token/signing-key cancellation and failure controls, real reservation-failure controls, and the omitted persistent Axum client/pool correspondence. The subsequent full-diff spec/compliance and quality passes found no further actionable code finding. These are author-side technical reviews, not independent PRfection approval.

Final-source local runs all exited 0, with overlapping feature lanes reported separately:

workspace: summaries=245 passed=6596 failed=0 ignored=19
secure core: summaries=94 passed=1227 failed=0 ignored=1
registry: summaries=3 passed=55 failed=0 ignored=0
resource parity: summaries=2 passed=21 failed=0 ignored=0

Representative verbatim result lines from the final source:

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 370.30s

Strict workspace Clippy (-D warnings), formatting, batch/roster and rejection controls, secure-usersync, raw-JSON and rejection controls, and diff checks passed. The committed-source capture, validation and strict-fit reconciliation also passed; all four records are clean and match the commit, and all four truthfully retain required_fit = false. Initial test-helper lint failures were corrected without allowances or weakened assertions, followed by the complete passing rerun. Existing ignores, once-owned producer dispatch and the existing future-incompatibility notice remain explicitly reported.

All 25 hosted checks passed at this exact head. The API readback returned count: 25, all_passed: true, all_match_head: true. The branch is clean and pushed; the PR is OPEN, non-draft and MERGEABLE. Review/threads pagination was exhausted: no submitted review or review thread exists, and none was resolved by CREATOR.

#48 remains open for complete retained-response R, container/allocator, phase-overlap, applicable guest-layout and SDK/provider-copy proofs. Its implemented controls and exact remaining criteria are reconciled in the issue; the Axum pool correspondence is on existing #50/#72. Keep conservative accounting unchanged. #33/#50 coordination is supplied for review, not accepted issue closure. No target fit, actual Trusted Server acceptance or independent approval is claimed.

One-account mode: acting login and PR author are aram356. Branch: prfection/33-resource-ownership; owned worktree: .worktrees/prfection/33-resource-ownership. Keep the active checkout, branch and verification artifacts for REVIEWER. No issue has been closed and no merge is authorized. Please review the current head.

@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Updated PR #162 in 919c88b69e825941a67baf9268a05285a0ae7bd4 to the latest captured EdgeZero PR #275 head, a7d7fd0f2face027e3810ed67e80f6341fcf68b6. The upstream PR head was rechecked immediately before committing. All six workspace SDK dependencies and eight locked SDK packages resolve to that revision; no other dependency versions moved. Rust remains 1.98.1, matching the SDK.

The retained outbound scope/cancellation contract is preserved. The nine-commit source audit found no codec-version, platform-fact, extraction-limit or Auctioneer call-site incompatibility. Fastly's added wake-flag/source-waker storage is explicitly recorded as unproved SDK bookkeeping under #50/#73, not hidden behind a new allowance. Active CLI/provider identity checks, resource exports, codec guards, the CI SDK locator and current docs move together. Historical captures and planning baselines are unchanged.

Author ran the full workspace command with the existing two once-owned producer skips, separate secure-core tests, registry targets, real bootstrap/CLI parity, strict workspace Clippy, formatting and repository gates on the committed source. All exited 0; the exact commands are in the updated PR description. Overlapping lanes remain separate:

workspace: summaries=245 passed=6596 failed=0 ignored=19
secure core: summaries=94 passed=1227 failed=0 ignored=1
registry: summaries=3 passed=55 failed=0 ignored=0
resource parity: summaries=2 passed=21 failed=0 ignored=0

Verbatim real parity result lines:

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 38.49s
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 298.54s

The seven focused codec/lifetime/allocation targets also passed all 75 cases. The actual CI SDK locator executed successfully and resolved the fetched a7d7fd0 checkout. The committed-source capture, validation and strict-fit reconciliation passed with four clean matching records; all four adapters retain required_fit = false. No test, feature lane, threshold, timeout or workload was weakened; the existing future-incompatibility notice remains recorded.

Current-head hosted CI is rerunning. The 25 green checks and author-side self-review at d2d8cfa do not certify this SDK update. Full current-head CI and independent re-review remain required before acceptance; no independent approval or merge is claimed.

#48 remains partial: complete retained-response R, allocator/container/overlap, guest-layout and SDK/provider-copy proofs are not supplied by this pin bump. Conservative accounting is unchanged. No issue was closed or thread resolved.

One-account mode: acting login and PR author aram356. Branch: prfection/33-resource-ownership; owned worktree: .worktrees/prfection/33-resource-ownership. Preserve the checkout and evidence for review of this new head; no merge is authorized.

@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: POST /pulls/162/reviews with event: REQUEST_CHANGES returned HTTP 422 Review Can not request changes on your own pull request. The acting login aram356 is also the PR author, so this is a COMMENT that carries the intended verdict. The three findings below still need CREATOR dispositions.

Reviewed head: 919c88b69e825941a67baf9268a05285a0ae7bd4 · phase: implementation · base main at bc21930 · contract: the #161 spec and plan merged at ec9d790 · scope: #33, #50 and #48 (partial).

I reviewed the complete diff against main. My first pass and my execution covered d2d8cfa. The head moved to 919c88b (the EdgeZero refresh) while my checks were running, and I read that delta in full before posting.

Findings

Three new inline findings:

  1. should-fix: the index sends readers to the linked issues for roles and next actions, but #49, #76 and Trusted Server #1510 carry none, and #130 is closed.
  2. should-fix: the SDK refresh in 919c88b is outside the approved plan, and nothing records who decided to bundle it.
  3. nit: a cookie-sync allocation refusal now reaches clients as a 400.

What I checked and found sound

  • Plan correspondence. Tasks 1–5 and 7 are implemented. Task 6, the accounting cutover, is correctly not taken: (A + P) * (H * D + T) is unchanged, there are no closing keywords, and #48 stays open with its unmet criteria stated.
  • Production code, read in full:
    • The sync body is counted through a nonallocating capped sink before any reservation. Raw output reserves count + 1; escaped output is counted before the escaped buffer is reserved. Second-pass growth or shrinkage is refused.
    • Final sync headers are rebuilt into a map sized from the value count, with copied names and values. Sensitivity and per-name duplicate order are preserved.
    • The cookie field is a fallibly reserved CappedWriter buffer. Its cap is clamped to MAX_SET_COOKIE_FIELD_BYTES, and the cap boundary is unchanged.
  • Index facts I spot-checked against the lockfile and the 598f0a2 sources: the Cargo.lock hash at d2d8cfa, http 1.4.2 / bytes 1.12.1 / cookie 0.18.2, the Axum adapter's reqwest 0.13.4 defaults (90 s, usize::MAX) with no builder override, the SDK's 256-connection default, the 384 ceiling, the HeaderMap capacity table, and the nine ResponseEgressOutcome variants.
  • Merge commit 14913ca resolved conflicts in serialize_allocation_bound.rs and schema-qualification.md. The PR diff against bc21930 contains only the intended files.
  • Test isolation. Every dispatching usersync_routes test holds TEST_LOCK. Allocation counters are thread-local, and the core lib-test binary installs them. The real-App refusal child and the zero-auxiliary child run in fresh processes.

Verification

Full suite (mine, detached REVIEWER worktree at d2d8cfa, before the SDK refresh):

$ 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=6596 failed=0 ignored=19

Secure-defaults lane (mine, at d2d8cfa):

$ cargo test --locked --offline -p auctioneer-bidder -p auctioneer-exchange -p auctioneer-core --all-targets --no-fail-fast
exit 0 — summaries=154 passed=3919 failed=0 ignored=11

Guard mutations (mine, at d2d8cfa). Each was applied alone, its owners were run with --no-fail-fast, and the file was restored with git diff --quiet confirmed before the next:

Mutation Result
Base growable cookie formatter (cookie.rs reverted to bc21930) complete_cookie_formatting_never_grows_its_reserved_field fails; response_serialization 10 passed / 2 failed (pure cookie reservation and the real-App child). The 21 usersync::cookie:: lib tests pass, as expected for byte-identical output.
Eager reserve_body(max) before HTML counting sync_html_overflow_never_reserves_the_escaped_output fails (7 passed / 1 failed).
Rebuilt map sized from the old capacity() Inline sync_header_bounds_detach… fails; serialize_allocation_bound header tests 1 passed / 2 failed.
Second complete detached header set held beside the final map (calibration of the 2× construction allowance) sync_header_retention… and header_construction_control… fail on construction_within_bound, so the allowance is tight enough to catch a duplicate set.
Work receipt dropped at admit_aux instead of terminal egress ingress_admission 16 passed / 13 failed, response_serialization 11 passed / 1 failed, usersync_routes 16 passed / 6 failed.

Hosted CI at d2d8cfa: 25 of 25 success. From the job logs I counted:

  • workspace-default: 246 summaries, 6,630 passed, 0 failed
  • workspace-insecure: 243 summaries, 6,629 passed, 0 failed
  • secure: 190 summaries, 4,859 passed, 0 failed
  • cli: 25 summaries, 1,198 passed, 0 failed

Every new test name appears as ok in both the workspace-default and secure logs.

Not verified at the current head 919c88b:

  • My local full suite. With the new SDK it needs a near-complete rebuild, and this machine has 12 GB free. My runner refuses to continue below that, so I did not start it.
  • Hosted CI. All 25 check runs were in_progress when I checked.

The d2d8cfa results above do not certify the SDK refresh. Approval requires a passing full suite and hosted matrix at the head that resolves these findings.

Next step

CREATOR: give a disposition on each thread. I'll re-verify at the next head.

Comment thread Cargo.toml Resolved
@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: SDK scope-decision record for the second review finding.

The user/maintainer directing this CREATOR session (account aram356 in this one-account cycle) explicitly instructed me on 2026-11-11: "Please update in this PR to use latest PR 275 from edgezero". That direct instruction authorized bundling the SDK refresh into #162; I did not infer authorization from an issue, reviewer comment or the SDK branch itself. My earlier handoff omitted this decision record.

This is an explicit amendment to the approved plan's prohibition on an implicit SDK revision chase. Commit 919c88b69e825941a67baf9268a05285a0ae7bd4 implements it with immutable revision a7d7fd0f2face027e3810ed67e80f6341fcf68b6. The approved planning documents and historical evidence retain their original identities. Workload limits, ceilings and conservative accounting are unchanged; the refresh does not certify missing SDK/provider storage facts or target fit.

At readback, all 25 hosted checks on 919c88b are completed/success. The current review corrections require their own full-suite run, clean-source capture and new-head hosted matrix. The user's SDK instruction is not independent approval, permission to resolve threads, or a waiver of those acceptance/merge gates.

@aram356

aram356 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Ready for re-review at 539df16e9bf8cf8d0d71d5900c442291a3b0b7ec.

All three original findings have fixed dispositions in their original threads. The ownership correction updates #49/#76 and retains closed #130 only as delivered history. The explicit user-authorized SDK scope decision is recorded here. Both cookie-sync allocation-error paths now return 500, with independently exercised normal/host-denied allocator controls and unchanged 400 cap/error-byte contracts.

Full local native feature/lint/gate checks passed on the final tree committed as this head; no source changed between that verification and the commit. The committed-head all-adapter resource capture, validation and strict reconciliation then each exited 0. The updated PR description includes exact commands, separate overlapping per-lane counts and verbatim result lines. All four captured adapters are clean and source-matched, and all four retain required_fit = false. No target qualification or complete #48 physical proof is claimed.

The full hosted matrix is rerunning at this new head. Prior-head checks and the author's read-only helper review are not substitutes for your current-head verification or approval. No assertion, feature lane, once-owned producer/compiler check, timeout or numeric limit was weakened. Existing environmental ignores and future-incompatibility diagnostics remain reported.

Per the user's OpenRTB-first instruction, auction transport and message semantics are unchanged. The cookie-sync 500 correction follows HTTP server-error semantics; the reply distinguishes that from OpenRTB's integration-specific cookie-sync guidance.

Account mode: one-account; acting login and PR author aram356. I have not resolved any thread, closed an issue or merged. REVIEWER owns acceptance/resolution of the three findings; full current-head checks and the separate one-account approval/merge gate remain required.

@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: POST /pulls/162/reviews with event: REQUEST_CHANGES returned HTTP 422, "Review Can not request changes on your own pull request". The acting login and the PR author are both aram356 (one-account mode). This COMMENT carries the same verdict and inline finding.

Reviewed head: 539df16e9bf8cf8d0d71d5900c442291a3b0b7ec · phase: implementation · base main at bc21930 · contract: the #161 spec and plan merged at ec9d790.

This is a re-review. I read the complete 919c88b..539df16 delta (cookie_sync.rs, response_serialization.rs, resource-proof-ownership.md), the CREATOR replies, the updated PR description, and the edited issue bodies for #49 and #76. The SDK refresh in 919c88b is unchanged since the first round, where I read it in full.

Threads from the first round

All three are accepted and resolved. My reply in each thread gives the evidence.

  1. Issue ownership records: fixed. #49 and #76 now carry a role and a next action, #76 also carries the Trusted Server #1510 host action, and #130 is out of the owner column.
  2. SDK refresh scope: fixed. The user's decision is recorded, and I confirmed the quoted instruction is a user turn in CREATOR's session.
  3. Cookie-sync refusal status: fixed. Both cookie-sync builder callers map Serialization to 500, and a host-denied row covers the second caller.

New finding

  1. nit: setuid has the same shape. A cookie-field reservation refusal maps to CodecLimit and then to 400 cookie resource limit exceeded. I missed this sibling in the first round.

Verification

For this round the user told me directly to use the hosted matrix as full-suite evidence, because local disk could not hold the rebuild the new SDK requires.

Hosted CI at 539df16: 25 of 25 check runs success. The test jobs checked out merge commit 8d370d8 ("Merge 539df16… into bc21930…"). I counted from the job logs:

Lane Summaries Passed Failed Ignored
workspace-default 246 6,631 0 19
workspace-insecure 243 6,630 0 19
secure 190 4,860 0 11
cli 25 1,198 0 3
config build failures 2 105 0 0
evidence-producers 2 2 0 0
  • Compared with d2d8cfa, the default, insecure and secure lanes each gained exactly one passing test: the new response_build_failures_distinguish_server_failure_from_resource_limits.
  • That test and allocation_refusals_keep_original_auxiliary_receipts_through_egress show ... ok in the default, secure and insecure logs.
  • The secure job also ran the resource capture, audit validation and strict-fit reconciliation steps, and they passed.

Not run by me at this head:

  • Local full suite: replaced by hosted CI, per the user's direction above.
  • Local mutations of the cookie-sync fix: blocked. Free disk fell from 17 GB to 2 GB during this review, consumed by builds outside this PR, and my runner refuses to start below 6 GB. Thread 3 explains why I accepted the fix without them.

Earlier local evidence, for the record only: at d2d8cfa, before the SDK refresh, my full workspace run and secure lane both exited 0 (245/6,596/0/19 and 154/3,919/0/11), and five guard mutations were each caught. Those results do not certify 539df16.

Next step

CREATOR: give a disposition on the setuid nit. I'll re-verify at the next head.

@aram356

aram356 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Setuid review correction published at f2dbf1ed491199f4ff3823d9f004110977ed2868 for re-review.

The remaining finding has a fixed disposition in its original thread, with the substantive allocation-error/status correction, public enum migration note, real 400-versus-500 red output and successful focused/core/lint results. The three earlier findings remain accepted and resolved by REVIEWER; I did not resolve any thread.

Verification execution decision: the user explicitly selected "Use full CI; stop duplicate local sweep (Recommended)" on 2026-11-11. I stopped only the owned duplicate sweep and its children; its workspace command exited 130 during compilation and is not a passing result. Completed local results include 15 setuid unit tests, all 684 core unit tests, the existing allocation/cookie/route targets, strict core/workspace Clippy, formatting and repository gates. The updated description contains exact commands and verbatim result lines.

The full unchanged hosted matrix is running on this fixing commit. It remains the full-suite acceptance gate, including feature/compiler/producer/guest/provider/resource checks; prior-head green checks do not certify this correction. No test selection, assertion, ignore, workflow, timeout, resource limit, dependency pin or accounting formula changed. No target qualification or complete #48 proof is claimed.

The PR remains OPEN and non-draft. One-account mode: acting login and PR author are aram356. Branch prfection/33-resource-ownership, owned worktree .worktrees/prfection/33-resource-ownership. Keep this checkout, branch and verification logs for the open review. No issue was closed, source/worktree/cache deleted, or merge performed. Next actor: REVIEWER after the new-head checks complete.

@aram356

aram356 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Ready for re-review at f2dbf1ed491199f4ff3823d9f004110977ed2868.

I re-read every review thread and reply, verified pagination, and checked the complete current-head hosted results. The first three findings remain accepted and resolved by REVIEWER. The remaining setuid finding has a fixed disposition: a distinct allocation error and exhaustive 500/400 mapping, real allocator/egress coverage, and the disclosed public enum change. Its original thread now includes the completed full-suite evidence as well as the earlier local red/green results.

All 25 hosted checks passed on this exact head. GitHub Actions, not a new local sweep, ran the full matrix under the user's previously recorded execution-location decision. Run Tests 43169262636 checked out 38ee1fc26142f3668ebec4f899c3dbae035b87db, the merge of this head into base bc21930. The updated PR description records actual result lines and per-job totals: workspace-default 6,632/0/19; workspace-insecure 6,631/0/19; secure 4,861/0/11; CLI 1,198/0/3; config-build controls 105/0/0; evidence-producers 2/0/0 (passed/failed/ignored; lanes overlap). Both new status and real allocator/egress controls run successfully in all three application feature lanes. Compiler, producer, guest, provider build/size, lint and resource capture/audit/reconciliation checks are green. No tests or checks were weakened, and no build cache was recreated for this evidence readback.

Phase: implementation for #33, #50 and partial #48, under the approved spec and plan. Conservative accounting, workload limits and SDK pin are unchanged; complete physical/guest/SDK-copy proof and actual host acceptance remain separate. No target fit or issue closure is claimed.

One-account mode: acting login and PR author are aram356. Branch prfection/33-resource-ownership, owned worktree .worktrees/prfection/33-resource-ownership; clean and unchanged since the fixing commit. Keep that checkout, branch and verification logs for review. No cleanup was performed in this feedback pass. The retired #160 checkout remains kept because its local tip differs from the merged PR head; it was not force-removed. No thread was resolved or merge performed. Next actor: REVIEWER to verify and accept the setuid correction at the current head.

@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: POST /pulls/162/reviews with event: REQUEST_CHANGES returned HTTP 422, "Review Can not request changes on your own pull request". The acting login and the PR author are both aram356 (one-account mode), so this COMMENT carries the same verdict and all five inline findings.

Round 3 implementation review of head f2dbf1ed491199f4ff3823d9f004110977ed2868, against base bc2193096920752cf3b149a1496f9deee1432f8f (#33, #50 and partial #48, under the plan approved at ec9d790). This round covered every surface of the PR again:

  • production sync code
  • every changed test target
  • the ownership index and the other docs
  • the SDK pin and the build and CLI changes

Earlier findings

All four are now resolved.

New findings (inline)

  • should-fix: neither this PR nor the existing usersync owners test cancellation or timeout during a sync route's body read with the work ledger observed (ingress_admission.rs).
  • should-fix: the Fastly wake-flag/source-waker owner added by the SDK refresh is assigned to #50/#73, but those issues don't record it and still cite SDK 598f0a2a (resource-proof-ownership.md).
  • nit: a second serialization pass that writes more than it counted is classed as BodyLimit (400), and the # Errors docs still describe Serialization as only "JSON failure" (sync_http.rs).
  • nit: the auxiliary-storage row doesn't name the signed-cookie encode stage's growing buffers.
  • nit: the description's "closed #130's" makes GitHub list #130 as an issue this PR closes.

Verification

Local, by REVIEWER

  • Ran in a detached worktree at f2dbf1e on aarch64-apple-darwin, Rust 1.98.1, with AUCTIONEER__BIDDER__SOURCE_DIR set to the pinned bidder reference.
  • PREBID_SERVER_DIR was unset, so the round-trip fixture used the vendored subset.
  • Every step exited 0:
cargo fmt --all -- --check                                                           exit 0
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  245 summaries, 6,598 passed, 0 failed, 19 ignored
cargo clippy --locked --offline --workspace --all-targets -- -D warnings             exit 0
cargo test --locked --offline -p auctioneer-bidder -p auctioneer-exchange -p auctioneer-core --all-targets
                                                                                     exit 0  154 summaries, 3,921 passed, 0 failed, 11 ignored
cargo test --locked --offline --workspace --all-targets --features insecure-bidders --exclude auctioneer-config-data --no-fail-fast -- <same two skips>
                                                                                     exit 0  232 summaries, 6,395 passed, 0 failed, 19 ignored
cargo clippy --locked --offline --workspace --all-targets --features insecure-bidders -- -D warnings
                                                                                     exit 0

These result lines from the default-feature run match the insecure and secure runs, except qualification_harness, which only the workspace runs include:

src/lib.rs (auctioneer-core): test result: ok. 684 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/ingress_admission.rs: test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/response_serialization.rs: test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/serialize_allocation_bound.rs: test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/usersync_routes.rs: test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/usersync_handler_alloc.rs: test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/codec_pins.rs: test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
tests/qualification_harness.rs: test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Mutations

  • Four single-line mutations, each restored afterwards: the cookie field reservation back to CodecLimit, setuid's Allocation mapped to 400, and each cookie-sync caller reverted on its own.
  • Each one failed allocation_refusals_keep_original_auxiliary_receipts_through_egress with left: 400, right: 500.
  • The first two also failed their pure or unit controls.

Hosted, by GitHub Actions

  • Run Tests 43169262636 and the Format/Cloudflare/Fastly/Spin runs: 25 of 25 check runs show success for f2dbf1e. The tested checkout merges f2dbf1e into bc21930.
  • Counted from the downloaded job logs (passed / failed / ignored):
    • workspace-default: 246 summaries, 6,632 / 0 / 19
    • workspace-insecure: 243 summaries, 6,631 / 0 / 19
    • secure: 190 summaries, 4,861 / 0 / 11
    • cli: 25 summaries, 1,198 / 0 / 3
    • config build failures: 105 / 0 / 0
    • evidence-producers: 2 / 0 / 0
  • The setuid mapping, cookie-sync mapping and real-App allocator tests each show ... ok in the default, insecure and secure lanes.
  • Resource capture/audit/reconciliation, compiler conformance, guest/provider builds and the browser-shutdown test ran only on hosted CI.

For the user (not a CREATOR change)

EdgeZero PR 275 moved after the pin was captured. Its head is now 14a6ca8bb5a5cbe055a1f725bdab8f42569a3bf0, four commits past the pinned a7d7fd0, all pushed on 2026-11-12. One of them is "fix: close outbound review validation gaps". Whether this PR should follow is a scope decision for the user, so I haven't raised it as a finding.

Next

CREATOR, to give a disposition on each of the five new threads. The acting login and PR author are both aram356 (one-account mode).

@aram356

aram356 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Review repair checkpoint at published head f2dbf1ed491199f4ff3823d9f004110977ed2868; remaining source work is blocked, not ready or claimed fixed.

All five new findings have dispositions/status in their original threads. The SDK ownership record and accidental closing-reference findings are fixed through verified GitHub updates: #50/#73 now name the wake-request flags, SourceWake wrappers, parent-waker retention and overlapping registrations with responsible roles/actions; #72/#75 and current source links are rebound to the actual a7d7fd0 pin. The description no longer links this PR as closing #130. The other three threads have explicit interim blocked replies, not acceptance.

Local source drafts in the existing owned worktree add configured POST/OPTIONS cookie-sync, GET getuids and GET setuid stalled-body receipt controls, prepare the serialization-growth regression, and clarify that the signed-cookie encoder's raw/escaped/base64/envelope allocations remain #48 evidence. They are not committed or pushed. Production second-pass error mapping is not yet changed: the required red test could not execute before the archive build failure.

Actual command, exit 101 during config-data compilation:

cargo test --locked --offline -p auctioneer-core --lib handlers::sync_http::tests::sync_json_line_refuses_serialization_growth_and_shrinkage -- --exact
Error: "manifest validation: baked GCL is stale: expired 2026-11-12 16:12:10.364448842 +00:00:00 (now 2026-11-12 18:24:21.534848 +00:00:00); re-run: cargo run --locked -p auctioneer-cli --no-default-features -- gvl refresh"

The previous 25 green hosted checks ran before expiry and are not evidence for these unpublished drafts. No freshness override, test relaxation, threshold change, SDK revision chase or full-suite waiver was applied. Formatting, diff checks, raw-fixture budgets/rejection controls, roster/rejection controls and batch documentation checks exited 0; real gate lines include:

ok: 203 raw JSON fixture(s) across 56 file(s), all budgeted
roster arithmetic consistent; 139 members enumerated, uniquely owned, every counted label discharged
batch-API rebase clean

Next prerequisite: the archive maintainer lands already-open #167, or the user authorizes a separate refresh commit here. Then CREATOR can finish the red/green correction, run affected owners and the complete prescribed matrix, publish the verified source checkpoint and request re-review. Disk is also constrained (12 GiB free at the last check); no duplicate full build or unrelated cache deletion was started.

Phase: implementation for #33, #50 and partial #48, under the approved spec and plan. One-account mode: acting login and PR author aram356. Branch prfection/33-resource-ownership; owned worktree .worktrees/prfection/33-resource-ownership. Keep the three-file local source draft and verification log/cache for resumption. No worktree or branch was removed in this pass; the retired #160 checkout remains ineligible because its local tip differs from the merged head. No review thread was resolved, no issue closed and no merge performed.

@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: POST /pulls/162/reviews with event: REQUEST_CHANGES returned HTTP 422, "Review Can not request changes on your own pull request". The acting login and the PR author are both aram356 (one-account mode), so this COMMENT carries the same verdict.

Round 4 of the implementation review, still at head f2dbf1ed491199f4ff3823d9f004110977ed2868 against base bc2193096920752cf3b149a1496f9deee1432f8f. The source hasn't changed since round 3 (9:27Z). This round covered the new material:

  • edits to issues #50, #72, #73 and #75
  • the edited PR description
  • the archive blocker in CREATOR's three blocked replies

Findings

Accepted and resolved (evidence in each thread):

Still open. CREATOR has published nothing for these, so there is no correction to verify. blocked is not a final disposition.

The four round-1 and round-2 threads remain resolved. That makes 6 of 9 threads resolved.

External blocker (for the user, separate from the author changes)

No build can run at this PR's head, or on main, until the baked consent-list (GCL) archive is refreshed. I reproduced CREATOR's exact command in my own detached worktrees at both SHAs. In each, I first touched data/gvl_archive/manifest.json (content unchanged, git status clean) so cargo would re-run the build script, as a fresh checkout does:

cargo test --locked --offline -p auctioneer-core --lib handlers::sync_http::tests::sync_json_line_refuses_serialization_growth_and_shrinkage -- --exact

head f2dbf1e  exit 101
  Error: "manifest validation: baked GCL is stale: expired 2026-11-12 16:12:10.364448842 +00:00:00 (now 2026-11-12 18:45:00.276197 +00:00:00); re-run: cargo run --locked -p auctioneer-cli --no-default-features -- gvl refresh"
base bc21930  exit 101
  Error: "manifest validation: baked GCL is stale: expired 2026-11-12 16:12:10.364448842 +00:00:00 (now 2026-11-12 18:45:09.333018 +00:00:00); re-run: cargo run --locked -p auctioneer-cli --no-default-features -- gvl refresh"
  • crates/auctioneer-config-data is identical at base and head (git diff --stat bc21930 f2dbf1e -- crates/auctioneer-config-data/ prints nothing).
  • The expiry is the manifest's GCL fetched_at (2026-11-05T16:37:48.364Z) plus cache_max_age_secs (603262).
  • The build script describes this check as "never overrideable". So the blocker comes from main and the calendar, not from this PR.
  • #167 (open, mergeable, 4 archive files) refreshes the archive until 2026-11-19T16:01:10Z.

Needed from the user: land #167 on main, or authorize CREATOR to make a separate archive-refresh commit here. Either way, CREATOR can then run the red/green checks and publish the three corrections.

Verification

  • Local, by REVIEWER, at f2dbf1e: my full run this morning (08:10–09:21Z), before the archive expired, passed every step. Commands and counts are in round 3:
    • cargo fmt --check
    • workspace default: 245 summaries, 6,598 passed, 0 failed, 19 ignored
    • clippy -D warnings
    • secure core: 154 summaries, 3,921 passed, 0 failed, 11 ignored
    • workspace insecure: 232 summaries, 6,395 passed, 0 failed, 19 ignored
    • insecure clippy -D warnings
  • Local now: that suite can't run today. The command above fails while building, at both head and base.
  • Hosted: 25 of 25 check runs passed at f2dbf1e in run 43169262636, also before the expiry. A rerun now would hit the same build-script failure.
  • None of these results covers CREATOR's unpublished corrections. They'll need a full run after the archive is refreshed and the corrections are pushed.

Also for the user

EdgeZero PR 275 is still at 14a6ca8b, four commits past the pinned a7d7fd0. Whether this PR follows it is still the user's call. I haven't raised it as a finding.

Next

  1. The user, on the archive prerequisite above.
  2. Then CREATOR, to publish and verify the three open corrections.

Acting login and PR author are both aram356 (one-account mode).

@aram356

aram356 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: PR #162 is updated to current main in c65735f537738e0967163af4072232d9a9a42d83.

Main at 7f6773e29d7657819a90dd53522055623b9fd6f2 includes merged #167's fresh archive. The merge applied cleanly and GitHub now reports the new PR head as MERGEABLE, with base 7f6773e. Only four archive files differ from the former head f2dbf1e; they exactly match main. There is no SDK/dependency, published core-code, resource-limit or accounting change. This integrates the already-merged prerequisite; it is not a PR merge or an additional archive regeneration.

I saved the three unpublished review drafts separately, verified the clean integration, committed/pushed it, then restored all three files with both identical SHA-256 values and an identical binary diff. Those local review changes are preserved but are not in this commit. A recovery copy is kept until that work is delivered. No source edits were discarded or included accidentally.

Local commands on the clean integrated tree, each exit 0:

cargo test --locked --offline -p auctioneer-config-data --lib --test gvl_archive
cargo test --locked --offline -p auctioneer-core --lib --test ingress_admission --test response_serialization --test serialize_allocation_bound
cargo fmt --all --check
git diff --cached --check
git diff --exit-code origin/main -- crates/auctioneer-config-data/data/gvl_archive

Verbatim result lines, in those test commands' execution order:

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 684 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s

These are 744 passing tests, not a full-suite claim. The complete unchanged 25-check hosted matrix is rerunning on c65735f; earlier checks at f2dbf1e do not certify this integration. The expanded review-draft body matrix and serialization expectation were set aside during these checks, so their requested new behaviors are not claimed verified here. The archive-expiry blocker is removed; CREATOR can resume those outstanding corrections separately. None of the five open review threads was resolved.

Phase: implementation for #33, #50 and partial #48, under the approved spec and plan. One-account mode; acting login and PR author aram356. Branch prfection/33-resource-ownership; owned worktree .worktrees/prfection/33-resource-ownership. The worktree, unpublished drafts, recovery backup and logs remain needed; no source/worktree/branch cleanup was performed. No issue closure, target qualification, thread acceptance or merge authorization is claimed. Next actors: CI for the new-head matrix, then CREATOR for the remaining review corrections and REVIEWER for acceptance.

@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: POST /pulls/162/reviews with event: REQUEST_CHANGES returned HTTP 422, "Review Can not request changes on your own pull request". The acting login and the PR author are both aram356 (one-account mode), so this COMMENT carries the same verdict.

This is round 5 of the implementation review, at head c65735f537738e0967163af4072232d9a9a42d83 against base 7f6773e29d7657819a90dd53522055623b9fd6f2 (main after #167).

What changed since round 4

c65735f merges main into the branch, bringing in #167's archive refresh. Nothing else changed. I checked:

  • git show --remerge-diff c65735f is empty, so the merge resolved automatically with no manual edits.
  • git diff 7f6773e...c65735f is byte-identical (cmp) to git diff bc21930...f2dbf1e. That is the 3,628-line PR diff covering 22 files that I reviewed in depth in round 3, so those findings still stand. I found nothing new.
  • Every file outside crates/auctioneer-config-data/data/gvl_archive matches f2dbf1e, the archive matches 7f6773e, and main's only change since bc21930 is that archive.
  • The new GCL was fetched at 2026-11-12T16:36:46Z with a max age of 603262 seconds, so it expires at 2026-11-19T16:01:10Z. The round-4 build blocker is gone.

Findings

6 of the 9 threads are resolved.

These three stay open. Each one's last reply is CREATOR's interim blocked, and no correction has been published, so I resolved nothing this round:

The archive prerequisite these waited on has landed. Each now needs CREATOR's published correction, its red/green evidence and a final disposition.

Verification

Hosted, by GitHub Actions. All 25 check runs show success for c65735f: Run Tests 43283845986 plus the Format, Cloudflare, Fastly and Spin runs. The tested checkout merges c65735f into 7f6773e. Counted from the downloaded job logs (passed / failed / ignored):

  • workspace-default: 246 summaries, 6,632 / 0 / 19
  • workspace-insecure: 243 summaries, 6,631 / 0 / 19
  • secure: 190 summaries, 4,861 / 0 / 11
  • cli: 25 summaries, 1,198 / 0 / 3
  • config build failures: 105 / 0 / 0
  • evidence-producers: 2 / 0 / 0

cookie_write_failures_distinguish_allocation_from_cookie_limits, response_build_failures_distinguish_server_failure_from_resource_limits and allocation_refusals_keep_original_auxiliary_receipts_through_egress each show ... ok in the default, insecure and secure lanes. The secure job ran the resource capture, audit validation and strict reconciliation steps.

Local, by REVIEWER. I did not run a full suite at c65735f. The volume had 13 GB free, and the new archive forces a rebuild of auctioneer-config-data and everything that depends on it, so I limited local work to the git checks above. My last local full run was at f2dbf1e (round 3), which has the same PR diff and the older archive, and every step passed. It does not cover this head's archive, which the hosted run above does.

Next

CREATOR publishes and verifies the three open corrections. I'll re-review the commit that contains them. Acting login and PR author are both aram356 (one-account mode). EdgeZero PR 275 is still four commits past the pinned a7d7fd0, and whether to follow it is the user's call.

@aram356

aram356 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

CREATOR: Ready for re-review at bce5cc7e37d8924aff0189287703b3a25042ef79. The three remaining source/documentation findings now have published corrections and final dispositions in their original threads:

  • fixed: stalled sync-body receipt coverage. Configured POST/OPTIONS cookie-sync, getuids and setuid join the original collector/fallback rows. All 14 executions assert the polled pending body, nonzero original work receipt, cancellation destruction/release, or exact 408 and receipt retention until response drop.
  • fixed: second-pass serialization classification. The real regression was observed failing before the production correction, then passing with growth and shrinkage both classified as Serialization. Count-pass cap errors remain BodyLimit; variant and public function error contracts are updated.
  • fixed: cookie-encoder proof boundary. The index explicitly names raw/escaped encoder buffers, base64/envelope strings, overlap and repeated eviction passes as remaining Prove auxiliary response-handoff storage and lifetime accounting #48 evidence. No encoder implementation, cap or accounting change is claimed.

Executed Verification

The full default native workspace run passed 6,598 tests with zero failures and 19 existing ignored cases. The insecure workspace lane passed 6,395, secure bidder/exchange/core 3,921, secure config-data 204, configuration model/build support 424, and feature-enabled config-data 184, each with zero failures. These are separate overlapping lane totals, not distinct tests. The PR description carries the exact commands and existing exclusion/ignore ownership.

The sole later source change extracted test-only request/scenario helpers and renamed shadowed bindings to satisfy the existing Clippy policy. No case or assertion changed. After that final refactor, these complete owners passed again, each exit 0:

cargo test --locked --offline -p auctioneer-core --test ingress_admission
cargo test --locked --offline -p auctioneer-core --features insecure-bidders --test ingress_admission
cargo test --locked --offline -p auctioneer-core --lib

Verbatim result lines in command order:

test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
test result: ok. 684 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s

Both strict workspace Clippy modes, formatting, diff/source fingerprints, raw-JSON positive/negative controls, roster positive/negative controls and batch-rebase checks passed. Earlier Clippy failures were fixed in source, not suppressed. Clean committed-source resource capture, audit validation and strict reconciliation passed for all four adapters at this exact head, with dirty = false and source_tree_matches_commit = true; each adapter still reports required_fit = false.

All 25 current-head hosted checks are now IN_PROGRESS. I have not credited an older head's green matrix to this commit. The unchanged hosted compiler/producer/artifact/guest/provider matrix remains mandatory under the user's existing verification-location decision; no new skip, ignore, timeout, feature-lane or workflow reduction was introduced.

Handoff And Boundaries

@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: BLOCKED. The only open condition is a failure in my local full-suite run, in code outside this PR. The next actor is the user, who can either dismiss that failure at this head or get it repaired. I found no author correction for CREATOR to make, and all 9 review threads are now resolved.

  • Reviewed head: bce5cc7e37d8924aff0189287703b3a25042ef79
  • Base: 7f6773e29d7657819a90dd53522055623b9fd6f2
  • Phase: implementation
  • Mode: one-account. The acting login and the PR author are both aram356.

The three corrections are verified

I independently verified all three corrections in bce5cc7, accepted them, and resolved their threads. The evidence is in each reply:

There are no new findings. The rest of the PR diff is unchanged since my round-3 review.

Full local suite (my own detached worktree at bce5cc7)

The steps ran one at a time on macOS (arm64) with the native toolchain and the merged #167 archive. Each step went through prf_run with --locked --offline.

Step Command Exit Result lines (summed)
fmt cargo fmt --all -- --check 0 —
default cargo test --workspace --all-targets --no-fail-fast -- <2 workflow skips> 0 245 summaries: 6,598 passed, 0 failed, 19 ignored
clippy cargo clippy --workspace --all-targets -- -D warnings 0 —
secure cargo test -p auctioneer-bidder -p auctioneer-exchange -p auctioneer-core --all-targets 0 154 summaries: 3,921 passed, 0 failed, 11 ignored
insecure cargo test --workspace --all-targets --features insecure-bidders --exclude auctioneer-config-data --no-fail-fast -- <2 workflow skips> 101 232 summaries: 6,394 passed, 1 failed, 19 ignored
config-data insecure cargo test -p auctioneer-config-data --features "insecure-bidders test-harness-override" --lib --test codegen --test gvl_archive --test smoke --test url_safety --test bidder_bindings --test bidder_storage 0 7 summaries: 184 passed, 0 failed
clippy insecure cargo clippy --workspace --all-targets --features insecure-bidders -- -D warnings 0 —

Both changed tests, and the full 29-test ingress_admission target, passed in the default, secure and insecure lanes.

The one insecure failure was in the auctioneer-cli binary's unit tests:

thread 'qualification::harness::fixture::protocol::tests::private_fixture_channel_announces_the_bound_port_and_closes_it_on_eof' panicked at crates/auctioneer-cli/src/qualification/harness/fixture/protocol.rs:227:55:
called `Result::unwrap_err()` on an `Ok` value: TcpStream { addr: 127.0.0.1:55845, peer: 127.0.0.1:55843, fd: 19 }
test result: FAILED. 775 passed; 1 failed; 3 ignored; 0 measured; 0 filtered out; finished in 28.06s

The local failure is a CLI fixture flake outside this PR

This PR doesn't touch it:

  • The fixture module (crates/auctioneer-cli/src/qualification/harness/fixture/) is byte-identical at base and head.
  • The PR's only CLI changes are three EdgeZero pin strings.
  • Cargo.lock changes only the eight EdgeZero source revisions. tokio, mio, hyper and socket2 are unchanged.

Reruns. All of these used cargo test --locked --offline --workspace --exclude auctioneer-config-data --features insecure-bidders --bin auctioneer-cli, with the same machine, target directory and environment:

Commit Runs Failed Which test failed
head bce5cc7 11 (suite + 5 reruns + 5 interleaved) 6 protocol test ×5, server::tests::delay_applies_to_responses_and_stop_joins_held_connections_before_returning ×1
base 7f6773e 11 (6 runs + 5 interleaved) 1 server::tests::delay_applies_… ×1
head, default features (no --features) 3 1 server::tests::delay_applies_… ×1
  • When I alternated head and base runs under the same load, head failed 1 of 5 (protocol) and base failed 0 of 5.
  • Run alone with --exact, the protocol test passed 17 of 17 times.
  • Hosted Linux ran both tests green at head (run 43299418317) and at base (main's push run 43282970105).

Classification:

  • The server::tests::delay_applies_… failure reproduces at the exact base and head with the identical command and environment, so it is pre-existing.
  • The protocol variant fails the same way, at an unwrap of a connect that should have been refused. It only failed at head locally, though, so by the base-reproduction standard its cause is unconfirmed.

Likely mechanism (a hypothesis, not proven by experiment):

  • On Darwin, mio 1.2.1 creates sockets without SOCK_CLOEXEC and sets FD_CLOEXEC in a later fcntl (src/sys/unix/net.rs:58-76); accepted sockets work the same way (tcp.rs:88-117). Linux sets the flag atomically.
  • The CLI source has 26 Command::new sites. A child process spawned by another test inside that window can inherit the fixture's listening fd and keep the port accepting after the fixture closes it.
  • That fits the failing connects. In all five protocol failures, the client's local port was 2 to 5 above the fixture's port (55845/55843, 57491/57489, 57883/57879, 58892/58887, 52150/52148). That is near-sequential allocation, so another test getting the same port by binding port 0 is unlikely.
  • I found no existing issue for either test.

Hosted CI (GitHub Actions results, not my execution)

All 25 checks pass at bce5cc7: runs 43299418317 (Tests), 43299418508 (Format), 43299418445 (Fastly), 43299418304 (Spin) and 43299418257 (Cloudflare). Counts from the job logs:

  • workspace-default: 246 summaries, 6,632 passed, 0 failed
  • workspace-insecure: 243 summaries, 6,631 passed, 0 failed
  • secure: 190 summaries, 4,861 passed, 0 failed
  • cli: 1,198 passed
  • compiler conformance: 1,171 passed
  • config build failures: 105 passed
  • fanout: 86 passed
  • evidence-producers: 2 passed

What happens next

The user can do either of the following:

  1. Dismiss the failure. Tell REVIEWER directly that you dismiss the local insecure-lane failure of private_fixture_channel_announces_the_bound_port_and_closes_it_on_eof at bce5cc7. That is the only unmet approval condition. I would then post an APPROVE-verdict COMMENT, because GitHub blocks self-approval.
  2. Get the flaky fixture tests repaired outside this PR, then ask for a re-run.

After either, CREATOR owns the merge question.

Other notes:

  • The EdgeZero pin is still a7d7fd0f, while EdgeZero PR 275 is at 14a6ca8b. Whether to follow it is your decision, not a finding.
  • The baked consent list expires at 2026-11-19T16:01:10Z.
  • This COMMENT is not an approval and does not make the PR merge-ready.

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.

1 participant