ErikBPF commented on PR #7311:
URL: 
https://github.com/apache/datafusion-comet/pull/7311#issuecomment-6499777678

   Reviewed `f2e5fa60c8d943af8daa9384a1db1baa7a9d8015`.
   
   ### P2 — `ci.yml:341` — Preserve cumulative coverage for pushes to fork 
`main`
   
   A PR from the fork’s default `main` takes the incremental `before..after` 
path. A native-code push followed by a README-only push therefore sets 
`build_linux_full=false`, although the PR still changes native code. Upstream 
now skips that tier too, and branch-keyed concurrency can cancel the unfinished 
code run. The actual workflow shell reproduced the selection failure.
   
   **Evidence**
   
   > elif [[ "$REPOSITORY" != "apache/datafusion-comet" && "$PUSH_REF" != 
"refs/heads/$DEFAULT_BRANCH" ]]; then
   
   **Action:** Use cumulative coverage or full PR-tier selection for 
fork-default-branch pushes. Add a code-then-docs regression test.
   
   ### P2 — `ci.yml:350` — Preserve upstream changes when the fork baseline is 
stale
   
   Let fork `main` remain at A while upstream advances to B with a native-file 
change. A feature branch based on B that reverts that file now matches A, so 
this diff omits it. The reproduction selected only `README.md` and returned 
`build_linux_full=false`, while the upstream PR diff also contained 
`native/core/src/lib.rs`. Syncing fork `main` avoids this case, but the 
implementation promises conservative handling of stale baselines.
   
   **Evidence**
   
   > git diff --name-only "origin/$DEFAULT_BRANCH"..."$PUSH_AFTER" > 
changed_files.txt
   
   **Action:** Preserve upstream-relative changed paths or fall back 
conservatively. Add a stale-baseline/native-revert regression test. Correct the 
“never fewer” claim alongside the implementation.
   
   ### P2 — `docs/source/contributor-guide/ci.md:123` — Describe the queue 
coverage actually provided
   
   The new documentation presents complete queue coverage as the reason fork 
results can remain advisory. The queue still selects only applicable queue-tier 
suites. Nightly-only and label-only suites remain excluded, and path filters 
still apply.
   
   **Evidence**
   
   > The merge queue, which also stays here, runs every suite on the merge 
result before anything lands.
   
   **Action:** Replace “every suite” with “the applicable queue-tier suites” 
here and in the matching workflow and README explanations.
   
   ## Inherited security findings
   
   These predate this PR. Track the repairs separately and link the issues.
   
   ### P1 — `dev/release/publish-to-maven.sh:165` — Stop logging publishing 
authentication
   
   The Nexus close request combines `curl -u` with verbose output. Curl writes 
the recoverable Basic Authorization header to stderr, which the surrounding 
command substitution does not capture. A loopback test with dummy credentials 
reproduced the disclosure. Historical log exposure remains unverified.
   
   **Evidence**
   
   > -H "Content-Type:application/xml" -v \
   
   **Action:** Remove `-v`. Have the release owner privately inspect retained 
stderr or combined transcripts and revoke credentials if exposure is confirmed.
   
   ### P2 — `publish_snapshot.yml:219–220` — Keep publishing credentials out of 
dry runs
   
   `dry_run` skips Maven settings creation and changes the goal to `install`, 
but both Nexus secrets still enter the build environment. Maven and its plugins 
can read them before any publication is needed. A dummy Maven stub confirmed 
both variables remained accessible with `GOAL=install`.
   
   **Evidence**
   
   > NEXUS_USER: ${{ secrets.NEXUS_USER }}
   >
   > NEXUS_PW: ${{ secrets.NEXUS_PW }}
   
   **Action:** Make dry runs credential-free. Build without publishing secrets 
and perform real publication in a fresh restricted job.
   
   ### P2 — `docs.yaml:89` — Separate dependency execution from 
repository-write access
   
   The docs caller grants `contents: write`, and both checkouts persist 
authentication before dependency installation and Sphinx/Maven execution. A 
compromised selected dependency can use the same writer intended for the final 
website push. The main-ref guard blocks direct fork execution, but does not 
contain dependency compromise during an authorized build.
   
   **Evidence**
   
   > pip install -r docs/requirements.txt
   
   **Action:** Build docs in a read-only job with non-persisted checkout 
credentials. Publish static output from a separate minimal write-scoped job. 
This isolates credentials, but does not establish that a compromised builder 
produced safe content.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to