feat(ci): add workspace integrity, prerelease guard, and export smoke gates#115
feat(ci): add workspace integrity, prerelease guard, and export smoke gates#115
Conversation
… gates Adds 3 new CI validation gates motivated by the PR bradygaster#640 prerelease version incident where npm silently resolved a stale registry SDK. - workspace-integrity: verifies lockfile has no stale registry entries for workspace packages (zero-install, reads lockfile only) - prerelease-version-guard: blocks prerelease version suffixes from merging to dev/main (zero-install, reads package.json only) - export-smoke-test: verifies all subpath exports resolve to built artifacts after SDK build (lightweight install+build) All gates follow existing patterns: feature flags (vars.SQUAD_*), skip labels, three-dot diff for change detection, ::error:: annotations. Closes #114 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
📣 PAO Review: PR #115 CI Gates 1. YAML Comments Quality ✅The header blocks for each gate are excellent:
Minor suggestion: In the feature flag inline comments, you explain how the logic works ([ "" = "false" ] evaluates to false), which is developer-friendly. Consistent across all 3 gates. 👍 2. Error Message UX ✅Strengths:
Examples:
Minor note: The "skip" instructions vary slightly:
All are good. One observation: developers encountering these gates might not know the feature flag vars exist—consider mentioning them in error output (optional; not blocking). 3. PR Description ✅Strengths:
Quality: Excellent for a DevRel/CI gate PR. Clear audience is both maintainers (understanding cost) and future contributors (how to skip if needed). 4. Documentation Impact
|
|
🧪 FIDO Quality Review — PR #115: CI Gates (workspace-integrity, prerelease-version-guard, export-smoke-test) ✅ Gate 1: workspace-integrityCorrectness: ✓ Gate checks both registry-resolved entries (https:// URLs) and non-workspace links. Correctly catches the PR bradygaster#640 scenario. Edge cases & concerns:
Error message: ✓ Clear — links directly to PR bradygaster#640, explains version mismatch, actionable fix (npm install). Good. Testability: ✓ Can be tested locally — manually edit a workspace dependency to a registry URL, then run the gate script. ✅ Gate 2: prerelease-version-guardCorrectness: ✓ Regex /-/\ catches any hyphen-suffixed version. Matches specified patterns (-build, -alpha, -beta, -rc). Edge cases & concerns:
|
🔧 EECOM Review: CI Gates for PR #115✅ SummaryThis PR adds 3 well-designed gates addressing the PR bradygaster#640 prerelease incident. All three follow solid patterns with good clarity, documentation, and skip mechanisms. Minor findings below. 1️⃣ Workspace Integrity Gate — ✅ STRONG DESIGNDoes npm ls approach catch the real bug?
The logic is precisely targeted: it won't false-positive on legitimate registry packages, only on @bradygaster/squad-*\ which must always be workspace links. Cost benefit: Zero-install (no 2️⃣ Prerelease Version Guard — ✅ SOLIDDoes it catch the right thing? |
|
🏗️ Flight Review Architecture Fit ✅All 3 gates belong in squad-ci.yml — this is the right place for workspace & build integrity checks that run on every PR. They're lightweight, focused, and directly address the PR bradygaster#640 incident root causes. Not candidates for separate workflows. Scope Assessment ✅Correctly scoped. Each gate has a single, well-defined responsibility:
The PR adds exactly what's needed — no over-engineering, no unnecessary gates. Closes issue #114 cleanly. Dependencies & Ordering ✅Good design here. Gates have no hard dependencies:
Parallelization is optimal. No sequencing constraints needed. Feature Flag/Skip Label Consistency ✅Pattern-perfect. All three gates follow the exact template already established in
All good here. Coverage Assessment ✅Gaps identified — minimal but worth noting:
Overall Verdict 🟢 APPROVEThis is a high-quality addition. The PR:
Minor recommendations (not blockers):
Ready to merge. This PR significantly hardens CI against workspace incidents. |
- Add Skip Labels Reference comment block listing all available skip labels (PAO, Flight) - Add local testing instructions to each health gate (Flight, FIDO) - Document change-detection regex patterns for future maintainers (FIDO) - Enhance export smoke test with dynamic import() validation (EECOM) - Add test PR creation hints to gate comments (FIDO) Closes #115 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove duplicate cache-dependency-path in export-smoke-test setup-node step - Remove false-positive else-if branch that flagged workspace packages lacking link:true (npm lockfile v3 workspace entries under node_modules/ use resolved:file: not link:true) Closes #115 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resets 0.9.1-build.N versions to 0.9.1 in SDK and CLI package.json. Prerelease suffixes cause npm to silently resolve stale registry packages instead of local workspace links (semver prerelease behavior). This unblocks the new prerelease-version-guard CI gate (PR #115). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resets 0.9.1-build.N versions to 0.9.1 in SDK and CLI package.json. Prerelease suffixes cause npm to silently resolve stale registry packages instead of local workspace links (semver prerelease behavior). This unblocks the new prerelease-version-guard CI gate (PR #115). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… gates Adds 3 CI health gates to squad-ci.yml. Closes #115 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… gates Adds 3 CI health gates. Fork PR: diberry#115. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Merged upstream as bradygaster#691 |
Summary
Adds 3 new CI validation gates to \squad-ci.yml\ motivated by the PR bradygaster#640 prerelease version incident where npm silently resolved a stale published SDK instead of the local workspace copy.
Gate 1: \workspace-integrity\
Gate 2: \prerelease-version-guard\
Gate 3: \�xport-smoke-test\
Design
pm ci\ needed)
Closes #114