Skip to content

docs: record Pingora parked-read shutdown supplier gap - #47

Draft
seonghobae wants to merge 38 commits into
docs/request-header-admission-gap-v1from
docs/shutdown-notify-gap-v1
Draft

docs: record Pingora parked-read shutdown supplier gap#47
seonghobae wants to merge 38 commits into
docs/request-header-admission-gap-v1from
docs/shutdown-notify-gap-v1

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Documentation-only successor to final #44. This PR does not implement or close pingora-gateway#46, cloudflare/pingora#844, or cloudflare/pingora#969.

Dependency root

Final #44 is unchanged at c026e1c8f419c6c5035a36518c3d482dfe7ff8a8. Its exact CI 34286468359, Supply Chain 34286468411, and PgErd bounded-origin capacity 34286468507 are terminal GREEN. Capacity artifact 10079870584 (sha256:c9c578aded6d49cfb23b14f27671dffcdaad94bc55aca94148642e784e7c35b5) is source-bound to that exact head and records 1600 requests, 3200/3200 checks, zero HTTP request failures, aggregate p95 4.01235475 ms, backend p95 4.04371395 ms over 800 requests, and frontend p95 3.96607155 ms over 800 requests. Those controlled-loopback receipts belong to #44 only and do not transfer to this changed child.

Current exact #47 head is 62e8369ba52234229c0b6af817c59d47a5e32bf5. Final #44 is the exact configured base and merge base; compare is ahead 38 / behind 0. The effective diff is ten writer-safe documentation paths only: ARCHITECTURE.md, CHANGELOG.md, OPERABILITY.md, SECURITY.md, TEST_STRATEGY.md, THREAT_MODEL.md, TRD.md, Proposed ADR 0011, focused shutdown traceability, and docs/product-technical-gap-baseline.md. No force-push, destructive rebase, production Rust, workflow semantics, product auth/business logic, routing, retries, Keyverse, Wardnet, EgressWeave, or consumer source is introduced.

Valid supplier finding

Protected public Pingora main@09696b51bc59315353d96686355861604d0bb48c has each HttpProxy instance own one shared tokio::sync::Notify for the HTTP/1 reads handled by that instance while parked waiting for a request. Upstream cloudflare/pingora#844 reports 65.66% combined off-CPU futex wait in the shared waiter path on a 128-core x86 NUMA host and is Accepted only into Cloudflare's internal line; that status is not a public immutable release. Public PR #969 remains open/unmerged and currently dirty against public main.

Independent #969 review transplanted the lost-wakeup regression to public 09696b51...: the regression fails on main, and an independent 300-round × 8-task jitter harness fails at round 0 on main and passes 300/300 on the PR head. The same review identified non-promotable baggage/uncertainty in the contributor branch: an unrelated audit-policy delta and shard sizing from host available_parallelism() rather than Pingora's configured service-worker topology. The contributor branch is evidence only and is not consumed, pinned, or vendored here.

#46 remains a separate Runtime Isolation / graceful-shutdown owner gap. It is distinct from #43/#993 downstream H1 parser byte/count admission, #45/#447 downstream H1 whole-request-header lifetime, #40/#992 upstream response-header lifetime, and #20's already-admitted in-flight SIGTERM drain evidence.

Succession repairs in this head

Fresh parent-current inspection found two valid restack omissions and repaired them instead of closing the child.

First, an intervening #47 baseline rewrite had reintroduced stale pre-repair state after #44 moved: retained slices were again described as hosted GREEN pending, the obsolete historical #19 package-both-binaries design reappeared, old moving .github authority was copied into the durable baseline, and final #44 exact closure disappeared. Intermediate 2649f1a2235c2d8c2aefa6ae5f33a886215df173 repaired the authority but compressed too much retained baseline history, so it was not treated as final. Follow-up 742169f7acd9844762fdedff12a33c464475dd00 restored the final #44 baseline and reapplied only the #47 parked-read delta. Final base-to-head baseline patch is limited to 14 additions / 6 deletions and preserves the retained #12#44 contracts.

Second, the parent-correct restack had omitted the historical #47 TEST_STRATEGY.md acceptance from 0b81e275... plus the later per-HttpProxy ownership correction from 8ac749d8.... Current 62e8369... restores that valid delta on the final #44 tree: exact compiled generic and pg-erd RED, many new/reused parked keep-alive connections, adversarial SIGTERM jitter around waiter registration, separate high-concurrency contention characterization, shutdown wall-time/CPU/off-CPU evidence where available, and GREEN only on immutable/released maintainer integration or separately governed provenance-bound backport with zero parked-read survivors and preserved admitted in-flight drain. If a repair shards waiters, acceptance profiles actual configured worker/runtime topology rather than assuming host available_parallelism() equals service workers. Sensitive request/product payload is not needed for this evidence.

ADR 0011 remains Proposed. Shorter grace, fewer workers/connections, disabled keep-alive, callback workarounds, contributor-branch pinning, or copied supplier internals cannot manufacture GREEN.

Exact-head technical closure for the documentation projection

Exact 62e8369ba52234229c0b6af817c59d47a5e32bf5 now has terminal hosted GREEN across all applicable current-head gates:

  • CI 34293088208: test 102283777519, oci-runtime 102283777692, and load-contract 102283777761 all terminal success. The test lane passed exact checkout, Rust 1.98.0 formatting/compile/test, strict lint, warnings-denied rustdoc, pinned coverage tooling, owned-production coverage enforcement, and resolved-lock evidence. OCI rebuilt both admitted images and re-exercised non-root/read-only/capability-free runtime. Load rebuilt the exact gateway/Rust origins and passed generic plus routed pg-erd k6 acceptance.
  • Supply Chain 34293088111 / candidate-evidence 102283775356: committed dependency audit, both candidate image builds, SPDX dependency SBOM, both image scans, exact-source binding, and evidence upload all terminal success.
  • PgErd bounded-origin capacity 34293088138: exact Rust 1.98.1 candidate and Rust origins, one-worker serialization self-check, then 16-VU/1600-iteration measurement all terminal success. Artifact 10082166631, digest sha256:725e70cb7992b3e3010a95b4aaaac76f0cde98f5cc341500df622ce1a69b174c, records 1600 requests, 3200/3200 checks, zero HTTP request failures, aggregate p95 2.76302115 ms, backend p95 2.6450837 ms / 800, and frontend p95 2.8390461 ms / 800. This is controlled-loopback origin-capacity/connection-churn evidence, not production/TLS/WAN SLO credit.
  • Exact-current technical review 5148285805 covers c026e1c8...62e8369b, reports no new actionable source/documentation/DDD finding after the two succession repairs, and is anchored to this exact head. There are no inline review threads. It is a technical COMMENT, not an independent APPROVED governance review.

This closes the #47 documentation projection on unchanged exact-head technical evidence. It does not close #46 because the affected public supplier is unchanged and no immutable/released shutdown repair has been consumed. Keep Draft while #46, the supplier release root, and protected promotion remain unresolved.

No protected merge, immutable gateway release, parity, shadow/canary, rollback, cutover, or Nginx/OpenResty removal credit is claimed.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 2bb83ccc-58e1-4a99-97a6-115fe4b119dd

📥 Commits

Reviewing files that changed from the base of the PR and between 99f7db9 and 239d031.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • docs/doctoring/PINGORA_SHUTDOWN_NOTIFY_TRACEABILITY.md
  • docs/product-technical-gap-baseline.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

HTTP/1 parked-read graceful shutdown의 Pingora 공급자 격차를 추적 문서에 기록했다. 검증 조건과 릴리스 차단 조건을 제품 기준 및 변경 로그에 반영했다.

Changes

Pingora 종료 격차 추적

Layer / File(s) Summary
종료 격차와 검증 기준 기록
docs/doctoring/PINGORA_SHUTDOWN_NOTIFY_TRACEABILITY.md
고정된 Pingora Notify 동작, lost-wakeup, waiter-list 경합, upstream 수정 상태, RED/GREEN 검증 조건과 참고 문헌을 기록했다.
제품 기준과 릴리스 차단 조건 갱신
docs/product-technical-gap-baseline.md, CHANGELOG.md
Runtime Isolation 및 Graceful drain 상태를 갱신하고, downstream deadline과 parked-read 종료 경로를 릴리스 차단 조건에 추가했다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 239d0

This change documents the parked-read shutdown supplier gap and preserves fail-closed release conditions without changing runtime behavior, dependencies, traffic, or production code. No merge-blocking risk is identified.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 Pingora의 parked-read shutdown 공급자 격차를 문서화하는 변경 사항을 정확하고 간결하게 요약합니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/shutdown-notify-gap-v1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact head 239d031237a7fc3c5f5355257412682ca6b94162 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. This is a three-file documentation-only projection for pingora-gateway#46. Verify especially that the public supplier state at Pingora 09696b51bc59315353d96686355861604d0bb48c, upstream #844/#969 status, lost-wakeup versus contention distinction, contributor-branch rejection rationale, and RED/GREEN drain/performance evidence are represented without claiming an unmerged supplier fix or weakening existing release/security gates.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='239d031237a7fc3c5f5355257412682ca6b94162'

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo '=== exact changed files ==='
git diff --name-status "$base" "$head"
echo '=== exact diff ==='
git diff --no-ext-diff --unified=80 "$base" "$head"

echo '=== upstream `#844` metadata ==='
gh api repos/cloudflare/pingora/issues/844 --jq '{number,title,state,html_url,labels:[.labels[].name],created_at,updated_at,closed_at,pull_request}'
echo '=== upstream `#969` metadata ==='
gh api repos/cloudflare/pingora/pulls/969 --jq '{number,title,state,html_url,draft,merged,mergeable,merged_at,base:.base.sha,head:.head.sha,updated_at,closed_at}'

tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

echo '=== Pingora main source at public revision ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/proxy_service.rs?ref=09696b51bc59315353d96686355861604d0bb48c" \
  --jq '.content' | base64 -d > "$tmpdir/proxy_service.rs"
rg -n -C 8 'struct HttpProxy|handle_new_request|http_cleanup|shutdown_flag|shutdown\.notified|Notify' "$tmpdir/proxy_service.rs"

Length of output: 69775


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='239d031237a7fc3c5f5355257412682ca6b94162'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

echo '=== exact ancestry ==='
printf 'merge-base: '
git merge-base "$base" "$head"
printf 'base tree: '
git rev-parse "${base}^{tree}"
printf 'head parent(s): '
git show -s --format='%P' "$head"

echo '=== supplier commit ==='
gh api "repos/cloudflare/pingora/commits/${supplier}" --jq '{sha,html_url,commit:{message:.commit.message,committer:.commit.committer}}'

echo '=== supplier source ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" --jq '.content' \
  | base64 -d > "$tmpdir/lib.rs"
rg -n -C 10 'struct HttpProxy|handle_new_request|http_cleanup|shutdown_flag|shutdown\.notified|notify_waiters|Notify' "$tmpdir/lib.rs"

echo '=== `#844` body and Accepted-label metadata ==='
gh api repos/cloudflare/pingora/issues/844 --jq '{body,labels:[.labels[]|{name,description}]}'
echo '=== `#969` body, changed files, and test-related diff excerpts ==='
gh api repos/cloudflare/pingora/pulls/969 --jq '{body,head:{sha:.head.sha,repo:.head.repo.full_name,ref:.head.ref},base:{sha:.base.sha,ref:.base.ref}}'
gh api repos/cloudflare/pingora/pulls/969/files --paginate --jq '.[] | {filename,status,additions,deletions,patch}' \
  > "$tmpdir/pr969-files.json"
cat "$tmpdir/pr969-files.json"
echo '=== `#969` issue comments and reviews ==='
gh api repos/cloudflare/pingora/issues/969/comments --paginate --jq '.[] | {user:.user.login,created_at,body}'
gh api repos/cloudflare/pingora/pulls/969/reviews --paginate --jq '.[] | {user:.user.login,state,submitted_at,body}'

Length of output: 38043


@seonghobae, no blocking findings.

I verified exact head 239d031237a7fc3c5f5355257412682ca6b94162 against base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. The merge base is the requested base. The delta changes only the three documented files.

The supplier-state statements are accurate. At Pingora 09696b51bc59315353d96686355861604d0bb48c, HttpProxy has one shared Notify. handle_new_request() selects read_request() against shutdown.notified(). http_cleanup() sets shutdown_flag and then calls notify_waiters().

The upstream-state statements are accurate. Issue cloudflare/pingora#844 is open and has the Accepted label. The label describes internal-repository integration, not a public released fix. PR cloudflare/pingora#969 is open, unmerged, and currently unmergeable.

The new traceability note correctly separates:

  • the lost-wakeup correctness window;
  • the shared Notify waiter-list contention path;
  • parked-read shutdown from already-admitted in-flight graceful drain.

The contributor-branch rejection rationale is supported by the public PR diff and review. The branch includes the unrelated .cargo/audit.toml change. The review identifies its merge conflict and weaker security wording. The review also identifies the available_parallelism() shard-sizing concern relative to configured worker count.

The RED/GREEN contract does not credit an unmerged supplier fix. It requires repeated race evidence, realistic concurrency profiling, preserved admitted-request drain, and a maintainer-integrated immutable/released capability or governed backport.

The release and security gates remain fail-closed. The documentation adds the supplier shutdown dependency without weakening the existing header-control, dependency-policy, exact-head, or traffic-activation gates.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review current exact head 6a84e785fceab6b882ff4733d56cf4ec449438fc against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. The predecessor review only covered 239d031... and three files. Current scope is eight documentation files. Please verify the later TRD/OPERABILITY/TEST_STRATEGY/THREAT_MODEL/SECURITY projection, especially: in-flight drain versus parked-read cancellation separation; public-versus-internal supplier evidence; no claim that open PR #969 is an admissible dependency; race RED/zero-survivor GREEN; worker-topology-aware contention profiling; and no weakening of security/release gates.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='6a84e785fceab6b882ff4733d56cf4ec449438fc'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo '=== exact ancestry ==='
printf 'merge-base: '; git merge-base "$base" "$head"
printf 'head parents: '; git show -s --format='%P' "$head"
echo '=== changed files ==='
git diff --name-status "$base" "$head"
echo '=== exact diff ==='
git diff --no-ext-diff --unified=50 "$base" "$head"

echo '=== changed-document line map ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  nl -ba "$path"
done

echo '=== public upstream `#844` ==='
gh api repos/cloudflare/pingora/issues/844 \
  --jq '{number,title,state,html_url,closed_at,labels:[.labels[].name],body}'

echo '=== public upstream `#969` ==='
gh api repos/cloudflare/pingora/pulls/969 \
  --jq '{number,title,state,draft,merged,merged_at,mergeable,mergeable_state,html_url,base:{sha:.base.sha},head:{sha:.head.sha,ref:.head.ref,repo:.head.repo.full_name},body}'

echo '=== supplier commit metadata ==='
gh api "repos/cloudflare/pingora/commits/${supplier}" \
  --jq '{sha,html_url,commit:{message:.commit.message,committer:.commit.committer}}'

echo '=== supplier shutdown implementation ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
rg -n -C 12 'struct HttpProxy|handle_new_request|http_cleanup|shutdown_flag|shutdown\.notified|notify_waiters|Notify|read_request' "$tmpdir/lib.rs"

echo '=== `#969` changed files and reviews ==='
gh api repos/cloudflare/pingora/pulls/969/files --paginate \
  --jq '.[] | {filename,status,additions,deletions,patch}'
gh api repos/cloudflare/pingora/pulls/969/reviews --paginate \
  --jq '.[] | {user:.user.login,state,submitted_at,body}'

Length of output: 144723


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='6a84e785fceab6b882ff4733d56cf4ec449438fc'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

echo '=== `#46-related` documentation assertions ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  sed -n '=' "$path" | paste -d: - <(cat "$path") \
    | grep -E -i -C 2 'pingora|parked|shutdown|notify|`#844`|`#969`|lost-wakeup|lost wakeup|in-flight|immutable|provenance|release' \
    || true
done

echo '=== public issue `#844` ==='
gh api repos/cloudflare/pingora/issues/844 \
  --jq '{number,title,state,html_url,closed_at,labels:[.labels[]|{name,description}],body}'

echo '=== public PR `#969` ==='
gh api repos/cloudflare/pingora/pulls/969 \
  --jq '{number,title,state,draft,merged,merged_at,mergeable,mergeable_state,html_url,base:{sha:.base.sha},head:{sha:.head.sha,ref:.head.ref,repo:.head.repo.full_name},body}'

echo '=== public supplier source at exact revision ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
grep -n -E -C 12 'struct HttpProxy|handle_new_request|http_cleanup|shutdown_flag|shutdown\.notified|notify_waiters|Notify|read_request' "$tmpdir/lib.rs" || true

echo '=== `#969` patch and review evidence ==='
gh api repos/cloudflare/pingora/pulls/969/files --paginate \
  --jq '.[] | {filename,status,patch}'
gh api repos/cloudflare/pingora/pulls/969/reviews --paginate \
  --jq '.[] | {user:.user.login,state,submitted_at,body}'

Length of output: 46472


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='6a84e785fceab6b882ff4733d56cf4ec449438fc'

echo '=== Notify scope wording in changed documents ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  grep -n -E -i 'process-wide.*(Notify|parked|shutdown)|Notify.*process-wide|one shared.*Notify|single-Notify|single.*Notify|HttpProxy instance' "$path" \
    | sed "s|^|${path}:|" \
    || true
done

echo '=== Exact supplier ownership declarations ==='
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT
gh api 'repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=09696b51bc59315353d96686355861604d0bb48c' \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
grep -n -E -A10 -B3 'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>' "$tmpdir/lib.rs"

Length of output: 12528


@seonghobae, I reviewed exact head 6a84e785fceab6b882ff4733d56cf4ec449438fc against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404.

I found one documentation accuracy issue.

  • Medium — Correct the Notify ownership scope. docs/product-technical-gap-baseline.md Line 17 calls the tokio::sync::Notify “process-wide.” The verified supplier source declares shutdown: Notify as a field of HttpProxy. The evidence therefore supports one shared Notify per HttpProxy instance, not necessarily one per process. A process can host more than one service or HttpProxy instance. Replace “process-wide” with “per-HttpProxy” or “shared by an HttpProxy instance.” This keeps the contention and lost-wakeup claims accurate without expanding their verified scope.

All other requested checks passed.

  • The change set contains the requested eight documentation files.
  • The merge base is the requested exact base.
  • The documents clearly separate admitted in-flight drain from cancellation of HTTP/1 reads parked in read_request().
  • Pingora 09696b51bc59315353d96686355861604d0bb48c has Notify and shutdown_flag on HttpProxy. handle_new_request() waits on shutdown.notified() without a pre-park flag check. http_cleanup() stores the flag and calls notify_waiters().
  • cloudflare/pingora#844 is open. Its Accepted label states that the change is merged to Cloudflare’s internal repository. The documentation does not treat this as public release evidence.
  • cloudflare/pingora#969 is open, unmerged, and unmergeable. The documents correctly reject it as dependency authority.
  • The traceability content correctly records the independent lost-wakeup reproduction, the separate shared-waiter contention evidence, the unrelated audit-file change, the merge conflict, and the worker-topology shard-sizing concern.
  • The RED contract requires a reproduced survivor under adversarial shutdown timing. The GREEN contract requires zero parked-read survivors, retained in-flight graceful completion, and high-core topology-aware profiling.
  • The documentation keeps the security, supply-chain, immutable provenance, exact-head, release, and traffic-activation gates fail-closed.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review current exact head d8cb1d9e1e099e3fd830881ad6af1529eb1aa32d against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. The predecessor review covered 6a84e785... and found the valid Medium ownership-scope issue where Notify was described as process-wide. Current head repairs that wording to the evidence-supported per-HttpProxy ownership in the baseline, Proposed ADR, focused traceability, and issue authority. It also includes later ARCHITECTURE.md and ADR work not covered by the predecessor review. Please verify all ten documentation files, especially ownership scope, Proposed-vs-Accepted ADR state, lost-wakeup versus contention separation, in-flight drain versus parked-read cancellation, public/internal supplier evidence, contributor-branch rejection, RED/GREEN realism, and unchanged fail-closed release/security gates.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='d8cb1d9e1e099e3fd830881ad6af1529eb1aa32d'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo '=== exact ancestry ==='
printf 'merge-base: '; git merge-base "$base" "$head"
printf 'head parents: '; git show -s --format='%P' "$head"

echo '=== changed files ==='
git diff --name-status "$base" "$head"
echo '=== changed file count ==='
git diff --name-only "$base" "$head" | wc -l

echo '=== complete exact diff ==='
git diff --no-ext-diff --unified=30 "$base" "$head"

echo '=== numbered changed documents ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  nl -ba "$path"
done

echo '=== public Pingora issue `#844` ==='
gh api repos/cloudflare/pingora/issues/844 \
  --jq '{number,title,state,closed_at,html_url,labels:[.labels[]|{name,description}],body}'

echo '=== public Pingora PR `#969` ==='
gh api repos/cloudflare/pingora/pulls/969 \
  --jq '{number,title,state,draft,merged,merged_at,closed_at,mergeable,mergeable_state,html_url,base:{sha:.base.sha},head:{sha:.head.sha,ref:.head.ref,repo:.head.repo.full_name},body}'

echo '=== Pingora supplier commit ==='
gh api "repos/cloudflare/pingora/commits/${supplier}" \
  --jq '{sha,html_url,commit:{message:.commit.message,committer:.commit.committer}}'

echo '=== Pingora supplier shutdown implementation ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
rg -n -C 15 'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>|handle_new_request|http_cleanup|shutdown\.notified|notify_waiters|read_request' "$tmpdir/lib.rs"

echo '=== public PR `#969` changed files and reviews ==='
gh api repos/cloudflare/pingora/pulls/969/files --paginate \
  --jq '.[] | {filename,status,additions,deletions,patch}'
gh api repos/cloudflare/pingora/pulls/969/reviews --paginate \
  --jq '.[] | {user:.user.login,state,submitted_at,body}'

Length of output: 160048


🏁 Script executed:

#!/bin/bash
set -u

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='d8cb1d9e1e099e3fd830881ad6af1529eb1aa32d'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

echo '=== current documents, numbered ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  cat -n "$path"
done

echo '=== focused assertions in every changed document ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  grep -inE -C 2 \
    'process-wide|per[- ]`?HttpProxy|HttpProxy instance|shared.*Notify|Notify.*shared|`#844`|`#969`|Accepted|lost.?wakeup|waiter|contention|parked|in-flight|graceful.?drain|RED|GREEN|available_parallelism|worker|immutable|provenance|release.?block|fail.?closed|security' \
    "$path" || true
done

echo '=== public Pingora issue `#844` ==='
gh api repos/cloudflare/pingora/issues/844 \
  --jq '{number,title,state,closed_at,html_url,labels:[.labels[]|{name,description}],body}' \
  || echo 'ERROR: could not query issue `#844`'

echo '=== public Pingora PR `#969` ==='
gh api repos/cloudflare/pingora/pulls/969 \
  --jq '{number,title,state,draft,merged,merged_at,closed_at,mergeable,mergeable_state,html_url,base:{sha:.base.sha},head:{sha:.head.sha,ref:.head.ref,repo:.head.repo.full_name},body}' \
  || echo 'ERROR: could not query PR `#969`'

echo '=== supplier commit metadata ==='
gh api "repos/cloudflare/pingora/commits/${supplier}" \
  --jq '{sha,html_url,commit:{message:.commit.message,committer:.commit.committer}}' \
  || echo 'ERROR: could not query supplier commit'

echo '=== supplier HttpProxy shutdown source ==='
if gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"; then
  grep -n -E -C 14 \
    'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>|handle_new_request|http_cleanup|shutdown\.notified|notify_waiters|read_request' \
    "$tmpdir/lib.rs" || true
else
  echo 'ERROR: could not retrieve supplier source'
fi

echo '=== PR `#969` files and reviews ==='
gh api repos/cloudflare/pingora/pulls/969/files --paginate \
  --jq '.[] | {filename,status,additions,deletions,patch}' \
  || echo 'ERROR: could not query PR `#969` files'
gh api repos/cloudflare/pingora/pulls/969/reviews --paginate \
  --jq '.[] | {user:.user.login,state,submitted_at,body}' \
  || echo 'ERROR: could not query PR `#969` reviews'

Length of output: 202888


@seonghobae, no blocking findings.

I reviewed exact head d8cb1d9e1e099e3fd830881ad6af1529eb1aa32d against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. The merge base is the requested base. The range changes the requested ten documentation files.

The previous ownership-scope finding is resolved. The documents now state that the tokio::sync::Notify is shared by each HttpProxy instance. The supplier source at 09696b51bc59315353d96686355861604d0bb48c supports this scope. shutdown and shutdown_flag are fields of HttpProxy.

The new ADR correctly remains Proposed. It does not infer Accepted status from a documentation review, internal supplier integration, or public PR #969.

The documentation accurately separates these three concerns:

  • The lost-wakeup correctness gap for an HTTP/1 read parked before request admission.
  • The shared Notify waiter-list contention path under many-core keep-alive load.
  • The graceful completion of already-admitted in-flight requests during the configured drain grace.

The supplier evidence is represented correctly:

  • cloudflare/pingora#844 is open. Its Accepted label identifies Cloudflare internal integration. It does not prove a public immutable or released repair.
  • cloudflare/pingora#969 is open, unmerged, and unmergeable. It is not treated as an admissible dependency.
  • The contributor-branch rejection rationale is supported. The branch includes the unrelated .cargo/audit.toml change, has the related merge conflict, and uses available_parallelism() instead of configured service worker topology for shard sizing.

The RED/GREEN criteria remain realistic. RED requires a reproduced survivor with parked new and reused HTTP/1 connections under shutdown jitter. GREEN requires zero survivors under repeated adversarial runs, retained in-flight drain behavior, and realistic high-core worker-topology-aware contention profiling. The documents do not use low-core latency results, reduced worker counts, disabled keep-alive, or a shorter external termination budget as substitute evidence.

The release and security gates remain fail-closed. The documentation still requires an immutable maintainer-integrated public capability or a separately governed provenance-bound backport. It preserves exact-head quality, security, supply-chain, OCI, release, rollback, and traffic-activation requirements.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 007b42f48810edabe3dd87cf9a6249d0a9033423 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. The only delta after the previously reviewed head is the OPERABILITY.md ownership-scope repair: the parked-read waiter list is shared per HttpProxy instance, not process-wide. Please revalidate that wording against the pinned public Pingora source and flag any remaining scope drift.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
previous='d8cb1d9e1e099e3fd830881ad6af1529eb1aa32d'
head='007b42f48810edabe3dd87cf9a6249d0a9033423'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

git cat-file -e "${base}^{commit}"
git cat-file -e "${previous}^{commit}"
git cat-file -e "${head}^{commit}"

echo '=== exact ancestry ==='
printf 'merge-base(base, head): '; git merge-base "$base" "$head"
printf 'head parents: '; git show -s --format='%P' "$head"

echo '=== full requested-range files ==='
git diff --name-status "$base" "$head"

echo '=== delta since previously reviewed head ==='
git diff --name-status "$previous" "$head"
git diff --no-ext-diff --unified=40 "$previous" "$head"

echo '=== scope wording in requested range ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  rg -n -i -C 3 'process-wide|per[- ]`?HttpProxy|HttpProxy instance|waiter list|parked-read|shared.*Notify|Notify.*shared' "$path" || true
done

echo '=== current OPERABILITY.md ==='
operability="$(fd -a '^OPERABILITY\.md$' . | head -n 1)"
test -n "$operability"
nl -ba "$operability"

echo '=== pinned public Pingora HttpProxy shutdown source ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
rg -n -C 15 'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>|handle_new_request|http_cleanup|shutdown\.notified|notify_waiters' "$tmpdir/lib.rs"

Length of output: 94107


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='007b42f48810edabe3dd87cf9a6249d0a9033423'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

git checkout --quiet "$head"

operability="$(find . -name OPERABILITY.md -type f -print | head -n 1)"
test -n "$operability"

echo '=== OPERABILITY.md scope assertions ==='
grep -inE -C 3 'process-wide|per[- ]`?HttpProxy|HttpProxy instance|waiter list|shared.*Notify|Notify.*shared' "$operability" || true

echo '=== pinned Pingora source: HttpProxy ownership and shutdown use ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
grep -n -E -C 15 \
  'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>|handle_new_request|shutdown\.notified|http_cleanup|notify_waiters' \
  "$tmpdir/lib.rs" || true

Length of output: 15240


@seonghobae, no findings.

I reviewed exact head 007b42f48810edabe3dd87cf9a6249d0a9033423 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404.

The merge base is the requested base. The delta after the previously reviewed head changes only OPERABILITY.md.

The ownership-scope repair is correct. At pinned public Pingora commit 09696b51bc59315353d96686355861604d0bb48c, both shutdown: Notify and shutdown_flag: Arc<AtomicBool> are fields of HttpProxy. Each HttpProxy instance constructs its own Notify.

HttpProxy::handle_new_request() waits on self.shutdown.notified() while read_request() is pending. HttpProxy::http_cleanup() sets shutdown_flag and calls self.shutdown.notify_waiters(). The supplier source therefore supports the wording that the parked HTTP/1 read waiters for a given HttpProxy instance share that instance’s tokio::sync::Notify.

OPERABILITY.md no longer describes this waiter list as process-wide. I found no remaining ownership-scope drift.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Superseding predecessor requests: please review exact current head 969ffd7db92776c3a2389646e81a39b79705c2e0 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. Revalidate shutdown-Notify ownership across all ten docs: each HttpProxy instance owns its own shared waiter Notify for the H1 reads handled by that instance; it is not process-wide. Also verify the final CHANGELOG and docs/product-technical-gap-baseline.md patches contain no unrelated semantic drift after the repair/restoration commits.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
previous='85e9821618019b010eb82a522d058572db42272a'
head='969ffd7db92776c3a2389646e81a39b79705c2e0'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

git cat-file -e "${base}^{commit}"
git cat-file -e "${previous}^{commit}"
git cat-file -e "${head}^{commit}"

echo '=== exact ancestry ==='
printf 'merge-base(base, head): '; git merge-base "$base" "$head"
printf 'head parents: '; git show -s --format='%P' "$head"

echo '=== full requested range ==='
git diff --name-status "$base" "$head"
printf 'changed-file count: '; git diff --name-only "$base" "$head" | wc -l

echo '=== delta since predecessor head ==='
git diff --name-status "$previous" "$head"
git diff --no-ext-diff --unified=60 "$previous" "$head"

echo '=== final CHANGELOG.md patch ==='
git diff --no-ext-diff --unified=100 "$base" "$head" -- CHANGELOG.md

echo '=== final product gap baseline patch ==='
git diff --no-ext-diff --unified=100 "$base" "$head" -- docs/product-technical-gap-baseline.md

echo '=== ownership wording in all changed documents at exact head ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  git show "${head}:${path}" | awk -v path="$path" '
    BEGIN { IGNORECASE=1 }
    { line[NR]=$0 }
    END {
      for (i=1; i<=NR; i++) {
        if (line[i] ~ /process-wide|HttpProxy|tokio::sync::Notify|shared waiter|waiter list|parked HTTP\/1|parked-read/) {
          s=i-2; if(s<1)s=1
          e=i+2; if(e>NR)e=NR
          for(j=s;j<=e;j++) printf "%s:%d:%s\n",path,j,line[j]
          print "--"
        }
      }
    }'
done

echo '=== all final process-wide uses in the requested range ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  git show "${head}:${path}" | awk -v path="$path" '
    BEGIN { IGNORECASE=1 }
    /process-wide/ { printf "%s:%d:%s\n",path,NR,$0 }'
done

echo '=== pinned public Pingora HttpProxy ownership and shutdown implementation ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
rg -n -C 16 \
  'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>|fn new|handle_new_request|shutdown\.notified|http_cleanup|notify_waiters|read_request' \
  "$tmpdir/lib.rs"

Length of output: 247355


@seonghobae, no findings.

I reviewed exact head 969ffd7db92776c3a2389646e81a39b79705c2e0 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404.

The merge base is the requested base. The range changes ten documentation files.

The shutdown-Notify ownership wording is accurate across the range. At pinned public Pingora revision 09696b51bc59315353d96686355861604d0bb48c, shutdown: Notify and shutdown_flag: Arc<AtomicBool> are fields of HttpProxy. Both HttpProxy constructors create a new Notify. handle_new_request() awaits self.shutdown.notified(). http_cleanup() invokes self.shutdown.notify_waiters().

The documents correctly state that each HttpProxy instance owns one shared tokio::sync::Notify for the HTTP/1 reads handled by that instance. No document describes the parked-read waiter list as process-wide.

The remaining process-wide references describe separate controls:

  • Payload-safe dependency logging.
  • Concurrent application-request admission.

They do not expand the shutdown-Notify ownership scope.

The final CHANGELOG.md patch adds the documented parked-read shutdown gap and its release blocker. It retains the existing immutable provenance, exact-head, security, supply-chain, rollback, and traffic-activation gates. I found no unrelated semantic drift.

The final docs/product-technical-gap-baseline.md patch adds the supplier shutdown gap and corrects the scope to per-HttpProxy. It preserves the separation between admitted in-flight drain and parked-read cancellation. It also preserves the requirement for an immutable maintainer-integrated capability or a governed provenance-bound backport. I found no unrelated semantic drift.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 969ffd7db92776c3a2389646e81a39b79705c2e0 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404.

Fresh audit found that the latest verifiable CodeRabbit review only covered through 239d031237a7fc3c5f5355257412682ca6b94162; current head is 21 ordinary commits later. PR metadata has been repaired so predecessor review is no longer credited as current-head evidence. Please focus on the ten-file documentation projection, especially per-HttpProxy shutdown-Notify ownership, lost-wakeup versus contention separation, supplier lifecycle status, ADR 0011 Proposed state, CHANGELOG/baseline scope drift, and release-blocker accuracy.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='969ffd7db92776c3a2389646e81a39b79705c2e0'
supplier='09696b51bc59315353d96686355861604d0bb48c'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"

echo '=== exact ancestry and range ==='
printf 'merge-base: '; git merge-base "$base" "$head"
printf 'head parents: '; git show -s --format='%P' "$head"
git diff --name-status "$base" "$head"
printf 'changed files: '; git diff --name-only "$base" "$head" | wc -l

echo '=== exact patches: CHANGELOG and baseline ==='
git diff --no-ext-diff --unified=100 "$base" "$head" -- CHANGELOG.md docs/product-technical-gap-baseline.md

echo '=== focused current-head text in each changed document ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  git show "${head}:${path}" | nl -ba | rg -n -i -C 3 \
    'HttpProxy|tokio::sync::Notify|process-wide|waiter|lost.?wakeup|contention|parked|in-flight|graceful.?drain|`#844`|`#969`|Accepted|Proposed|ADR.?0011|immutable|provenance|release.block|security' \
    || true
done

echo '=== public upstream issue `#844` ==='
gh api repos/cloudflare/pingora/issues/844 \
  --jq '{number,title,state,closed_at,html_url,labels:[.labels[]|{name,description}],body}'

echo '=== public upstream PR `#969` ==='
gh api repos/cloudflare/pingora/pulls/969 \
  --jq '{number,title,state,draft,merged,merged_at,closed_at,mergeable,mergeable_state,html_url,base:{sha:.base.sha},head:{sha:.head.sha,ref:.head.ref,repo:.head.repo.full_name},body}'

echo '=== pinned Pingora supplier source ==='
gh api "repos/cloudflare/pingora/contents/pingora-proxy/src/lib.rs?ref=${supplier}" \
  --jq '.content' | base64 -d > "$tmpdir/lib.rs"
rg -n -C 16 \
  'pub struct HttpProxy|shutdown: Notify|shutdown_flag: Arc<AtomicBool>|fn new|handle_new_request|shutdown\.notified|http_cleanup|notify_waiters|read_request' \
  "$tmpdir/lib.rs"

echo '=== ADR files and headings in requested range ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  case "$path" in
    *ADR*|*adr*) echo "--- $path"; git show "${head}:${path}" | nl -ba | sed -n '1,120p' ;;
  esac
done

Length of output: 99318


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='969ffd7db92776c3a2389646e81a39b79705c2e0'

echo '=== all ownership-scope uses at exact head ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  git show "${head}:${path}" | awk -v path="$path" '
    BEGIN { IGNORECASE=1 }
    { lines[NR]=$0 }
    END {
      for (i=1; i<=NR; i++) {
        if (lines[i] ~ /process-wide|HttpProxy|tokio::sync::Notify|single-Notify|shared waiter|waiter.list/) {
          first=i-2; if (first<1) first=1
          last=i+2; if (last>NR) last=NR
          for (j=first; j<=last; j++) printf "%s:%d:%s\n", path, j, lines[j]
          print "--"
        }
      }
    }'
done

echo '=== lifecycle, correctness, performance, and gate assertions ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  echo "--- $path"
  git show "${head}:${path}" | awk -v path="$path" '
    BEGIN { IGNORECASE=1 }
    { lines[NR]=$0 }
    END {
      for (i=1; i<=NR; i++) {
        if (lines[i] ~ /lost.?wakeup|contention|parked.read|in.flight|graceful.drain|`#844`|`#969`|Accepted|Proposed|immutable|provenance.bound|admissible.dependency|release.block|fail.closed/) {
          first=i-2; if (first<1) first=1
          last=i+2; if (last>NR) last=NR
          for (j=first; j<=last; j++) printf "%s:%d:%s\n", path, j, lines[j]
          print "--"
        }
      }
    }'
done

echo '=== ADR 0011 exact content ==='
git show "${head}:docs/adr/0011-require-released-pingora-shutdown-repair.md" | awk '{printf "%d:%s\n", NR, $0}'

echo '=== shutdown traceability exact content ==='
git show "${head}:docs/doctoring/PINGORA_SHUTDOWN_NOTIFY_TRACEABILITY.md" | awk '{printf "%d:%s\n", NR, $0}'

echo '=== final-delta check after predecessor review target ==='
previous='239d031237a7fc3c5f5355257412682ca6b94162'
git cat-file -e "${previous}^{commit}"
git diff --stat "$previous" "$head"
git diff --no-ext-diff --unified=20 "$previous" "$head" -- CHANGELOG.md docs/product-technical-gap-baseline.md

Length of output: 202571


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='99f7db91e5d693a8ae388dc833fe1c2f296bf404'
head='969ffd7db92776c3a2389646e81a39b79705c2e0'
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

echo '=== public PR `#969` changed-file names and audit delta ==='
gh api repos/cloudflare/pingora/pulls/969/files --paginate \
  --jq '.[] | {filename,status,additions,deletions,patch}' > "$tmpdir/pr969-files.json"
cat "$tmpdir/pr969-files.json"

echo '=== public PR `#969` reviews ==='
gh api repos/cloudflare/pingora/pulls/969/reviews --paginate \
  --jq '.[] | {user:.user.login,state,submitted_at,body}'

echo '=== public PR `#969` review comments ==='
gh api repos/cloudflare/pingora/pulls/969/comments --paginate \
  --jq '.[] | {user:.user.login,created_at,path,line,side,body}'

echo '=== contrary lifecycle claims in the ten documents ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  git show "${head}:${path}" | awk -v path="$path" '
    BEGIN { IGNORECASE=1 }
    /#969/ && /merged|released|admissible|pinned|dependency|Accepted/ {
      printf "%s:%d:%s\n", path, NR, $0
    }
    /ADR 0011|Status: Accepted|Status: Proposed/ {
      printf "%s:%d:%s\n", path, NR, $0
    }'
done

echo '=== all remaining process-wide Notify combinations ==='
git diff --name-only "$base" "$head" | while IFS= read -r path; do
  git show "${head}:${path}" | awk -v path="$path" '
    BEGIN { IGNORECASE=1 }
    /process-wide/ && /Notify|shutdown|waiter|parked/ {
      printf "%s:%d:%s\n", path, NR, $0
    }'
done

Length of output: 33630


@seonghobae, no findings.

I reviewed exact head 969ffd7db92776c3a2389646e81a39b79705c2e0 against exact base 99f7db91e5d693a8ae388dc833fe1c2f296bf404. The merge base is the requested base. The range changes ten documentation files.

The shutdown ownership wording is accurate. At Pingora 09696b51bc59315353d96686355861604d0bb48c, shutdown: Notify and shutdown_flag are fields of HttpProxy. Both HttpProxy constructors create a Notify. The documents correctly scope the shared waiter list to the HTTP/1 reads handled by one HttpProxy instance. No shutdown waiter list is described as process-wide.

The documents keep the two supplier concerns separate:

  • The lost-wakeup window is a correctness failure. It occurs when shutdown fires after read_request() becomes pending and before the Notified waiter registers.
  • The Notify waiter-list mutex is a separate many-core performance concern.
  • Existing graceful-drain evidence applies to already-admitted in-flight requests. It does not prove cancellation of parked HTTP/1 reads.

The supplier lifecycle wording is accurate:

  • Pingora #844 is open. Its Accepted label states that the change is merged to Cloudflare’s internal repository. This is not public-source or release evidence.
  • Pingora #969 is open, unmerged, and currently dirty. The documentation does not treat it as an admissible dependency.
  • The public #969 review supports the stated lost-wakeup reproduction, 300-round jitter result, unrelated .cargo/audit.toml delta and conflict, and available_parallelism() versus configured-worker shard-sizing concern.

ADR 0011 correctly remains Proposed. It requires an immutable maintainer-integrated public repair or a separately governed provenance-bound backport. It also requires exact-head RED/GREEN correctness and performance evidence before an Accepted state.

The final CHANGELOG.md and docs/product-technical-gap-baseline.md patches add the parked-read supplier blocker without unrelated scope drift. They retain the header-control blockers, exact-head evidence requirements, immutable provenance, security and supply-chain gates, rollback requirements, and fail-closed traffic-activation controls.

You are interacting with an AI system.

@seonghobae seonghobae added documentation Improvements or additions to documentation priority: medium type: docs labels Sep 7, 2026 — with ChatGPT Codex Connector

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Exact-current technical sweep on c026e1c8f419c6c5035a36518c3d482dfe7ff8a8..62e8369ba52234229c0b6af817c59d47a5e32bf5 found no new actionable source/documentation/DDD finding after the succession repairs. The range is parent-correct (ahead 38 / behind 0, merge base final #44) and remains documentation-only across ten paths. I specifically rechecked the final-#44 baseline preservation, restored #46 TEST_STRATEGY RED/GREEN contract, per-HttpProxy Notify ownership wording, #20 in-flight-vs-parked-read separation, #43/#45/#40 header-control separation, Proposed ADR 0011, primary-source shutdown traceability, supply-chain immutability boundary, and realistic worker/keep-alive contention requirements. Public Pingora main remains 09696b51bc59315353d96686355861604d0bb48c; #844 is open/Accepted-to-internal and #969 is open/unmerged/dirty, so no mutable supplier branch is credited. This COMMENT is technical evidence only, not an independent APPROVED governance review. Current exact hosted CI/Supply Chain/capacity must still reach terminal success on unchanged 62e8369... before #47 technical closure.

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

Labels

documentation Improvements or additions to documentation priority: medium type: docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant