Repository navigation
ci(fast-mlsirm): carry license checks with merged gate pin - #2646
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
There was a problem hiding this comment.
Noema LLM review
The supplied changes correctly place target-specific license selection before both wheel builds and verification before subsequent artifact capture. The new preflight rejects missing helpers and direct helper symlinks. Static counterexample analysis found no blocking regression in this wiring; runtime behavior and the newly pinned dependency-gate implementation remain unverified.
Reviewed changed lines
.github/workflows/fast-mlsirm-publish-pypi.yml:136 (RIGHT): The preflight checks each helper independently and exits unsuccessfully if either is not a regular file or is itself a symlink. The supplied context places this check after checkout of the selected release commit..github/workflows/fast-mlsirm-publish-pypi.yml:564 (RIGHT): The primary wheel verifier receives dist, matching the preceding build's --out dist argument. It executes immediately after the build and before native-runner graph capture..github/workflows/fast-mlsirm-publish-pypi.yml:705 (RIGHT): The consumer verifier explicitly runs from sdist-consumer/source and receives dist-consumer. Together with the consumer selection step, this avoids implicitly invoking the checkout's helpers for the sdist-consumer checks..github/workflows/fast-mlsirm-publish-pypi.yml:1108 (RIGHT): The dependency-gate reference remains pinned to a full commit SHA. The implementation at the new SHA is not included, so its behavioral compatibility cannot be established from this reference change alone.tests/test_fast_mlsirm_self_hosted_workflows.py:80 (RIGHT): The added assertions require unique selector/verifier steps and enforce their ordering around both builds and subsequent capture steps. These are useful wiring checks, although exact-text assertions do not establish helper behavior.tests/test_fast_mlsirm_self_hosted_workflows.py:90 (RIGHT): The regression test extracts the actual workflow guard rather than duplicating its implementation, checks rejection of an empty release directory, and subsequently checks acceptance when both helper files exist. This test was inspected, not executed.
Adversarial validation
.github/workflows/fast-mlsirm-publish-pypi.yml:136 (RIGHT)falsified: The preflight admits a release containing only one required helper, or a verifier that is a direct symlink to an existing regular file. — Static shell evaluation rejects the first case because ! -f is true for the missing verifier. It rejects the second because -L is true even when -f follows the symlink successfully. Both branches reach exit 1..github/workflows/fast-mlsirm-publish-pypi.yml:564 (RIGHT)falsified: The primary wheel verifier is wired to a different output directory or runs after downstream graph capture. — The selector precedes Build wheel; that build specifies --out dist; the immediately following verifier receives dist and precedes Capture first native-runner build graph. The added verifier step has no conditional or continue-on-error override..github/workflows/fast-mlsirm-publish-pypi.yml:704 (RIGHT)falsified: The new sdist-consumer checks implicitly execute the checkout's helper files rather than the helpers in the extracted consumer source. — Both consumer selection and consumer verification explicitly set working-directory to sdist-consumer/source and invoke relative tools paths. Selection precedes the consumer build, and verification precedes consumer wheel capture.- Residual risk: Validation was static; no commands or tests were executed. The supplied context does not include the license-helper implementations or the newly pinned reusable workflow. Cross-platform helper execution, helper inclusion in the sdist, and dependency-gate contract compatibility therefore remain unverified.
Findings
- No blocking findings.
- Result: APPROVE
- Head SHA:
0098f5a4b4be280456a28817fa286eff84255d42 - Reviewer credential:
noema-review-github-app-refresh - Actor:
cwl-noema-review[bot]
Scope
Carry forward the four source-bound wheel and sdist-consumer license selection/verification steps and the fail-closed helper preflight from #2628 onto current central main. Pin the release dependency gate to merged control-plane SHA
e249236e3f420c4e9c470f26925640dae59f0d93.This separate successor preserves #2628's original branch and source custody. The changed pathset is the same workflow and its execution-order contract test. The new delta from the verified #2628 merge tree is one callee pin line.
Verification
e249236eand ci(fast-mlsirm): retain per-target release license verification #2628 headb21c936ewas conflict-free.git diff --checkpassed.if: ${{ false }}guards that intentionally keep unsupported release legs disabled; actionlint passed with only that diagnostic excluded./Users/seonghobae/orca/reports/fmls-central-repair-20261010/central-2628-pin-proposal-20261014/receipt.json(SHA256b9b696e2e10b4fb5f0fe317ee3b1d9960a2a2b646d852c5587570717cc467292).Required evidence still open
This source change does not establish formal Noema/OpenCode App approval, current-head CodeQL/Strix/security checks, supported macOS/Windows/ARM self-hosted wheel capacity, license-rights clearance, twelve-wheel acceptance, or PyPI publication. The central release workflow still has a failing
publication-disabledjob and intentionally disabled wheel legs. Do not consume this pin in fast-mlsirm #2177 until an exact merged central SHA and the independent release gates are accepted. Pinninge249236edoes not claim that the release gate executes the Noema reader; #2629's security repair has its own review/runtime evidence boundary.Summary by CodeRabbit