@biffo/cli 0.249.7 → 0.249.8

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.
@@ -205,7 +205,32 @@ for lock in $ALL_LOCKS; do
205
205
 
206
206
  # `--no-emit-project` drops the tree's own package (nothing published to
207
207
  # audit); `--no-dev` keeps the audit to what actually ships.
208
- if (cd "$dir" && uv export --frozen --no-dev --no-emit-project) >"$reqs" 2>/dev/null && [ -s "$reqs" ]; then
208
+ #
209
+ # `--no-emit-local` drops LOCAL PATH dependencies, and without it this gate
210
+ # cannot scan a plugin tree at all (#1340). `biffo-plugin-sdk` is pulled in
211
+ # as `-e ./packages/python-sdk`; pip-audit tries to resolve it on PyPI, fails
212
+ # with "Dependency not found on PyPI and could not be audited", and produces
213
+ # no parseable output -- so the whole tree came back INCONCLUSIVE and blocked.
214
+ # Every vendored Python plugin tree in every instance has that dependency, so
215
+ # this was not a niche shape: it blocked all of them.
216
+ #
217
+ # Skipping it costs nothing real. A local path dependency is first-party
218
+ # source, audited in its own repo, and never a published artefact an advisory
219
+ # could name. Its TRANSITIVE dependencies are still exported and still
220
+ # audited -- verified on `services/ideation`, where the export keeps 25
221
+ # packages including three carried `via biffo-plugin-sdk`. So the answer this
222
+ # gate gives is unchanged for every package an advisory can actually be about.
223
+ if (cd "$dir" && uv export --frozen --no-dev --no-emit-project --no-emit-local) >"$reqs" 2>/dev/null && [ -s "$reqs" ]; then
224
+ # Report what was skipped rather than skipping it quietly: "audited
225
+ # everything except the bits we could not" must never read the same as
226
+ # "audited everything", which is the failure this whole file exists to
227
+ # fight. Counted from the same lockfile, so the number is the tree's, not
228
+ # a guess.
229
+ local_deps=$( (cd "$dir" && uv export --frozen --no-dev --no-emit-project) 2>/dev/null \
230
+ | grep -cE '^-e |@ file://' || true )
231
+ if [ "${local_deps:-0}" -gt 0 ]; then
232
+ echo " (${rel}: ${local_deps} local path dependenc$([ "$local_deps" -eq 1 ] && echo y || echo ies) excluded -- first-party, audited in their own repo; their transitive dependencies are still scanned)"
233
+ fi
209
234
  audit_deps "pip-audit (${rel})" "-r $reqs" || failed=1
210
235
  else
211
236
  # An export failure is "couldn't run", not "clean" — same discipline as a
@@ -205,7 +205,32 @@ for lock in $ALL_LOCKS; do
205
205
 
206
206
  # `--no-emit-project` drops the tree's own package (nothing published to
207
207
  # audit); `--no-dev` keeps the audit to what actually ships.
208
- if (cd "$dir" && uv export --frozen --no-dev --no-emit-project) >"$reqs" 2>/dev/null && [ -s "$reqs" ]; then
208
+ #
209
+ # `--no-emit-local` drops LOCAL PATH dependencies, and without it this gate
210
+ # cannot scan a plugin tree at all (#1340). `biffo-plugin-sdk` is pulled in
211
+ # as `-e ./packages/python-sdk`; pip-audit tries to resolve it on PyPI, fails
212
+ # with "Dependency not found on PyPI and could not be audited", and produces
213
+ # no parseable output -- so the whole tree came back INCONCLUSIVE and blocked.
214
+ # Every vendored Python plugin tree in every instance has that dependency, so
215
+ # this was not a niche shape: it blocked all of them.
216
+ #
217
+ # Skipping it costs nothing real. A local path dependency is first-party
218
+ # source, audited in its own repo, and never a published artefact an advisory
219
+ # could name. Its TRANSITIVE dependencies are still exported and still
220
+ # audited -- verified on `services/ideation`, where the export keeps 25
221
+ # packages including three carried `via biffo-plugin-sdk`. So the answer this
222
+ # gate gives is unchanged for every package an advisory can actually be about.
223
+ if (cd "$dir" && uv export --frozen --no-dev --no-emit-project --no-emit-local) >"$reqs" 2>/dev/null && [ -s "$reqs" ]; then
224
+ # Report what was skipped rather than skipping it quietly: "audited
225
+ # everything except the bits we could not" must never read the same as
226
+ # "audited everything", which is the failure this whole file exists to
227
+ # fight. Counted from the same lockfile, so the number is the tree's, not
228
+ # a guess.
229
+ local_deps=$( (cd "$dir" && uv export --frozen --no-dev --no-emit-project) 2>/dev/null \
230
+ | grep -cE '^-e |@ file://' || true )
231
+ if [ "${local_deps:-0}" -gt 0 ]; then
232
+ echo " (${rel}: ${local_deps} local path dependenc$([ "$local_deps" -eq 1 ] && echo y || echo ies) excluded -- first-party, audited in their own repo; their transitive dependencies are still scanned)"
233
+ fi
209
234
  audit_deps "pip-audit (${rel})" "-r $reqs" || failed=1
210
235
  else
211
236
  # An export failure is "couldn't run", not "clean" — same discipline as a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biffo/cli",
3
- "version": "0.249.7",
3
+ "version": "0.249.8",
4
4
  "description": "Biffo project scaffolding CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",