code-foundry 1.52.0 → 1.52.2

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.
@@ -122,7 +122,7 @@ jobs:
122
122
  FOUNDRY_REQUIRED_JOB_NAMES_JSON: ${{ inputs.required-job-names-json }}
123
123
  run: |
124
124
  if [ "$SOURCE_READY" = success ] && [ "$RUNTIME_READY" = success ] && [ "$NODE_READY" = success ] && [ "$POLICY_READY" = success ] && [ -f "$RUNTIME_PATH/src/commands/qualification-receipt.mjs" ]; then
125
- node "$RUNTIME_PATH/src/commands/qualification-receipt.mjs" verify >> "$GITHUB_OUTPUT"
125
+ node "$RUNTIME_PATH/src/commands/qualification-receipt.mjs" verify
126
126
  else
127
127
  echo 'reuse=false' >> "$GITHUB_OUTPUT"
128
128
  echo 'reason=qualification or version-only release policy unavailable; using full validation' >> "$GITHUB_OUTPUT"
@@ -185,7 +185,7 @@ jobs:
185
185
  FOUNDRY_REQUIRED_JOB_NAMES_JSON: ${{ inputs.required-job-names-json }}
186
186
  run: |
187
187
  if [ "$SOURCE_READY" = success ] && [ "$RUNTIME_READY" = success ] && [ "$NODE_READY" = success ] && [ -f "$RUNTIME_PATH/src/commands/qualification-receipt.mjs" ]; then
188
- node "$RUNTIME_PATH/src/commands/qualification-receipt.mjs" produce >> "$GITHUB_OUTPUT"
188
+ node "$RUNTIME_PATH/src/commands/qualification-receipt.mjs" produce
189
189
  else
190
190
  echo 'reuse=false' >> "$GITHUB_OUTPUT"
191
191
  echo 'reason=receipt setup unavailable' >> "$GITHUB_OUTPUT"
@@ -275,23 +275,26 @@ jobs:
275
275
 
276
276
  const sleep = (seconds) =>
277
277
  execFileSync('sleep', [String(seconds)]);
278
- // Writes intermittently hit GitHub's secondary rate limiting from
279
- // busy automation accounts (403 with the generic not-accessible
280
- // message); back off and retry before giving up.
278
+ // gh reports a process exit code, not an HTTP status, in error.status.
279
+ // Retry only recognized transient read failures; a failed write may
280
+ // already have taken effect and must not be repeated blindly.
281
281
  const gh = (args, options = {}) => {
282
- for (const wait of [0, 10, 30]) {
282
+ const isRead = args.includes('GET');
283
+ for (let attempt = 0; attempt < 3; attempt += 1) {
283
284
  try {
284
- if (wait) sleep(wait);
285
285
  return execFileSync('gh', args, {
286
286
  ...options,
287
287
  encoding: 'utf8',
288
288
  maxBuffer: 32 * 1024 * 1024,
289
289
  });
290
290
  } catch (error) {
291
- const status = error.status;
292
- const retriable = status === null || status === 403 || status === 429 || status >= 500;
293
- if (!retriable || wait === 30) throw error;
294
- console.log(`gh call failed (status ${status ?? 'unknown'}); retrying in ${wait === 0 ? 10 : 30}s`);
291
+ const detail = String(error.stderr ?? error.message ?? '');
292
+ const secondary = /secondary rate limit|HTTP 429/i.test(detail);
293
+ const unavailable = /HTTP 50[0234]\b/i.test(detail);
294
+ if (!isRead || attempt === 2 || (!secondary && !unavailable)) throw error;
295
+ const wait = secondary ? [60, 120][attempt] : [10, 30][attempt];
296
+ console.log(`Transient GitHub read failure; retrying in ${wait}s`);
297
+ sleep(wait);
295
298
  }
296
299
  }
297
300
  throw new Error('unreachable');
@@ -1286,7 +1286,7 @@ jobs:
1286
1286
  name: Qualification receipt
1287
1287
  needs: [fast-lanes, lint, type-check, unit, e2e, audit, codeql, gate]
1288
1288
  if: >-
1289
- vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit' &&
1289
+ !cancelled() && vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit' &&
1290
1290
  inputs.release-qualification-receipts == true &&
1291
1291
  github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main' &&
1292
1292
  needs.fast-lanes.result == 'success' && needs.lint.result == 'success' &&
@@ -272,7 +272,7 @@ jobs:
272
272
  name: Qualification receipt
273
273
  needs: [ci, test, security, eval, gate]
274
274
  if: >-
275
- vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit' &&
275
+ !cancelled() && vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit' &&
276
276
  inputs.release-qualification-receipts == true &&
277
277
  github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main' &&
278
278
  needs.ci.result == 'success' && needs.test.result == 'success' &&
@@ -288,7 +288,7 @@ jobs:
288
288
  name: Qualification receipt
289
289
  needs: [ci, test, security, codeql, eval, gate]
290
290
  if: >-
291
- vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit' &&
291
+ !cancelled() && vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit' &&
292
292
  inputs.release-qualification-receipts == true &&
293
293
  github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main' &&
294
294
  needs.ci.result == 'success' && needs.test.result == 'success' &&
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.52.2](https://github.com/0xPlayerOne/code-foundry/compare/v1.52.1...v1.52.2) (2026-10-30)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * retry transient release fallback reads safely ([#800](https://github.com/0xPlayerOne/code-foundry/issues/800)) ([c91e23b](https://github.com/0xPlayerOne/code-foundry/commit/c91e23bfaea9f107c8af9fa9bdf391308fa5ebf2))
9
+
10
+ ## [1.52.1](https://github.com/0xPlayerOne/code-foundry/compare/v1.52.0...v1.52.1) (2026-10-30)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * restore source qualification receipt reuse ([#801](https://github.com/0xPlayerOne/code-foundry/issues/801)) ([989bdbf](https://github.com/0xPlayerOne/code-foundry/commit/989bdbfe5af6d2003ca97dde456d8c86fb92078c))
16
+
3
17
  ## [1.52.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.51.1...v1.52.0) (2026-10-30)
4
18
 
5
19
 
@@ -131,23 +145,9 @@
131
145
 
132
146
  * vite-plus-cache-post-job-save ([#765](https://github.com/0xPlayerOne/code-foundry/issues/765)) ([3f82e85](https://github.com/0xPlayerOne/code-foundry/commit/3f82e850f5c09af6cea4de6f1a791d098bbd2f6e))
133
147
 
134
- ## [1.48.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.47.5...v1.48.0) (2026-10-16)
135
-
136
-
137
- ### Features
138
-
139
- * add opt-in Vite+ task runner support ([#763](https://github.com/0xPlayerOne/code-foundry/issues/763)) ([f7970cd](https://github.com/0xPlayerOne/code-foundry/commit/f7970cdf1c1880aaee159d2de79ba043f93711a7))
140
-
141
- ## [1.47.5](https://github.com/0xPlayerOne/code-foundry/compare/v1.47.4...v1.47.5) (2026-10-15)
142
-
143
-
144
- ### Bug Fixes
145
-
146
- * validation-issue-read-v1471 ([#759](https://github.com/0xPlayerOne/code-foundry/issues/759)) ([7119b3e](https://github.com/0xPlayerOne/code-foundry/commit/7119b3e2baebfbfdd47d32428cbf5df2f2079afa))
147
-
148
148
  <!-- code-foundry: packaged changelog -->
149
149
 
150
150
  ---
151
151
 
152
- This packaged changelog lists the 20 most recent releases; 266 older releases are omitted to keep the package small.
152
+ This packaged changelog lists the 20 most recent releases; 268 older releases are omitted to keep the package small.
153
153
  See the [full changelog](https://github.com/0xPlayerOne/code-foundry/blob/main/CHANGELOG.md) for the complete history.
@@ -31,14 +31,7 @@ changelog size and its packaged (trimmed) size as informational metrics. At
31
31
  v1.44.0 the measured artifact was 280,902 packed bytes, 1,070,333 unpacked bytes,
32
32
  and 118 files.
33
33
 
34
- On v1.50.1 base `f671dd8`, the measured artifact was 315,853 packed bytes,
35
- 1,200,759 unpacked bytes, and 120 files. Release caller publication overrides
36
- measure 316,295 packed bytes, 1,222,905 unpacked bytes, and 120 files: an
37
- increase of 442 packed bytes and 22,146 unpacked bytes. The packed limit was
38
- raised to 317,000 bytes for the optional build environment input in the
39
- Cloudflare reusable workflow, which ships in the npm package. This leaves 235
40
- bytes above the measured 316,765-byte artifact. The unpacked and file-count
41
- limits remain 1,225,000 bytes and 120 files.
34
+ v1.52.1 main no-changelog: 316,788 packed, 1,224,968 unpacked, 120 files. Branch checker: 316,744 packed, 1,224,894 unpacked, 120 files. v1.52.0 published (trimmed changelog): 316,867 packed, 1,225,194 unpacked. Limits: 317,000 packed, 1,225,000 unpacked, 120 files.
42
35
 
43
36
  The published package ships a changelog trimmed to the 20 most recent releases
44
37
  with a link to the full history on GitHub. `scripts/package-changelog.mjs`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.52.0",
3
+ "version": "1.52.2",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "homepage": "https://github.com/0xPlayerOne/code-foundry#readme",
6
6
  "bugs": {