Repository navigation
Daily security sweep — backlog #41
Description
Rolling backlog for the daily security sweep on this repo: advisories that were found but deliberately not bundled, plus structural things that stop the sweep from verifying honestly. Appended to on each run.
2026-09-04
Not bundled — out of scope (no Dependabot alert)
yaml@2.7.0 — GHSA-48c2-rrv3-qjmp, moderate (CVSS 4.3, CWE-674), stack overflow via deeply nested YAML collections. Vulnerable range >=2.0.0 <2.8.3; fixed in 2.8.3.
- Location: root
package-lock.json, dev-only, transitive viatypedoc@0.27.8. - Not flagged by Dependabot (no alert number), so it fell outside this run's scope of "open alerts". Surfaced by
npm auditwhile verifying thetomlbundle. - Clean fix available:
typedocdeclaresyaml: ^2.6.1, which accepts 2.8.3, and it is the only requester. A plain global override is correct here — no scoping needed:(Use the caret form, not"overrides": { "yaml": "^2.8.3" }
>=2.8.3, so the override cannot jump the major.) - Left for a maintainer or a future sweep rather than mixed into PR fix(security): bump toml 3.0.0 → 4.3.0 (root lockfile) — closes 4 Dependabot alerts #40, which is scoped to the four
tomlalerts.
Structural: Dependabot PRs on this repo can never go green
Every Dependabot PR in the last several months is red on all checks, and none of the failures are dependency-related:
Tests (TS)—Error: VECTORIZE_API_KEY must be set(tests/testContext.ts:11).ci.ymlreadssecrets.VECTORIZE_TOKEN/secrets.VECTORIZE_ORG, which are not exposed todependabot/*branches.Tests (Python)— same root cause intests/python.Secret Detection—gitleaks-action@v2fails withoutsecrets.GITLEAKS_LICENSE, likewise unavailable.
Confirmed across dependabot/npm_and_yarn/toml-4.2.0 (#39), …/brace-expansion-2.1.4, …/tests/ts/postcss-8.5.25, …/linkify-it-5.0.2, …/pip/tests/python/pytest-9.0.3. On push to main the same GitLeaks job succeeds, which isolates the cause to the missing secret rather than a real finding.
Consequences worth a maintainer decision:
- Dependabot security PRs carry no signal — they cannot be merged on a green check, so they accumulate. This is why the sweep recreates them on
chore/security-daily-*branches (which do get secrets). - Consider populating Dependabot secrets (Settings → Secrets and variables → Dependabot) with
VECTORIZE_TOKEN,VECTORIZE_ORG,GITLEAKS_LICENSEso Dependabot's own PRs become self-verifying, or gate the integration tests to skip cleanly when the key is absent.
Structural: Tests (TS) / Tests (Python) are live integration suites
Both jobs hit the real Vectorize API (VECTORIZE_ENV: dev). They are not runnable locally without credentials, and they exercise src/ts / src/python — neither touches the root package.json. A root-lockfile bundle therefore gets no meaningful coverage from CI, and verification has to be derived from the actual consumers (see PR #40's verification section). Not a defect, just a limitation to remember on future root-lockfile sweeps.
Also noted
- Two workflows are both named
CI(ci.ymlanddocs.yml).gh run listoutput is ambiguous as a result — theCIfailures onpush/mainaredocs.yml(GitHub Pages doc generation), not the test workflow, which only triggers onpull_request. Renaming one would make triage easier. - Label
securitydid not exist and was created by this run.dependenciesalready existed.
Activity
benfrank241 commentedon Sep 4, 2026
Update —
Tests (Python)on PR #40 resolved (fail, 3h33m)It was not a hang. The job ran to completion and failed with 4 failures, and the cause is an account/plan problem, not a code problem:
Three tests got HTTP 402 Payment Required from
api-dev.vectorize.io:tests/test_client.py::test_get_pipelines— 402tests/test_client.py::test_delete_system_connectors— 402tests/test_client.py::test_upload_create_pipeline— 402tests/test_client.py::test_extraction— polledGET /v1/org/***/extraction/f136ad02…for 3h31m returning200 ready=False, then a terminal 502 Bad GatewayThe 3.5-hour runtime is the extraction test's ready-poll having no timeout and no failure ceiling — it will burn a full runner slot on every future run whenever the dev API stops advancing a job. That is worth capping independently of the plan issue.
This is very likely org-wide, not specific to this repo. The 2026-09-02 sweep of
integrations-pythonrecorded the identical signature — the Vectorize API returning 402 to CI — on PRs #10 and #11 there. Same error, different repo, two days apart. Whatever credential or org plan CI authenticates with appears to have lost paid API access.What this means for PR #40
Nothing changes. The failures are provably outside the bundle's reach:
git diff main..branch -- src/python tests/pythonis emptytests/pythondepends onpath = "../../src/python", never the root manifestBuildstep (poetry install && poetry build) passed — the only packaging-adjacent partSecret DetectionpassesPR #40 stays open.
Added to this backlog
UPGRADE_REQUIRED) — check whether the org plan or the CI credential changed. Cross-checkintegrations-python, which showed the same 402 on 2026-09-02.test_extractionhas an unbounded ready-poll — cap it so a stalled dev-API job fails in minutes rather than occupying a runner for 3.5 hours.benfrank241 commentedon Sep 5, 2026
2026-09-05 sweep — no new bundle; correction to the 2026-09-04
yamlentryToday's run found no un-covered open alerts. All four open alerts (#46–#49, the two
tomladvisories) are already carried by open PR #40, so nothing was re-bundled.Correction:
yamlwas not "unflagged by Dependabot" — it was auto-dismissedThe 2026-09-04 entry above says
yaml@2.7.0was "not flagged by Dependabot (no alert number)". That is wrong, and the same mistake was about to be repeated for a second package today. Both actually have alerts, in stateauto_dismissed:yamlpackage-lock.jsondevelopmentnanoidtests/ts/package-lock.jsondevelopmentFor both,
created_atis byte-identical toauto_dismissed_at, anddismissed_by/dismissed_reasonarenull— the signature of a Dependabot auto-triage rule firing the instant the alert opened, not a human decision and not a missed alert. Both arescope: development, so the rule in force appears to dismiss dev-scope advisories.Consequences for this sweep, worth recording:
gh api .../dependabot/alerts?state=openwill never show these, butnpm auditwill. The two tools disagreeing is expected here, not a bug in either.state=allis not a valid value for that endpoint (valid:open,dismissed,auto_dismissed,fixed). It returns an empty list rather than erroring, which silently looks like "this repo has no alert history". Query the states individually.nanoid— available if a maintainer wants it (not bundled)nanoid@3.3.16intests/ts/package-lock.json, high (CVSS 7.5, uncontrolled loop whensizeis0), vulnerable< 3.3.18, fixed in 3.3.18. Dev-only, sole requester ispostcss(viavitest→vite), which declaresnanoid: ^3.3.16— that accepts 3.3.18, so this is a plain in-range transitive fix needing nooverrides:Not opened as a PR for two reasons: the alert is auto-dismissed by policy (above), and
tests/tscannot be verified locally — its only script isvitest run, which is the live integration suite againstapi-dev.vectorize.ioand needsVECTORIZE_TOKEN/VECTORIZE_ORG. Per the sweep's own rule, no green verify means no push.Still-open structural items from 2026-09-04
Unchanged and still reproducing today:
Tests (Python)andTests (TS), both for the environmental reasons already documented in this issue (HTTP 402UPGRADE_REQUIREDfrom the dev API on the paid-plan endpoints; pre-existing TS drift/timeout).Secret Detectionpasses.mergeStateStatusisBLOCKED. Nothing in that is caused by thetomlbump — it remains the maintainer's call to merge.ci.ymlanddocs.ymlare still both namedCI.Also noted
.github/dependabot.ymlin this repo — version updates are not configured; the alerts come from the default security-update path only. Ecosystem coverage is therefore incidental. Nine manifests exist (root,src/ts[no lockfile],src/examples/node,tests/ts,src/python,tests/python);src/examples/nodeaudits clean.benfrank241 commentedon Sep 14, 2026
Sweep note — 2026-09-14
Two findings from today's sweep of
tests/ts. Neither blocked the bundle (PR #43 is open and locally verified), but both cost time and will cost it again.1.
npm10 cannot re-resolvetests/tsoncevitestis bumped past 4.1.8.It dies walking
vitest@4.1.11's optional peer set (@vitest/browser-playwright@5.0.0,@vitejs/devtools-vitest@^0.7.3). Reproduced on npm 10.9.8 and 10.8.2 — the latter is whatnode-version: "20.x"ships inci.yml. Affectsnpm install,npm install --package-lock-onlyandnpm update --package-lock-onlyalike. npm 11 resolves the identical tree cleanly with no flags.CI is unaffected, because
ci.ymlonly runsnpm iagainst a lockfile that already matches the manifest, and that path needs no re-resolution (verified:npm cion PR #43's lockfile exits 0 under npm 10.9.8 without rewriting the file). The trap is for whoever next re-lockstests/tslocally on npm 10 and reads the crash as a broken bump.2. npm 10 silently strips
libcmarkers from the lockfile.The new
lightningcss-linux-*and@rolldown/binding-linux-*entries declare"libc": ["glibc"]/["musl"]— 10 keys in total, and Dependabot's own #42 lockfile carries exactly the same set. Any npm 10 write (npm i) removes all 10; npm 11 restores them. PR #43 commits the version with the markers. Please don't re-locktests/tson npm 10 and commit the result — it will quietly drop the glibc/musl discrimination that Linux installs use to pick the right native binary.3.
src/ts/package.jsonrewrites itself on every install. Unrelated to the above, but worth recording:src/tshas"preinstall": "npm install typescript", so anynpm installthat touchessrc/ts(including thefile:../../src/tslink fromtests/ts) rewrites its own manifest —— and drops an untracked
src/ts/package-lock.jsonnext to it.ci.yml'sInstall clientstep does exactly this on every run. It has to be reverted by hand before committing from any worktree, or the pin leaks into an unrelated PR.Also re-confirmed today, no change since the last note:
ci.ymlhas 23 recorded runs, all failures — the workflow has never been green. (Careful withgh run listhere:ci.ymlanddocs.ymlboth declarename: CI, so counts are only meaningful when queried by workflow file path.) Andgh run view --job <id> --logreturns an empty file on this repo;gh api repos/{owner}/{repo}/actions/jobs/{id}/logsreturns the real log.benfrank241 commentedon Sep 14, 2026
402 status check — 2026-09-14
Tests (Python)on PR #43 (human-authored branch, secrets present) still fails with402 UPGRADE_REQUIRED— "API access is available on paid plans only" — ontest_get_pipelines,test_delete_system_connectorsandtest_upload_create_pipeline. Unchanged from #40 on 2026-09-04, so this has been live for at least 10 days and is blocking every green run ofci.yml. It is an account/plan problem on the CI credential's org: the branch authenticates,poetry install && poetry buildpasses, the client reaches the API, and the API returns 402. No dependency change can fix it and it needs an owner.One piece of good news:
test_extractionpassed today — 27s in TS, ~8s in Python, whole Python job 2m23s. The 3h31m / 17.5 MB run on #40 was the dev API being unresponsive that day, not a permanent hang. The defect this issue tracks is unchanged though: no timeout, no failure ceiling, so the next bad day costs the same again.benfrank241 commentedon Sep 20, 2026
Sweep note — 2026-09-20: no new bundle; 402 blocker now 16 days old
Today's sweep found no un-covered open alerts. All 6 open Dependabot alerts are already carried by the two open sweep PRs, so nothing was re-bundled and no new PR was opened.
toml—package.json+package-lock.jsontoml—package.json+package-lock.json@vitest/mocker,vitest—tests/ts/package-lock.jsonCoverage re-verified against the branch contents, not just the PR bodies:
chore/security-daily-20260904-vectorize-clients-npm-root— rootpackage.jsoncarries"toml": "^4.2.0", lockfile resolvestoml@4.3.0. Clears both toml advisories (≥4.1.2 and ≥4.2.0).chore/security-daily-20260914-vectorize-clients-npm-tests-ts—tests/tslockfile resolvesvitest@4.1.11and@vitest/mocker@4.1.11.Both branches are 0 commits behind
mainand both reportMERGEABLE. Neither has drifted.The blocker is unchanged and is now aging two PRs
Both PRs sit at
mergeStateStatus: BLOCKEDpurely on the redTests (TS)/Tests (Python)checks.Secret Detectionis green on both. The cause is the402 UPGRADE_REQUIREDfromapi-dev.vectorize.iodocumented in the 2026-09-04 and 2026-09-14 comments above — an account/plan problem on the CI credential's org, which no dependency change can fix.What is new is only the duration:
2026-09-04T20:27— that result is two weeks stale.2026-09-14T15:30.integrations-python(feat: generate for 0.2 #10, Create secret-scan.yml #11) on 2026-09-02, so this is org-wide, not repo-specific.Net effect: four high-severity
tomlalerts on a runtime-scope dependency have been fully fixed and sitting in a mergeable PR for over two weeks, held open only by an unrelated billing failure. This needs an owner on the plan/credential side — it is the single thing standing between this repo and zero open alerts.No alerts were dismissed and no new backlog items were found this run.
cdbartholomew commentedon Sep 23, 2026
Removed the
securityandp1labels. This is a long-lived tracker for the daily sweep, not a security issue, and it never closes. Carrying those labels put it in Vanta's P1 security SLA test, where it could only ever be overdue. The individual security PRs it tracks are labelled and prioritised on their own.