Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ updates:
update-types: ["version-update:semver-minor", "version-update:semver-major"]
- dependency-name: "playwright-core"
update-types: ["version-update:semver-minor", "version-update:semver-major"]
# The eval harness pins the agent SDK exactly. Its 0.x breaking releases
# are semver-minor to dependabot: agent-sdk 0.2 -> 0.3 and sdk 0.78 ->
# 0.133 (#3228) break typecheck:test and overlay-sdk-cancel-eof. Patch
# updates still flow; the SDK migration lands as its own maintainer PR.
- dependency-name: "@anthropic-ai/claude-agent-sdk"
update-types: ["version-update:semver-minor", "version-update:semver-major"]
- dependency-name: "@anthropic-ai/sdk"
update-types: ["version-update:semver-minor", "version-update:semver-major"]
open-pull-requests-limit: 5

- package-ecosystem: "github-actions"
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/version-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ jobs:
- name: Compare PR VERSION to next free slot
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_VERSION: ${{ steps.versions.outputs.pr_version }}
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
run: |
if ! PR_CHANGED_FILES=$(gh api --paginate "repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files" --jq '.[].filename'); then PR_CHANGED_FILES=""; fi
export PR_CHANGED_FILES
bun run scripts/compare-pr-version.ts next.json "${{ github.event.pull_request.number }}"
75 changes: 9 additions & 66 deletions .osv-scanner.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,73 +16,16 @@
# forces a fresh decision. Tracking issues are filed at ship time and named in
# each reason.

[[IgnoredVulns]]
id = "GHSA-frvp-7c67-39w9"
# @hono/node-server 1.19.x. Reachable only through @modelcontextprotocol/sdk,
# which is an unused transitive dependency (no source file imports it) and never
# starts a Hono HTTP server, so the advisory's request path is not exercised.
# The only fix is @hono/node-server 2.0.5, a major bump the MCP SDK pins against
# (^1.19.9); forcing it via override risks breaking the SDK at runtime for a
# vulnerability we do not expose. Re-evaluate if the MCP SDK becomes a direct,
# server-hosting dependency.
reason = "Unreachable transitive (unused @modelcontextprotocol/sdk); fix requires a risky major override on a pinned peer dep."
ignoreUntil = 2026-11-30T00:00:00Z

[[IgnoredVulns]]
id = "GHSA-5p2g-fcmc-qvqq"
# image-size 1.2.1 via html-to-docx@1.8.0. image-size 2.0.3 (2026-09-14)
# fixes both advisories, but html-to-docx pins image-size ^1.0.0 and no fixed
# 1.x exists, so taking the fix is a cross-major override. Exposure:
# image-size only parses images the user themselves embeds into their own
# generated .docx; no untrusted input path. Upgrade trigger: html-to-docx
# moving off image-size 1.x, or a deliberate override to 2.x after checking
# html-to-docx's call site against 2.x's API with a docx-export smoke test.
# Tracking: #2753.
reason = "Fixed in image-size 2.0.3, but html-to-docx pins image-size ^1.0.0 (no fixed 1.x); local-only input path (user's own docx images). Re-evaluate on expiry."
ignoreUntil = 2026-11-30T00:00:00Z

[[IgnoredVulns]]
id = "GHSA-w3rx-r6r6-pgpr"
# Same package/node as GHSA-5p2g-fcmc-qvqq above; same rationale.
reason = "Fixed in image-size 2.0.3, but html-to-docx pins image-size ^1.0.0 (no fixed 1.x); local-only input path (user's own docx images). Re-evaluate on expiry."
ignoreUntil = 2026-11-30T00:00:00Z

[[IgnoredVulns]]
id = "GHSA-p7fg-763f-g4gf"
# @anthropic-ai/sdk 0.81.0 nested under @anthropic-ai/claude-agent-sdk@0.2.117,
# which is deliberately exact-pinned (eval-harness stability; the v1.77 wave
# pinned the whole harness after repeated CLI-drift breakage) and declares
# ^0.81.0 (0.x caret = 0.81.x only), so the 0.91.1 fix cannot be reached
# without violating the harness pin. 4.8 MEDIUM. Upgrade trigger: the next
# deliberate claude-agent-sdk bump. Tracking: #2754.
reason = "Fix requires breaking the deliberate eval-harness agent-sdk pin; MEDIUM severity accepted until the next harness bump."
ignoreUntil = 2026-11-30T00:00:00Z

[[IgnoredVulns]]
id = "GHSA-vfj7-8cjw-p6xm"
# braces 3.0.3 in lib/diagram-render only: @excalidraw/excalidraw -> sass ->
# chokidar -> braces. chokidar is sass's Node file watcher; the diagram-render
# bundle is built for the browser and contains no chokidar/braces code
# (test/osv-config-wiring.test.ts checks the built page for chokidar). No fixed
# braces release exists. Re-evaluate on expiry or when excalidraw drops sass.
reason = "Build-time only (excalidraw -> sass -> chokidar); not in the shipped browser bundle; no fixed release."
ignoreUntil = 2026-11-30T00:00:00Z

[[IgnoredVulns]]
id = "GHSA-hp3w-g68c-fv3c"
# sprintf-js 1.1.3 (DoS through an unbounded precision specifier in the FORMAT
# string). Reachable only as roarr's logger dependency (global-agent -> roarr),
# which formats its own constant messages; no caller passes user-controlled
# format strings. No fixed release exists.
reason = "No fixed release; only roarr's constant-format logging reaches it."
ignoreUntil = 2026-11-30T00:00:00Z

[[IgnoredVulns]]
id = "GHSA-238p-pmpm-9mq7"
# katex 0.16.47 in lib/diagram-render (mermaid's math renderer). The advisory
# needs prototype pollution to already exist in the page; the render page is
# offline, loads only gstack's own bundle and the user's diagram source. The
# only fix is 0.18.x, outside mermaid 11.16's ^0.16 range. Low severity (2.1).
# Re-evaluate when mermaid accepts katex 0.18.
reason = "Requires pre-existing prototype pollution in an offline single-bundle page; fix is outside mermaid's katex range; low severity."
ignoreUntil = 2026-11-30T00:00:00Z
# offline, loads only gstack's own bundle and the user's diagram source. Low
# severity (2.1). The fix is katex 0.18.2, outside mermaid 11's ^0.16.47 range.
# Mermaid 12 accepts ^0.18, but @excalidraw/mermaid-to-excalidraw 2.2.2 (the
# latest) requires mermaid ^11.12.1, and katex 0.18 renames KaTeX's CSS
# classes, so forcing it means a bundle requalification, not a lockfile bump.
# Upgrade trigger: a mermaid 11.x release that allows katex 0.18
# (https://github.com/mermaid-js/mermaid/issues/8388), then rebuild the bundle.
reason = "Fix (katex 0.18.2) is outside mermaid 11's ^0.16 range; waiting on mermaid-js/mermaid#8388. Needs pre-existing prototype pollution in an offline single-bundle page; low severity."
ignoreUntil = 2027-01-31T00:00:00Z
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Changelog

## [1.91.122.0] - 2026-10-17

**Main no longer goes red on 2026-11-16.** All seven `.osv-scanner.toml` suppressions expired on 2026-11-30, and `test/osv-ignore-expiry.test.ts` fails 14 days early. Six are gone and the seventh is re-dated with an upstream link. Dependabot's grouped dev bump (#3228) is replaced by hand, and Version Gate stops failing every dependabot package.json PR.

### Fixed
- **Six OSV suppressions removed (#2754, #2753).** The hono, @anthropic-ai/sdk and sprintf-js ignores no longer matched either lockfile. image-size is overridden to 2.0.4. braces leaves `lib/diagram-render` because chokidar is overridden to 4.0.3; that bundle's sha256 is unchanged. katex (low) is re-dated to 2027-01-31: its fix needs a mermaid 11 release that allows katex 0.18 (mermaid-js/mermaid#8388). osv-scanner reports no issues and no unused ignores.
- **`make-pdf --to docx` no longer hangs on an ICNS image.** html-to-docx 1.8.0 sizes images with its own bundled image-size 1.x, which the override cannot reach and which loops forever on GHSA-w3rx-r6r6-pgpr's input. ICNS images are dropped with a warning before conversion. The result is re-parsed with html-to-docx's own html-to-vdom, so a tag the guard misreads fails the conversion instead of hanging it. Every other image format embeds as before; a golden test pins the Word output.
- **Version Gate passes dependabot dependency PRs.** Hard rule 1 (VERSION above base) is skipped only when the author is `dependabot[bot]` and every changed file is a `package.json`, a `bun.lock` or `.github/dependabot.yml`. A failed file lookup keeps the rule.

### Changed
- **@types/bun 1.4.3 and prettier 3.9.10.** The test type baseline drops 18 diagnostics.
- **Dependabot holds both Anthropic SDKs to patch updates.** Their breaking 0.x releases (agent-sdk 0.2 to 0.3, sdk 0.78 to 0.133) count as minor bumps to dependabot and break `typecheck:test` and `overlay-sdk-cancel-eof`.

### If you…
- **…delete an OSV ignore after adding an override:** check that the vulnerable code loads from node_modules. A dependency that bundles its own copy keeps the old code even though the lockfile looks fixed.
- **…convert untrusted markdown with `--to docx --allow-network`:** html-to-docx still downloads remote images and sizes them with its bundled copy (#2753 stays open for this).

## [1.91.121.0] - 2026-10-17

**Windows free-test shards stop running out of time on files the Windows seed didn't know.** The Windows duration seed dated from 2026-10-04 and had no entry for `test/gstack-doctor.test.ts` (about 6.5 minutes on Windows) or `test/hook-scripts.test.ts`. The packer guessed, put `cookie-import-native-job` into a 121-file shard, and that shard hit the 15-minute job limit.
Expand Down
11 changes: 5 additions & 6 deletions TODOS.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ The 158 older open issues were re-checked against main 5cb5e1c (v1.91.83.0). Of
- **/cso**
- #2993: tracked under the /cso capacity follow-ups above. **Priority:** P2.
- **Dependency security ledgers** (not code defects; keep open until the trigger)
- #2753: `.osv-scanner.toml` ignores image-size (via html-to-docx) until 2026-11-30. Bump it once a fixed release exists, or re-justify at expiry. **Effort:** S. **Priority:** P3.
- #2754: `.osv-scanner.toml` ignores `@anthropic-ai/sdk` 0.81.0 under the pinned claude-agent-sdk until 2026-11-30. Drop it with the next harness bump. **Effort:** S. **Priority:** P3.
- `.osv-scanner.toml` ignores katex 0.16.47 in lib/diagram-render (GHSA-238p-pmpm-9mq7, low) until 2027-01-31. The fix (0.18.2) is outside mermaid 11's range; when mermaid-js/mermaid#8388 ships, override katex, rebuild the bundle and drop the ignore. **Effort:** S. **Priority:** P3.
- #2753 residual: html-to-docx 1.8.0 bundles its own image-size 1.x, which the package.json override cannot reach. `make-pdf --to docx` never hands it ICNS bytes (make-pdf/src/docx-images.ts), but with `--allow-network` html-to-docx downloads remote images and sizes them itself. Inline remote images before the guard for docx, or replace html-to-docx. Revisit 2026-12-15. **Effort:** M. **Priority:** P2.
- **Tests and CI**
- #2756: the periodic lane. Tracked under "Periodic-lane stabilization (#2756)". **Priority:** P2.
- #2967: `test/redact-prepush-scan-range.test.ts` (and its rebase twin) run fixture pushes with the inherited global config, so a developer's `core.hooksPath` pre-push runs inside the fixture. Set `GIT_CONFIG_GLOBAL=/dev/null` and `GIT_CONFIG_NOSYSTEM=1` in the helper. **Effort:** S. **Priority:** P3.
Expand Down Expand Up @@ -965,10 +965,9 @@ wave"). Each was explicitly deferred with rationale, not dropped:

- **mermaid 10→11-class major bumps in lib/diagram-render** — the wave's
dependency pass cleared 102 of 105 OSV advisories via in-range bumps +
overrides; the residual ignores (image-size no-fix, @anthropic-ai/sdk under
the harness-pinned agent-sdk) carry `ignoreUntil` expiries (~2026-11-30) and
re-justify themselves on expiry. When the agent-sdk pin next moves, drop the
GHSA-p7fg ignore. Effort S. **Priority:** P3.
overrides; the residual ignores carry `ignoreUntil` expiries and
re-justify themselves on expiry. Only the katex ignore remains (see the
dependency security ledgers above). Effort S. **Priority:** P3.
- **#2750 split absorption** — the record-scanning Codex JSONL parser (real
fix; current Codex streams interleave envelopes so sessions vanish from
/retro global) should be absorbed once the author splits it from the
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.91.121.0
1.91.122.0
2 changes: 1 addition & 1 deletion agents-digest/gstack-AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# gstack digest v1.91.121.0 — regenerate/re-copy after upgrading gstack
# gstack digest v1.91.122.0 — regenerate/re-copy after upgrading gstack

Behavioral rules from gstack (https://github.com/garrytan/gstack), compressed
for agent hosts without a full skill install. The full skills add workflows,
Expand Down
16 changes: 8 additions & 8 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading