Repository navigation
fix(template): apply a 7-day release cooldown to template lockfiles - #726
Merged
Merged
Conversation
The template sync resolved against public npm with no cooldown, so it locked versions published hours earlier (OTel 2.12.1/0.223.1, import-in-the-middle 3.6.0, semantic-conventions 1.45.0, ansi-regex 6.6.0). CI installs through a registry with a 7-day cooldown, so every PR's template jobs failed with 403. The sync now passes min-release-age / minimumReleaseAge (7 days) to npm and pnpm, exempting @databricks/*. npm and pnpm keep already-locked versions, so both template lockfiles are re-resolved once here. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Pawel Kosiec <pawel.kosiec@databricks.com>
pnpm 11 ignores minimumReleaseAge passed on the CLI, so the pnpm lock still got @swc/helpers 0.5.24 (6 days old), which CI's registry refuses. The sync now writes the setting into template/pnpm-workspace.yaml for its install and restores the file after. pnpm-lock.yaml is re-resolved the same way. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Pawel Kosiec <pawel.kosiec@databricks.com>
pnpm reads minimumReleaseAge from pnpm_config_* env vars, so the sync no longer edits template/pnpm-workspace.yaml. The exclude must be a JSON array: a plain string silently drops the cooldown. Same pnpm-lock.yaml output. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Pawel Kosiec <pawel.kosiec@databricks.com>
pkosiec
marked this pull request as ready for review
November 10, 2026 11:36
pkosiec
requested review from
MarioCadenas and
calvarjorge
and removed request for
calvarjorge
November 10, 2026 11:36
Contributor
🤖 AppKit PR bot🔬 Run evalsStart an eval for this PR from the evals-monitor app: Go to Evals Monitor → 📦 Try this PR's app templateScaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh run download 42808676581 -R databricks/appkit -n appkit-template-0.91.2-pr.cd2fbef-pkosiec-template-sync-cooldown-726 -D appkit-pr-726 \
&& unzip -o "appkit-pr-726/appkit-template-0.91.2-pr.cd2fbef-pkosiec-template-sync-cooldown-726.zip" -d "appkit-pr-726" \
&& databricks apps init --template "appkit-pr-726"The template pins |
MarioCadenas
approved these changes
Nov 10, 2026
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.
Summary
The template sync resolves the template lockfiles against public npm with no cooldown. On 2026-11-09 it locked versions published about an hour earlier: OTel 2.12.1 / 0.223.1,
import-in-the-middle3.6.0,semantic-conventions1.45.0 andansi-regex6.6.0. CI installs through a registry with a 7-day cooldown, so every PR's template jobs now fail with 403. The sync commit is[skip ci], so nothing caught it.Changes
tools/publish-template-tag.ts: npm and pnpm resolve only versions that are at least 7 days old. npm gets--min-release-age. pnpm ignoresminimumReleaseAgeCLI flags, so the script passes it withpnpm_config_*env vars. The exclude must be a JSON array, because a plain string silently drops the cooldown.@databricks/*is exempt, so the appkit version that was just published still resolves.min-release-age-exclude, because npm silently ignores unknown flags.Effect on the template
dompurify3.4.17,zod4.6.7,js-yaml4.3.2,systeminformation5.33.16, OTel 2.12.0 / 0.223.0.echarts6.1.0,express4.22.3,yaml2.9.1) are older than 7 days, so the next sync picks them up.npm auditfor the template goes from 23 to 14 findings: high 8 → 1, critical 1 → 0. The re-resolve also picked up transitive fixes that a lockfile refresh never pulls in.@opentelemetry/resources2.12.1, published 2026-11-09) waits for the cooldown. appkit itself pinsresources2.12.0, so the copy that runs doesn't change.Testing
@databricks/*.npm ciandpnpm install --frozen-lockfilepass locally.tools/smoke-test-template.ts --runpasses for npm and pnpm (build, health check, client serving).check-template-lock-registry.tsandcheck-template-deps.tspass.publish-template-tag.tsin a scratch repo: the installs succeed, and a fresh resolve produces the samepnpm-lock.yaml.This pull request and its description were written by Isaac.