Repository navigation
fix(aot-gate): satisfy the PublishAot analyzer contract instead of redirecting artifacts - #30
Conversation
…directing artifacts The gate's --artifacts-path isolation broke every demo on a fresh workspace (22x CS0006 on both OS in run 28594231868): under PublishAot the demos swap their generator ProjectReference for a literal artifacts/bin/...SourceGenerators/release Analyzer path, so redirecting build output guarantees the DLL is never where the compiler looks. The prior local verification passed only against a stale pre-populated artifacts/ tree — the exact shared-state class the flag was meant to fix. Rewritten, no fallback: drop the redirect entirely, prebuild the generator into the standard artifacts layout before the demo loop (the contract every other workflow satisfies incidentally via full-solution builds), keep --disable-build-servers (the real cross-job leak). Verified on a virgin clone: prebuild -> Qyl.RealHttpClientDemo PASS warning-clean. Also drop .claude/TASK-aot-publish-gate.md: task complete, and it pinned a stale claim (TASK.md as active WIP; that task shipped in #20). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
💤 Files with no reviewable changes (1)
📜 Recent review details⏰ Context from checks skipped due to timeout. (2)
🧰 Additional context used📓 Path-based instructions (2).github/workflows/**⚙️ CodeRabbit configuration file
Files:
**⚙️ CodeRabbit configuration file
Files:
⚙️ CodeRabbit configuration file
Files:
🪛 ast-grep (0.44.0)tools/verify-aot-publish-gate.py[error] 151-155: Command coming from incoming request (subprocess-from-request) 🔇 Additional comments (2)
📝 WalkthroughSummary by CodeRabbit
WalkthroughRemoves an empty stale task doc, updates a workflow comment describing generator prebuild and isolation strategy, and refactors ChangesAOT Publish Gate Refactor
Estimated code review effort: 2 (Simple) | ~12 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
Comment |
There was a problem hiding this comment.
Pull request overview
This PR fixes the NativeAOT publish gate so it satisfies the PublishAot analyzer consumption contract (source generator consumed from artifacts/bin/.../release) instead of redirecting artifacts output to a temporary location that causes CS0006 on fresh workspaces.
Changes:
- Remove
--artifacts-pathusage and instead prebuild the source generator into the standardartifacts/layout before running the demo publish loop. - Update the gate workflow documentation to reflect the new approach (prebuild +
--disable-build-servers). - Remove the now-stale
.claude/TASK-aot-publish-gate.mdtask file.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| tools/verify-aot-publish-gate.py | Removes artifacts redirection and adds a generator prebuild step to ensure demos can resolve the analyzer DLL under PublishAot. |
| .github/workflows/aot-publish-gate.yml | Updates workflow comments to match the new gate behavior. |
| .claude/TASK-aot-publish-gate.md | Deletes stale task documentation that no longer reflects current workflow state. |
| # Heavy (up to 30 NativeAOT publishes x 2 OS), so — like verify-real-demos.yml — it runs post-merge on | ||
| # main, nightly, and on demand, NOT on every PR. Each publish isolates its build output | ||
| # (--artifacts-path + --disable-build-servers) so it never contends with other jobs on a shared | ||
| # self-hosted runner. Run locally: python3 tools/verify-aot-publish-gate.py --set all | ||
| # main, nightly, and on demand, NOT on every PR. The gate prebuilds the source generator into the | ||
| # standard artifacts/ layout (the PublishAot demos consume it as a prebuilt Analyzer DLL from there) | ||
| # and publishes with --disable-build-servers; cross-job isolation comes from the serial self-hosted | ||
| # runners plus per-ref workflow concurrency. Run locally: python3 tools/verify-aot-publish-gate.py --set all |
What
First post-merge run of the AOT gate (#27) failed 22× CS0006 on both OS (run 28594231868): under
PublishAotall 22 demos swap their generatorProjectReferencefor a literalartifacts/bin/…SourceGenerators/releaseAnalyzer path, so the gate's--artifacts-pathredirect guaranteed the DLL was never where the compiler looks. It "passed locally" only against a stale pre-populatedartifacts/— the exact shared-state failure class the flag was meant to fix.Rewritten rather than patched around:
--artifacts-pathdeleted (cargo-cult: runners execute jobs serially and per-ref workflow concurrency landed in ci: one live run per ref + job timeouts on the self-hosted lanes #29; the real cross-job leak was persistent build servers, which--disable-build-serversalready kills)..claude/TASK-aot-publish-gate.mdremoved (task shipped; it also pinned the false "TASK.md is an active WIP" claim).Verification
artifacts/):prebuild → [PASS] clean Qyl.RealHttpClientDemo warning-clean → aot-publish-gate-ok— the exact condition that produced CS0006 before.🤖 Generated with Claude Code