test(runtime): cover Windows external artifact publication - #461
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdds a Windows-only ChangesWindows external publication contract
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant ContractCheck
participant V8Runner
participant RustPlatformStub
participant OutputDirectory
ContractCheck->>V8Runner: Run make with external-processors
V8Runner->>RustPlatformStub: Invoke platform stub
RustPlatformStub-->>V8Runner: Return platform response
V8Runner->>OutputDirectory: Publish EPF and metadata
ContractCheck->>OutputDirectory: Validate bytes and cleanup state
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@docs/design/2026-08-12-windows-external-artifact-publication-contract-design.md`:
- Around line 14-15: Keep the `#310` issue reference on the same paragraph line as
the preceding sentence, removing the line break before it; preserve the
surrounding rollback and reproduction references unchanged.
In `@scripts/ci/check-tool-contracts.py`:
- Around line 621-628: The three Rust compilation subprocesses in
check-tool-contracts.py must be bounded and handle timeouts consistently. Add a
regression test in test_product_contracts.py that mocks subprocess.run raising
TimeoutExpired, then update each rustc call to use a 60-second timeout and
catch/report a clearly labeled compilation-timeout error while preserving
existing failure handling.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: a6782cbe-2f06-47fb-b314-d29747913553
📒 Files selected for processing (4)
docs/design/2026-08-12-windows-external-artifact-publication-contract-design.mddocs/plans/2026-08-12-windows-external-artifact-publication-contract.mdscripts/ci/check-tool-contracts.pytests/ci/test_product_contracts.py
…ws-publication-contract
|
Независимое post-merge review exact HEAD Windows job и новый contract smoke на checksum-verified packaged
Проверено дополнительно:
|
Closes #310.
Related: #264.
Summary
win-x64packaged-tool contract that runs the realv8-runner makeflow with a compiled Rust Designer stub;.artifacts-stage-*/ backup metadata;Root cause
Unica 0.11.0 bundled v8-runner source commit
72d346c0a8fcf8373d9388257d11e6bef0ad70b2. On Windows it opens the publication directory forfsyncusing Unix semantics after the Designer step has succeeded, so final directory publication exits 3 withos error 3oros error 5.The production fix already arrived through alkoleft/v8-runner-rust#48 and Unica's locked
v8-runner-nightly-master-build.2refresh. This PR adds the missing Windows consumer regression so the packaged bytes must keep that behavior.RED / GREEN evidence
72d346c0a8fcf8373d9388257d11e6bef0ad70b2) invoked the platform stub and exited 3 withfailed to publish staged external directory ... (os error 3).7ce1b062843d86644fe55741dbe0ee79f7ca767d) fromv8-runner-nightly-master-build.2, SHA-256191a3d7c930007377238dda0543d1e42cc1a1bd4b209736d54fd41c0ffaac32e, returned[]after both new-target and replacement publication.Validation
python -m py_compile scripts/ci/check-tool-contracts.py tests/ci/test_product_contracts.pypython tests/ci/test_architecture_registry.py— 40 passed.python scripts/ci/check-rust-platform-boundary.pypython scripts/ci/check-architecture-sync.py --base origin/maingit diff --check origin/main...HEADLocal baseline notes:
test_product_contracts.py: 39 pass; the pre-existing Windows/missing/v8-runnerslash assertion also fails on unmodifiedorigin/main.test_design_documents.py: 8 pass; the pre-existing first-header assertion reports six older base documents, while the new document opens with Date / Status / Decision.tests/cidiscovery reached the five-minute local limit inside an unrelatedcargo run; required GitHub CI remains authoritative.Scope note
The locked upstream runner currently also moves an unreported
Alpha.epf.meta.jsonsidecar into the published output. That pre-existing cross-platform behavior is not the Windows fsync defect from #310. This PR requires exactly the expected EPF package and rejects temporary.artifacts-*residue without making that sidecar part of Unica's required contract.Summary by CodeRabbit
New Features
Documentation