Skip to content

ci: run the nightly fuzz through the shared nightly-fuzz workflow - #98

Merged
NSchatz merged 1 commit into
mainfrom
ci/shared-nightly-fuzz
Nov 8, 2026
Merged

NSchatz merged 1 commit into
mainfrom
ci/shared-nightly-fuzz

Conversation

@NSchatz

@NSchatz NSchatz commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Moves the nightly fuzz onto the shared nightly-fuzz.yml in cosyte/.github, the way dicom and mllp run it. Approved by the operator on 2026-11-08 ("Approve all (Recommended)").

Workflow

  • .github/workflows/fuzz.yml is replaced by .github/workflows/nightly-fuzz.yml, a caller of the shared workflow pinned by SHA at workflows-2026-11-08-c0db8d8e5927, on a schedule (04:23 UTC, as before) and on workflow_dispatch. Read-only token, no secrets.
  • It runs pnpm fuzz with CLI_FUZZ_SEED set to the run id and CLI_FUZZ_SECONDS=120, bounded by timeout 40m inside the shared job's 60-minute limit: three properties at two minutes each.
  • Schedule and dispatch only, so it is never a required check. No ruleset changes.
  • release.yml's note on pnpm/action-setup pointed at the deleted file for its reasoning; it now states the error itself.

Targets (pnpm fuzz, renamed from test:fuzz; the suite moves to test/property/fuzz.property.test.ts, the dicom and mllp layout)

  • run() over arbitrary argv and input bytes, and over arbitrary argv with well-formed text on stdin: a documented exit code, never a throw, never a stack frame on stderr.
  • dispatchTool() over arbitrary tool names and arguments: a value-free MCP result, never a throw or stack frame.

Harness. test/property/_fuzz-config.ts carries the knobs from dicom and mllp (CLI_FUZZ_SEED, CLI_FUZZ_SECONDS, CLI_FUZZ_RUNS as a multiplier). The properties are async, so the synchronous per-case CPU budget does not apply; a hang is caught by the run's timeout. The base count under pnpm test is unchanged (300).

Local run. CLI_FUZZ_SEED=108187034 CLI_FUZZ_SECONDS=45 pnpm fuzz: three properties at 45 s each, 135 s of fuzzing. Clean. The gate in CLAUDE.md ran locally in order.

No changeset: nothing published changes (files is dist and docs). Dependabot #76 also bumps an action in the deleted fuzz.yml, so it needs a rebase after this merges.

https://claude.ai/code/session_01MXLcW95gf97vs9RBU1YsXf

The local fuzz.yml becomes nightly-fuzz.yml, a caller of the shared
nightly-fuzz.yml at workflows-2026-11-08-c0db8d8e5927. It runs `pnpm fuzz`
(renamed from `test:fuzz`) with CLI_FUZZ_SEED set to the run id and
CLI_FUZZ_SECONDS=120, bounded by `timeout 40m`.

The fuzz suite moves to test/property/, beside test/property/_fuzz-config.ts,
which carries the knobs from dicom and mllp: a seed, a time budget per
property, and a run multiplier. The base count under `pnpm test` is
unchanged. release.yml's pnpm note no longer points at the deleted file.

Claude-Session: https://claude.ai/code/session_01MXLcW95gf97vs9RBU1YsXf
@NSchatz
NSchatz merged commit 96f7757 into main Nov 8, 2026
16 checks passed
@NSchatz
NSchatz deleted the ci/shared-nightly-fuzz branch November 8, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant