@ankhorage/renovate 0.2.15 → 0.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ankhorage/renovate
2
2
 
3
+ ## 0.2.16
4
+
5
+ ### Patch Changes
6
+
7
+ - 0131fb5: Trigger an immediate exact-version Renovate rollout for every published Ankhorage package instead of only Devtools releases.
8
+
3
9
  ## 0.2.15
4
10
 
5
11
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=changeset-workflow-write-boundary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeset-workflow-write-boundary.test.d.ts","sourceRoot":"","sources":["../src/changeset-workflow-write-boundary.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { describe, expect, test } from 'bun:test';
3
+ const workflow = readFileSync(new URL('../.github/workflows/changeset.yml', import.meta.url), 'utf8');
4
+ const [prepareJob = '', afterPrepare = ''] = workflow.split('\n commit:');
5
+ const [commitJob = ''] = afterPrepare.split('\n merge:');
6
+ describe('trusted Renovate write boundary', () => {
7
+ test('limits derived writes to the Devtools-managed inventory', () => {
8
+ for (const path of [
9
+ '.github/workflows/ci.yml',
10
+ '.github/workflows/release.yml',
11
+ '.github/workflows/renovate.yml',
12
+ '.agents/.devtools-manifest.json',
13
+ '.gitignore',
14
+ '.prettierignore',
15
+ '.prettierrc.js',
16
+ '.vscode/extensions.json',
17
+ '.vscode/settings.json',
18
+ 'AGENTS.md',
19
+ 'bun.lock',
20
+ 'eslint.config.mjs',
21
+ 'eslint.examples.config.mjs',
22
+ 'eslint.local.config.mjs',
23
+ 'knip.config.ts',
24
+ 'package.json',
25
+ 'prettier.local.config.js',
26
+ 'renovate.json5',
27
+ ]) {
28
+ expect(workflow).toContain("'" + path + "'");
29
+ }
30
+ expect(workflow).not.toContain("'.github/workflows/studio-acceptance.yml'");
31
+ expect(workflow).toContain('Devtools sync changed an unexpected path:');
32
+ expect(workflow).toContain('Devtools sync created an unexpected path:');
33
+ expect(workflow).not.toContain('DEVTOOLS_MANAGED_SKILL_NAMES');
34
+ expect(workflow).toContain("segments[1] === 'skills'");
35
+ for (const job of [prepareJob, commitJob]) {
36
+ expect(job).toContain('const isExactManagedSkillPath = (relativePath) =>');
37
+ expect(job).toContain('declaredManagedSkillFiles.has(relativePath)');
38
+ expect(job).toContain('baseManagedSkillFiles.has(relativePath)');
39
+ expect(job).toContain('Managed skill content does not match its ownership manifest:');
40
+ }
41
+ expect(prepareJob).toContain('Devtools ownership manifest must be a regular file.');
42
+ expect(workflow).toContain('segments[2]) &&');
43
+ });
44
+ });
45
+ //# sourceMappingURL=changeset-workflow-write-boundary.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeset-workflow-write-boundary.test.js","sourceRoot":"","sources":["../src/changeset-workflow-write-boundary.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,QAAQ,GAAG,YAAY,CAC3B,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9D,MAAM,CACP,CAAC;AACF,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3E,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAE1D,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,KAAK,MAAM,IAAI,IAAI;YACjB,0BAA0B;YAC1B,+BAA+B;YAC/B,gCAAgC;YAChC,iCAAiC;YACjC,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;YAChB,yBAAyB;YACzB,uBAAuB;YACvB,WAAW;YACX,UAAU;YACV,mBAAmB;YACnB,4BAA4B;YAC5B,yBAAyB;YACzB,gBAAgB;YAChB,cAAc;YACd,0BAA0B;YAC1B,gBAAgB;SACjB,EAAE,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;YAC3E,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;YACrE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC;QACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -115,42 +115,6 @@ describe('trusted Devtools owner preparation', () => {
115
115
  expect(workflow).not.toContain('bun run --cwd repository');
116
116
  });
117
117
  });
118
- describe('trusted Renovate write boundary', () => {
119
- test('limits derived writes to the Devtools-managed inventory', () => {
120
- for (const path of [
121
- '.github/workflows/ci.yml',
122
- '.github/workflows/release.yml',
123
- '.github/workflows/renovate.yml',
124
- '.agents/.devtools-manifest.json',
125
- '.prettierrc.js',
126
- '.vscode/extensions.json',
127
- '.vscode/settings.json',
128
- 'AGENTS.md',
129
- 'bun.lock',
130
- 'eslint.config.mjs',
131
- 'eslint.examples.config.mjs',
132
- 'eslint.local.config.mjs',
133
- 'knip.config.ts',
134
- 'package.json',
135
- 'prettier.local.config.js',
136
- ]) {
137
- expect(workflow).toContain("'" + path + "'");
138
- }
139
- expect(workflow).not.toContain("'.github/workflows/studio-acceptance.yml'");
140
- expect(workflow).toContain('Devtools sync changed an unexpected path:');
141
- expect(workflow).toContain('Devtools sync created an unexpected path:');
142
- expect(workflow).not.toContain('DEVTOOLS_MANAGED_SKILL_NAMES');
143
- expect(workflow).toContain("segments[1] === 'skills'");
144
- for (const job of [prepareJob, commitJob]) {
145
- expect(job).toContain('const isExactManagedSkillPath = (relativePath) =>');
146
- expect(job).toContain('declaredManagedSkillFiles.has(relativePath)');
147
- expect(job).toContain('baseManagedSkillFiles.has(relativePath)');
148
- expect(job).toContain('Managed skill content does not match its ownership manifest:');
149
- }
150
- expect(prepareJob).toContain('Devtools ownership manifest must be a regular file.');
151
- expect(workflow).toContain('segments[2]) &&');
152
- });
153
- });
154
118
  describe('trusted Renovate deletion boundary', () => {
155
119
  test('allows deletions only inside exact managed skill roots', () => {
156
120
  expect(workflow).toContain('Devtools sync deleted an unexpected path:');
@@ -1 +1 @@
1
- {"version":3,"file":"changeset-workflow.test.js","sourceRoot":"","sources":["../src/changeset-workflow.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changeset-workflow.test.js","sourceRoot":"","sources":["../src/changeset-workflow.test.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,20 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { describe, expect, test } from 'bun:test';
3
3
  const protocolManifest = JSON.parse(readFileSync(new URL('../sync-protocol.json', import.meta.url), 'utf8'));
4
- const workflow = readFileSync(new URL('../.github/workflows/rollout-devtools-release.yml', import.meta.url), 'utf8');
4
+ const workflow = readFileSync(new URL('../.github/workflows/rollout-package-release.yml', import.meta.url), 'utf8');
5
5
  describe('Devtools sync protocol release contract', () => {
6
6
  test('declares one positive canonical protocol', () => {
7
7
  expect(protocolManifest.version).toBeInteger();
8
- expect(protocolManifest.version).toBeGreaterThan(0);
8
+ expect(protocolManifest.version).toBe(2);
9
9
  });
10
10
  test('requires the exact published Devtools release to declare its protocol', () => {
11
- expect(workflow).toContain('registry.npmjs.org/%40ankhorage%2Fdevtools/');
11
+ expect(workflow).toContain("if (packageName === '@ankhorage/devtools')");
12
+ expect(workflow).toContain('encodeURIComponent(packageName)');
13
+ expect(workflow).toContain('encodeURIComponent(version)');
12
14
  expect(workflow).toContain('releaseManifest?.ankhorage?.renovateSyncProtocol');
13
15
  expect(workflow).toContain('The published Devtools release must declare ankhorage.renovateSyncProtocol as a positive integer.');
14
16
  expect(workflow).toContain('canonicalProtocol < requiredProtocol');
15
- expect(workflow).toContain('required-protocol: ${{ steps.registry.outputs.required-protocol }}');
17
+ expect(workflow).toContain('required_protocol: ${{ steps.registry.outputs.required_protocol }}');
16
18
  });
17
19
  test('reads protocol from the exact immutable consumer workflow pin', () => {
18
20
  expect(workflow).toContain('const pin = /changeset\\.yml@([0-9a-f]{40})/');
@@ -28,16 +30,17 @@ describe('Devtools sync protocol rollout orchestration', () => {
28
30
  const rollout = workflow.slice(rolloutStart);
29
31
  const updateStart = rollout.indexOf('- name: Update the immutable Renovate workflow first');
30
32
  const waitStart = rollout.indexOf("- name: Wait for this repository's compatible immutable Renovate workflow");
31
- const devtoolsStart = rollout.indexOf('- name: Run Renovate immediately for the released Devtools version');
33
+ const packageStart = rollout.indexOf('- name: Run Renovate immediately for the released package');
32
34
  expect(rolloutStart).toBeGreaterThan(0);
33
35
  expect(rollout).toContain('repository: ${{ fromJSON(needs.validate.outputs.repositories) }}');
34
36
  expect(updateStart).toBeGreaterThan(0);
35
37
  expect(waitStart).toBeGreaterThan(updateStart);
36
- expect(devtoolsStart).toBeGreaterThan(waitStart);
38
+ expect(packageStart).toBeGreaterThan(waitStart);
37
39
  expect(rollout).toContain('bun x renovate --enabled-managers=custom.regex');
38
40
  expect(rollout).toContain('TARGET_REPOSITORY: ${{ matrix.repository }}');
39
41
  expect(rollout).toContain('while (Date.now() < timeoutAt)');
40
42
  expect(workflow.match(/while \(Date\.now\(\) < timeoutAt\)/gu)).toHaveLength(1);
43
+ expect(rollout).toContain('const timeoutAt = Date.now() + 60 * 60 * 1000;');
41
44
  });
42
45
  test('isolates consumer failures instead of gating one global barrier', () => {
43
46
  const rolloutStart = workflow.indexOf('\n rollout:');
@@ -46,7 +49,7 @@ describe('Devtools sync protocol rollout orchestration', () => {
46
49
  expect(workflow).not.toContain('\n prepare-protocol:');
47
50
  expect(rollout).toContain('fail-fast: false');
48
51
  expect(rollout).toContain('RENOVATE_REPOSITORIES: ${{ matrix.repository }}');
49
- expect(rollout).toContain('"matchPackageNames":["@ankhorage/devtools"]');
52
+ expect(rollout).toContain('"matchPackageNames":["${{ needs.validate.outputs.package_name }}"]');
50
53
  expect(workflow).not.toContain('for (const repository of repositories)');
51
54
  });
52
55
  test('keeps direct consumer writes out of the rollout', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"devtools-sync-protocol.test.js","sourceRoot":"","sources":["../src/devtools-sync-protocol.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,YAAY,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACtC,CAAC;AACpC,MAAM,QAAQ,GAAG,YAAY,CAC3B,IAAI,GAAG,CAAC,mDAAmD,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC7E,MAAM,CACP,CAAC;AAEF,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;QAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC/E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CACxB,mGAAmG,CACpG,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CACxB,oEAAoE,CACrE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC3E,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC5D,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAC/B,2EAA2E,CAC5E,CAAC;QACF,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CACnC,oEAAoE,CACrE,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;QAC9F,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;QAC5E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACzE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAE7C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAAC;QAC7E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACzE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"devtools-sync-protocol.test.js","sourceRoot":"","sources":["../src/devtools-sync-protocol.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=package-release-rollout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-release-rollout.test.d.ts","sourceRoot":"","sources":["../src/package-release-rollout.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { describe, expect, test } from 'bun:test';
3
+ const registry = JSON.parse(readFileSync(new URL('../release-consumers.json', import.meta.url), 'utf8'));
4
+ const workflow = readFileSync(new URL('../.github/workflows/rollout-package-release.yml', import.meta.url), 'utf8');
5
+ describe('package release rollout registry', () => {
6
+ test('lists every reviewed managed package consumer exactly once', () => {
7
+ expect(registry.repositories).toHaveLength(37);
8
+ expect(new Set(registry.repositories).size).toBe(registry.repositories.length);
9
+ expect(registry.repositories).toContain('ankhorage/apm');
10
+ expect(registry.repositories).toContain('ankhorage/devtools');
11
+ expect(registry.repositories).toContain('ankhorage/local');
12
+ expect(registry.repositories).toContain('ankhorage/minikube');
13
+ expect(registry.repositories).toContain('ankhorage/studio');
14
+ expect(registry.repositories).toContain('ankhorage/renovate');
15
+ expect(registry.repositories).not.toContain('ankhorage/api-gateway');
16
+ expect(registry.repositories).not.toContain('ankhorage/gh');
17
+ expect(registry.repositories).not.toContain('ankhorage/zora-navigation');
18
+ for (const repository of registry.repositories) {
19
+ expect(repository).toMatch(/^ankhorage\/[a-z0-9-]+$/);
20
+ }
21
+ });
22
+ });
23
+ describe('package release rollout validation', () => {
24
+ test('accepts one exact Ankhorage package release identity', () => {
25
+ expect(workflow).toContain('repository_dispatch:');
26
+ expect(workflow).toContain('package-release');
27
+ expect(workflow).not.toContain('devtools-release');
28
+ expect(workflow).toContain('package_name:');
29
+ expect(workflow).toContain('source_repository:');
30
+ expect(workflow).toContain('Package rollout requires one valid @ankhorage package name.');
31
+ expect(workflow).toContain('Package rollout requires one exact published semver version.');
32
+ expect(workflow).toContain('Package rollout requires one valid Ankhorage source repository.');
33
+ expect(workflow).toContain('/^@ankhorage\\/[a-z0-9][a-z0-9-]*$/');
34
+ expect(workflow).toContain('/^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/');
35
+ });
36
+ test('verifies the exact npm artifact before scheduling consumers', () => {
37
+ expect(workflow).toContain('https://registry.npmjs.org/');
38
+ expect(workflow).toContain('encodeURIComponent(packageName)');
39
+ expect(workflow).toContain('encodeURIComponent(version)');
40
+ expect(workflow).toContain('releaseManifest?.name !== packageName');
41
+ expect(workflow).toContain('releaseManifest?.version !== version');
42
+ expect(workflow).toContain('The npm release manifest does not match the dispatched package identity.');
43
+ });
44
+ test('targets only reviewed App-visible consumers and excludes the source repository', () => {
45
+ expect(workflow).toContain("fs.readFileSync('release-consumers.json', 'utf8')");
46
+ expect(workflow).toContain('github.rest.apps.listReposAccessibleToInstallation');
47
+ expect(workflow).toContain('The ankhorage-renovate-sync GitHub App installation does not include registered package consumers');
48
+ expect(workflow).toContain('(repository) => repository !== sourceRepository');
49
+ expect(workflow).toContain("github.event.pull_request.user.login == 'ankhorage-renovate-sync[bot]'");
50
+ expect(workflow).toContain('RENOVATE_REPOSITORIES: ${{ matrix.repository }}');
51
+ expect(workflow).toContain('RENOVATE_REQUIRE_CONFIG: required');
52
+ });
53
+ });
54
+ describe('package release rollout execution', () => {
55
+ test('keeps the immutable workflow protocol gate specific to Devtools releases', () => {
56
+ expect(workflow).toContain("if (packageName === '@ankhorage/devtools')");
57
+ expect(workflow).toContain('let requiredProtocol = 0;');
58
+ expect(workflow).toContain('if (requiredProtocol === 0)');
59
+ expect(workflow).toContain("core.setOutput('compatible', 'true')");
60
+ expect(workflow).toContain('The canonical Renovate sync protocol cannot satisfy this Devtools release.');
61
+ expect(workflow).toContain('Update the immutable Renovate workflow first');
62
+ expect(workflow).toContain("Wait for this repository's compatible immutable Renovate workflow");
63
+ });
64
+ test('guarantees the exact released package while retaining canonical grouping', () => {
65
+ const rules = readReleasePackageRules('@ankhorage/apm', '0.8.9');
66
+ expect(rules).toEqual([
67
+ {
68
+ matchDatasources: ['npm'],
69
+ matchPackageNames: ['@ankhorage/apm'],
70
+ enabled: true,
71
+ rangeStrategy: 'bump',
72
+ allowedVersions: '0.8.9',
73
+ recreateWhen: 'always',
74
+ },
75
+ ]);
76
+ expect(workflow).toContain("RENOVATE_PR_HOURLY_LIMIT: '0'");
77
+ expect(workflow).toContain('bun x renovate');
78
+ expect(workflow).not.toContain('git push');
79
+ expect(workflow).not.toContain('pulls.create');
80
+ });
81
+ test('serializes grouped package releases without cancelling an in-flight rollout', () => {
82
+ expect(workflow).toContain('group: package-release-rollout');
83
+ expect(workflow).not.toContain('group: package-release-rollout-${{ github.event.client_payload.package_name || inputs.package_name }}');
84
+ expect(workflow).toContain('cancel-in-progress: false');
85
+ expect(workflow).toContain("node-version: '24'");
86
+ });
87
+ });
88
+ /*** Parse the final exact-package rollout rules from the managed workflow fixture. */
89
+ function readReleasePackageRules(packageName, version) {
90
+ const stepMarker = '- name: Run Renovate immediately for the released package';
91
+ const stepStart = workflow.indexOf(stepMarker);
92
+ if (stepStart < 0) {
93
+ throw new Error('Package rollout workflow does not declare the final package update step.');
94
+ }
95
+ const marker = 'RENOVATE_PACKAGE_RULES: >-\n ';
96
+ const start = workflow.indexOf(marker, stepStart);
97
+ if (start < 0) {
98
+ throw new Error('Package rollout workflow does not declare RENOVATE_PACKAGE_RULES.');
99
+ }
100
+ const rendered = workflow
101
+ .slice(start + marker.length)
102
+ .split('\n', 1)[0]
103
+ ?.replace('${{ needs.validate.outputs.package_name }}', packageName)
104
+ .replace('${{ needs.validate.outputs.version }}', version);
105
+ if (!rendered)
106
+ throw new Error('Package rollout package rules are empty.');
107
+ const parsed = JSON.parse(rendered);
108
+ if (!Array.isArray(parsed) || parsed.length !== 1) {
109
+ throw new Error('Package rollout must render exactly one release-specific package rule.');
110
+ }
111
+ return parsed;
112
+ }
113
+ //# sourceMappingURL=package-release-rollout.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-release-rollout.test.js","sourceRoot":"","sources":["../src/package-release-rollout.test.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,10 @@
8
8
  * in consumers. Compatible @ankhorage/ankh and @ankhorage/devtools releases are grouped for the
9
9
  * trusted synchronization workflow. The workflow runs the exact lock-selected provider, requires
10
10
  * byte stability and current status, and commits the complete managed result without a manual
11
- * repository sync. After the one-time release-rollout bootstrap, a published Devtools version
12
- * immediately starts the same Renovate update flow for every repository in the reviewed consumer
13
- * registry. The preset explicitly owns bun and custom.regex extraction so self-hosted manager
11
+ * repository sync. Every published @ankhorage package immediately starts a targeted Renovate
12
+ * rollout for every repository in the reviewed managed-consumer registry; Devtools releases retain
13
+ * the immutable workflow protocol gate before their package update. The preset explicitly owns bun
14
+ * and custom.regex extraction so self-hosted manager
14
15
  * filtering cannot silently drop package propagation. Never edit renovate/* branches manually;
15
16
  * request Renovate rebase/retry to discard edits and return the branch to Renovate ownership.
16
17
  * Renovate remains the only dependency-branch writer. The shared preset also performs a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/renovate",
3
- "version": "0.2.15",
3
+ "version": "0.2.16",
4
4
  "description": "Ankhorage dependency update policy and automation powered by Renovate.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=devtools-release-rollout.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devtools-release-rollout.test.d.ts","sourceRoot":"","sources":["../src/devtools-release-rollout.test.ts"],"names":[],"mappings":""}
@@ -1,114 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { describe, expect, test } from 'bun:test';
3
- const registry = JSON.parse(readFileSync(new URL('../devtools-consumers.json', import.meta.url), 'utf8'));
4
- const workflow = readFileSync(new URL('../.github/workflows/rollout-devtools-release.yml', import.meta.url), 'utf8');
5
- describe('Devtools release rollout registry', () => {
6
- test('lists each current managed Devtools consumer exactly once', () => {
7
- expect(registry.repositories).toHaveLength(33);
8
- expect(new Set(registry.repositories).size).toBe(registry.repositories.length);
9
- expect(registry.repositories).toContain('ankhorage/renovate');
10
- expect(registry.repositories).toContain('ankhorage/game');
11
- expect(registry.repositories).toContain('ankhorage/zora-game');
12
- expect(registry.repositories).not.toContain('ankhorage/devtools');
13
- expect(registry.repositories).not.toContain('ankhorage/api-gateway');
14
- for (const repository of registry.repositories) {
15
- expect(repository).toMatch(/^ankhorage\/[a-z0-9-]+$/);
16
- }
17
- expect(registry.repositories).toContain('ankhorage/repository');
18
- expect(registry.repositories).toContain('ankhorage/navigator');
19
- expect(registry.repositories).not.toContain('ankhorage/gh');
20
- expect(registry.repositories).not.toContain('ankhorage/zora-navigation');
21
- });
22
- });
23
- describe('Devtools release rollout update policy', () => {
24
- test('bumps a compatible consumer caret range to the exact released minor', () => {
25
- const rule = readReleasePackageRule('1.14.0');
26
- const currentValue = '^1.13.0';
27
- const expectedNewValue = rule.rangeStrategy === 'bump' ? `^${rule.allowedVersions}` : currentValue;
28
- expect(rule).toEqual({
29
- matchPackageNames: ['@ankhorage/devtools'],
30
- enabled: true,
31
- rangeStrategy: 'bump',
32
- allowedVersions: '1.14.0',
33
- recreateWhen: 'always',
34
- });
35
- expect(expectedNewValue).toBe('^1.14.0');
36
- });
37
- });
38
- describe('Devtools release rollout workflow', () => {
39
- test('accepts explicit release events and validates their exact version', () => {
40
- expect(workflow).toContain('repository_dispatch:');
41
- expect(workflow).toContain('devtools-release');
42
- expect(workflow).toContain('workflow_dispatch:');
43
- expect(workflow).toContain('Devtools rollout requires one exact published semver version.');
44
- expect(workflow).toContain('/^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$/');
45
- });
46
- test('targets only the reviewed registry through the organization Renovate Sync App', () => {
47
- expect(workflow).toContain("fs.readFileSync('devtools-consumers.json', 'utf8')");
48
- expect(workflow).toContain('The Devtools consumer registry must not contain duplicates.');
49
- expect(workflow).toContain("github.event.pull_request.user.login == 'ankhorage-renovate-sync[bot]'");
50
- expect(workflow).toContain('github.rest.apps.listReposAccessibleToInstallation');
51
- expect(workflow).toContain('The ankhorage-renovate-sync GitHub App installation does not include registered Devtools consumers');
52
- expect(workflow).toContain('selected-repository App installation');
53
- expect(workflow).toContain('https://github.com/ankhorage/renovate/issues/115');
54
- expect(workflow).toContain('awaiting the one-time workflow bootstrap');
55
- expect(workflow).toContain('has-repositories: ${{ steps.registry.outputs.has-repositories }}');
56
- expect(workflow).toContain("if: needs.validate.outputs.has-repositories == 'true'");
57
- expect(workflow).toContain('RENOVATE_REPOSITORIES: ${{ matrix.repository }}');
58
- expect(workflow).toContain('RENOVATE_REQUIRE_CONFIG: required');
59
- expect(workflow).toContain("RENOVATE_PR_HOURLY_LIMIT: '0'");
60
- expect(workflow).toContain('actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1');
61
- expect(workflow).toContain('ANKHORAGE_RENOVATE_SYNC_CLIENT_ID');
62
- expect(workflow).toContain('ANKHORAGE_RENOVATE_SYNC_PRIVATE_KEY');
63
- expect(workflow).toContain('permission-issues: write');
64
- expect(workflow).toContain('permission-pull-requests: write');
65
- });
66
- test('serializes duplicate deliveries while leaving every consumer update to Renovate', () => {
67
- expect(workflow).toContain('group: devtools-release-rollout');
68
- expect(workflow).toContain('cancel-in-progress: false');
69
- expect(workflow).toContain("node-version: '24'");
70
- expect(workflow).toContain('bun x renovate');
71
- expect(workflow).not.toContain('git push');
72
- expect(workflow).not.toContain('pulls.create');
73
- });
74
- });
75
- describe('Devtools release rollout protocol isolation', () => {
76
- test('keeps each consumer independent while waiting for protocol compatibility', () => {
77
- expect(workflow).toContain(' rollout:');
78
- expect(workflow).toContain('fail-fast: false');
79
- expect(workflow).toContain('TARGET_REPOSITORY: ${{ matrix.repository }}');
80
- expect(workflow).toContain('const repository = process.env.TARGET_REPOSITORY;');
81
- expect(workflow).toContain("Wait for this repository's compatible immutable Renovate workflow");
82
- expect(workflow).toContain('const timeoutAt = Date.now() + 20 * 60 * 1000;');
83
- expect(workflow).toContain('setTimeout(resolve, 30000)');
84
- expect(workflow).toContain('if (pin !== lastPin)');
85
- expect(workflow).not.toContain(' protocol-barrier:');
86
- expect(workflow).not.toContain('REPOSITORIES: ${{ needs.validate.outputs.repositories }}');
87
- expect(workflow).not.toContain('for (const repository of repositories)');
88
- });
89
- });
90
- /*** Parse the Devtools release rule from its final protocol-gated rollout step. */
91
- function readReleasePackageRule(version) {
92
- const stepMarker = '- name: Run Renovate immediately for the released Devtools version';
93
- const stepStart = workflow.indexOf(stepMarker);
94
- if (stepStart < 0) {
95
- throw new Error('Devtools rollout workflow does not declare the final Devtools update step.');
96
- }
97
- const marker = 'RENOVATE_PACKAGE_RULES: >-\n ';
98
- const start = workflow.indexOf(marker, stepStart);
99
- if (start < 0) {
100
- throw new Error('Devtools rollout workflow does not declare RENOVATE_PACKAGE_RULES.');
101
- }
102
- const rendered = workflow
103
- .slice(start + marker.length)
104
- .split('\n', 1)[0]
105
- ?.replace('${{ needs.validate.outputs.version }}', version);
106
- if (!rendered)
107
- throw new Error('Devtools rollout package rule is empty.');
108
- const parsed = JSON.parse(rendered);
109
- if (!Array.isArray(parsed) || parsed.length !== 1) {
110
- throw new Error('Devtools rollout must render exactly one release-specific package rule.');
111
- }
112
- return parsed[0];
113
- }
114
- //# sourceMappingURL=devtools-release-rollout.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devtools-release-rollout.test.js","sourceRoot":"","sources":["../src/devtools-release-rollout.test.ts"],"names":[],"mappings":"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"}