code-foundry 1.33.0 → 1.33.1

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,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.33.1](https://github.com/0xPlayerOne/code-foundry/compare/v1.33.0...v1.33.1) (2026-09-25)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **security:** stop a clean pip-audit result from failing the audit gate ([#643](https://github.com/0xPlayerOne/code-foundry/issues/643)) ([7260291](https://github.com/0xPlayerOne/code-foundry/commit/7260291fc24e851678ddbf9cc9dfcf99bea48f59))
9
+
10
+
11
+ ### Maintenance
12
+
13
+ * **perf:** recalibrate the packed artifact budget ([#645](https://github.com/0xPlayerOne/code-foundry/issues/645)) ([64b6504](https://github.com/0xPlayerOne/code-foundry/commit/64b65049ba313f01f6989bf52a83efe31d2b91dd))
14
+
3
15
  ## [1.33.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.32.0...v1.33.0) (2026-09-22)
4
16
 
5
17
 
package/docs/WORKFLOWS.md CHANGED
@@ -282,6 +282,10 @@ The repository's format and lint jobs are ordinary CI checks. Set `codeql:
282
282
  false` or `dependency_review: false` when a public repository also needs those
283
283
  checks disabled.
284
284
 
285
+ The Python audit fails only on a reported advisory: `pip-audit` can report a
286
+ clean result with a non-zero status, so the runtime decides from the report,
287
+ replays it to the job log, and emits a `::warning::` when it downgrades.
288
+
285
289
  ## Branch protection
286
290
 
287
291
  Use repository rulesets (or legacy branch protection settings) to mirror the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.33.0",
3
+ "version": "1.33.1",
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": {
@@ -432,6 +432,25 @@ function run(command, args = [], options = {}) {
432
432
  if (result.status !== 0) process.exit(result.status ?? 1)
433
433
  }
434
434
 
435
+ // pip-audit can report its clean result with a non-zero status when the
436
+ // inspected environment hits a resolution problem, so decide from the report.
437
+ const CLEAN_AUDIT = 'No known vulnerabilities found'
438
+ const ADVISORY = /\b(?:PYSEC|GHSA|CVE|OSV)-[A-Za-z0-9._-]+/
439
+
440
+ /** @param {string} command @param {string[]} [args] */
441
+ function runAudited(command, args = []) {
442
+ const result = spawnSync(command, args, { cwd: root, encoding: 'utf8', env: process.env })
443
+ if (result.error) throw result.error
444
+ const stdout = result.stdout ?? ''
445
+ const stderr = result.stderr ?? ''
446
+ if (stdout) process.stdout.write(stdout)
447
+ if (stderr) process.stderr.write(stderr)
448
+ if (result.status === 0) return
449
+ const report = `${stdout}\n${stderr}`
450
+ if (!report.includes(CLEAN_AUDIT) || ADVISORY.test(report)) process.exit(result.status ?? 1)
451
+ console.warn(`::warning::${command} exited ${result.status} with no known vulnerabilities`)
452
+ }
453
+
435
454
  /** @param {string} command @param {string[]} [args] */
436
455
  function capture(command, args = []) {
437
456
  const result = spawnSync(command, args, { cwd: root, encoding: 'utf8', env: process.env })
@@ -879,10 +898,10 @@ function security(task, ecosystem) {
879
898
  const auditArgs =
880
899
  requirement && !['project', 'none'].includes(requirement) ? ['-r', requirement] : []
881
900
  if (commandExists('uv'))
882
- run('uv', ['tool', 'run', '--from', 'pip-audit==2.10.1', 'pip-audit', ...auditArgs])
901
+ runAudited('uv', ['tool', 'run', '--from', 'pip-audit==2.10.1', 'pip-audit', ...auditArgs])
883
902
  else {
884
903
  run('python', ['-m', 'pip', 'install', '--quiet', 'pip-audit==2.10.1'])
885
- run('python', ['-m', 'pip_audit', ...auditArgs])
904
+ runAudited('python', ['-m', 'pip_audit', ...auditArgs])
886
905
  }
887
906
  }
888
907
  }