ops(sync): add .npmrc to the file-sync map - #41
Merged
Conversation
Phase 2 was half-done. `.nvmrc` has been mapped in every group since the original rollout — all 22 repos report 24.16.0, which also resolves the old caveat about dtl-sandbox and nswds-tokens running Node 22. `.npmrc` was never mapped: 8 repos carried engine-strict by hand, 12 had no .npmrc at all, and 2 had bespoke variants. Map it now, with two carve-outs rather than a blind whole-file sync. nswds-ui takes a variant source. Its .npmrc is `provenance=false`, not engine-strict: npm only supports provenance for public source repos, and this one is private. Overwriting it with the canonical would reintroduce the E422 publish failure that silently stranded v1.8.0-v2.1.0 as git tags that never reached npm. The variant preserves that directive verbatim and deliberately does not add engine-strict — that is a Turborepo monorepo whose workspace packages each declare their own engines, and turning it on there should be a considered pass, not a side effect of this change. The canonical .npmrc absorbs the rationale that ictds-portal-flows had written into its own copy, so the sync spreads that reasoning to every repo instead of stripping it from the one repo that had it. Adding engine-strict to the 12 repos without it is safe today: every repo's .nvmrc (24.16.0) satisfies its own declared engines.node, so nothing that installed before stops installing. It is load-bearing going forward — it turns a warning nobody reads into a failure in the `install / install` job that rulesets already require. Merging fans out `chore(ci):` PRs to 22 repos.
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
There was a problem hiding this comment.
Pull request overview
This PR completes the previously unwired “Phase 2” of the fleet config convergence by adding .npmrc to the repo-file sync map, with an explicit carve-out for nswds-ui via a variant canonical file to preserve its private-publish constraints.
Changes:
- Add canonical
repo-files/.npmrcenablingengine-strict=true(with rationale in-file). - Add
repo-files/.npmrc-nswds-uivariant preservingprovenance=falseand intentionally omittingengine-strict. - Update
.github/sync.ymlto sync.npmrcinto all groups (variant source fornswds-ui) and update the rollout documentation accordingly.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
repo-files/.npmrc-nswds-ui |
Introduces the nswds-ui-specific .npmrc canonical variant to preserve provenance=false and avoid syncing engine-strict there. |
repo-files/.npmrc |
Adds the fleet-wide canonical .npmrc with engine-strict=true plus explanatory comments. |
docs/config-single-source-of-truth.md |
Updates the “single source of truth” doc to reflect .npmrc syncing (and the nswds-ui variant) and marks Phase 2 as completed. |
.github/sync.yml |
Wires .npmrc into the file-sync map across all repo groups, using the variant source for nswds-ui. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Turns on the half of Phase 2 that was never wired up.
What I found
.nvmrcwas already mapped in every group — my earlier read that Phase 2 was untouched was wrong. All 22 repos report24.16.0, which also resolves the doc's stale caveat about dtl-sandbox and nswds-tokens running Node 22..npmrcwas the missing half. Current state across the 22 sync targets:engine-strict=trueby hand.npmrcat allTwo carve-outs, not a blind sync
nswds-ui gets a variant source (
repo-files/.npmrc-nswds-ui). Its.npmrcisprovenance=false, not engine-strict — npm only supports provenance for public source repos and this one is private. A whole-file sync of the canonical would reintroduce theE422publish failure that, per its own comment, silently stranded v1.8.0–v2.1.0 as git tags that never reached npm. The variant preserves that directive verbatim.It deliberately does not add
engine-strictthere: nswds-ui is a Turborepo monorepo whose workspace packages each declare their own engines, so enabling it should be a considered pass rather than a side effect of this change.ictds-portal-flows' rationale is promoted, not destroyed. It had a 12-line explanation of why engine-strict matters written into its own
.npmrc. That reasoning now lives in the canonical, so the sync spreads it to all 21 repos instead of stripping it from the one that had it.Is adding engine-strict to 12 repos safe?
Yes, verified rather than assumed — every repo's
.nvmrcis24.16.0, and that satisfies every declaredengines.nodeacross the fleet. Nothing that installed before stops installing.It is load-bearing going forward: it converts an
engineswarning nobody reads into a failure in theinstall / installjob that rulesets already require. Without it, an innocuous.nvmrcedit could pass CI and then run unsupported code onmainmid-release.Verification
.github/sync.ymlparses as valid YAML; 5 groups intactrepo-files/.npmrc, nswds-ui →repo-files/.npmrc-nswds-uiprovenance=falseexactly (diffed against its current file)deleteOrphanedstill absent (only the warning comment)repo-files/**, so no workflow change neededBlast radius
Merging fans out
chore(ci):PRs to 22 repos. They are PRs, not direct pushes —SKIP_PR: false— so each is reviewable before it lands.