Ir para o conteúdo

Merge Order Recommendation — Audit 2026-05 PR Stack

Histórico — superseded (#2242)

Os comandos de merge no fim deste documento são evidência de 2026-05, anteriores à merge queue. Com a fila ativa, as flags --squash/--delete-branch fazem gh pr merge FECHAR o PR sem mergear (#1575 #1815 #1820 #2208). O único caminho sancionado é python3 scripts/enqueue_merge_queue.py <PR> — ver docs/runbooks/merge-queue-doctrine.md.

Stack (bottom → top, all branched from main or prior in sequence):

Order PR Track Why before the next
1 #334 B2 — audit_gate on /coverage/model/info Exposes the audit_gate block + real payload dump used by later evidence and the 105-row table. No conflicts with docs.
2a #338 B1 — close-the-loop pilot (observations → retrain → gate) Stacks on #334. Adds the missing end-to-end proof that drive-test ingestion influences audit_gate.passed. Can land in either order with #335 since they touch disjoint files.
2b #335 Evidence dumps + rebuttal + perpetual SKU Adds the reproducible artifacts (coverage-model-info.json, satellite-change last-30, pytest anchors). Note (2026-05-27): During merge-prep we discovered #335 contains a byte-equivalent copy of #332's commit (the rebuttal+SKU work was cherry-picked into #335). #335 is therefore a strict superset of #332.
3 #333 C2 — Atoll/Planet bidirectional importer Pure feature + tests. Base now feat/audit-evidence-dumps (skipping #332).
4 #336 C3 — POST /towers/private + A01 redact patch Enterprise RAN import. Includes follow-up fix 9acd775 redacting other-tenant owner string from error responses (OWASP A01).
5 #337 (this PR) 105-line table refine + PR roster polish Pure docs + generator. Must land last so it can reference the final state of #332–#338.

Re-targeted PR base map (post merge-prep, 2026-05-27):

PR Head Base Status
#334 feat/b2-audit-gate-coverage-model-info main MERGEABLE / BLOCKED (waiting on checks/reviews)
#338 feat/b1-coverage-observations-pilot feat/b2-audit-gate-coverage-model-info MERGEABLE
#335 feat/audit-evidence-dumps feat/b2-audit-gate-coverage-model-info MERGEABLE
#333 feat/c2-qgis-atoll-bidir feat/audit-evidence-dumps MERGEABLE / CLEAN
#336 feat/c3-private-towers-api feat/c2-qgis-atoll-bidir MERGEABLE / CLEAN
#337 feat/audit-105-line-table-refine feat/c3-private-towers-api MERGEABLE
#332 feat/audit-rebuttal-and-perpetual-sku main CLOSED (2026-05-27) — superseded by #335

Note on gh pr edit --base: the CLI currently fails silently with a GraphQL "Projects (classic) deprecation" warning when used on this repo. Use the REST API directly instead:

gh api -X PATCH repos/<owner>/<repo>/pulls/<N> -f base=<branch>

#332 Status (resolved) PR #332 was closed as superseded on 2026-05-27 after discovery that its only meaningful commit (48a8205) was byte-for-byte cherry-picked into

335 during the evidence-dumps work. #335 is a strict superset. No

content was lost.

Rationale - Minimizes doc rot (the 105 table and roster cite specific PR numbers and artifacts that only exist after their PRs land). - #334 + #335 are the "truth sources" for the B2 gate and the satellite-change rebuttal — everything else builds on them. - #338 (B1) closes the auditor's "no closed loop" challenge directly on top of #334's gate, in parallel with #335's docs. - All are low-risk (mostly docs + new endpoints behind Enterprise/Ultra or new billing SKU that is additive). - After this stack lands, the auditor sign-off on the 105 is complete; B1's stub-residual scenario covers the contractual 8 dB gate.

Post-merge 1. Re-run python3 scripts/expand_audit_rebuttal.py > ...105-alegacoes-ponderadas.md (optional — content is stable). 2. Optional: add the final signed rebuttal + 105 table to the SOC 2 evidence index.

Conflicts expected? None remaining. The duplicate content issue between #332 and #335 was resolved by closing #332.

Suggested command after all approvals:

(histórico — NÃO executar; ver banner)
gh pr merge 334 --squash --delete-branch
gh pr merge 338 --squash --delete-branch   # can be in either order with 335
gh pr merge 335 --squash --delete-branch
gh pr merge 333 --squash --delete-branch
gh pr merge 336 --squash --delete-branch
gh pr merge 337 --squash --delete-branch

Last updated: 2026-05-27 (after #332 closed as superseded + B1 PR #338 + final stack retargeting).