887 Commits

Author SHA1 Message Date
dependabot[bot] d9e7d0b60b build(deps): bump docker/build-push-action in the actions group (#476)
Bumps the actions group with 1 update: [docker/build-push-action](https://github.com/docker/build-push-action).


Updates `docker/build-push-action` from 6.18.0 to 6.19.2
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 08:53:41 +01:00
Akshith G 1adc774d33 docs: add Colima and docker-buildx setup instructions for macOS (#474)
macOS users using Colima instead of Docker Desktop were hitting
missing buildx errors and had no documentation to guide them.
Add Colima as a supported Docker runtime, document buildx
installation, and ensure setup-local installs buildx automatically.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 09:15:34 -08:00
dependabot[bot] ed723f40de build(deps): bump astral-sh/setup-uv in the actions group (#473)
Bumps the actions group with 1 update: [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv).


Updates `astral-sh/setup-uv` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/61cb8a9741eeb8a550a1b8544337180c0fc8476b...eac588ad8def6316056a12d4907a9d4d84ff7a3b)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 09:55:09 +01:00
Ronald Eytchison 77a3e77936 Create minikube config for a large machine (16 CPU, 128 GB) (#469)
* Create minikube config for a large machine (16 CPU, 128 GB)

* Address PR feedback and scale services

- Increase redis memory
- Disable redis in-memory backups to conserve memory
- Increase build bot replicas
- Increase dind CPU/Memory given build bot scaling
- Set reasonable limits for merger-bot and pov-reproducer
- increase coverage bot memory

* Configure /dev/shm size for corpus tmpfs
2026-02-12 08:32:55 -05:00
Henrik Brodin fb9a40cfc9 docs: add Redis testing guidance to CLAUDE.md (#472)
Many component test suites require a running Redis instance.
Document how to start a temporary Redis container via Docker
so these tests are not skipped or left failing.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:53:44 +01:00
Henrik Brodin b5aa20d0b4 build(deps): bump cryptography from 46.0.3 to 46.0.5 in remaining components (#471)
Bump cryptography to 46.0.5 in common, orchestrator, patcher,
program-model, seed-gen, and fuzzer_runner lock files to match
the fuzzer component which was already updated in #470.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:53:29 +01:00
dependabot[bot] e6aa09c831 build(deps): bump cryptography from 46.0.3 to 46.0.5 in /fuzzer (#470)
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.3 to 46.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.3...46.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-11 08:58:31 +01:00
dependabot[bot] 7f10615d76 build(deps): bump the actions group with 2 updates (#466)
Bumps the actions group with 2 updates: [actions/cache](https://github.com/actions/cache) and [docker/login-action](https://github.com/docker/login-action).


Updates `actions/cache` from 5.0.2 to 5.0.3
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/8b402f58fbc84540c8b491a91e594a4576fec3d7...cdf6c1fa76f9f475f3d7449005a359c84ca0f306)

Updates `docker/login-action` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/5e57cd118135c172c3672efd75eb46360885c0ef...c94ce9fb468520275223c153574b00df6fe4bcc9)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: docker/login-action
  dependency-version: 3.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-09 09:12:28 +01:00
Henrik Brodin 09f2980ff9 Add optional tmpfs storage for fuzzing corpus (#461)
* Add optional tmpfs storage for fuzzing corpus

Add support for storing the node-local fuzzing corpus in tmpfs (RAM-based
filesystem) for improved I/O performance during fuzzing operations.

Key changes:
- Add CORPUS_TMPFS_PATH environment variable to configure tmpfs location
- Add cross-filesystem safe operations (copy+delete fallback for EXDEV)
- Update Corpus class to use tmpfs path when enabled while maintaining
  correct remote path calculation for rsync synchronization
- Add Helm chart configuration using /dev/shm (requires no host setup)
- Update fuzzer-bot, coverage-bot, merger-bot, seed-gen deployments

The feature is disabled by default. Enable by setting
global.volumes.corpusTmpfs.enabled=true in values.yaml.

Uses hostPath to /dev/shm/buttercup-corpus which is available on
Linux systems without requiring any Kubernetes host configuration.
2026-02-06 20:10:45 +01:00
Henrik Brodin 22cebd4897 Fix starlette security vulnerabilities (CVE-2025-62727, CVE-2025-54121) (#465)
Upgrade FastAPI from ~0.115.6 to ~0.128.0 in orchestrator to allow
starlette >= 0.49.1, fixing:

- CVE-2025-62727 (High): O(n^2) DoS via Range header in FileResponse
- CVE-2025-54121 (Medium): DoS via large multipart file parsing

The orchestrator uses FileResponse and StaticFiles (the affected
components) in the competition API UI.

Resolves: Dependabot alerts #33, #34
2026-02-04 20:32:07 +01:00
Henrik Brodin 0268403c44 Update protobuf to 6.33.5 to fix high severity security vulnerability (#463)
Resolves Dependabot alerts #62, #71, #81 by updating protobuf from
6.33.4 to 6.33.5 across all components.
2026-02-04 20:28:24 +01:00
Ronald Eytchison 240112f2a6 Only copy generated seeds to node-local corpus (#460) 2026-01-27 17:19:59 -05:00
Ronald Eytchison 3c3ae36a11 Fix fuzzer-runner missing transitive dependency and add tests (#459)
* Use openlit <1.36.6

Openlit >=1.36.6 has a bug with langgraph instrumentation.

Also add a test to seed-gen for when openlit is enabled

* Link to issue

* Fix CoverageBot.run_task and add test cases

* Add setuptools as an explicit dependency

This is because a transitive dependency via clusterfuzz depends on it

* Appease ruff
2026-01-27 23:13:53 +01:00
Ronald Eytchison e826b53530 Fix CoverageBot.run_task and add test cases (#458)
* Use openlit <1.36.6

Openlit >=1.36.6 has a bug with langgraph instrumentation.

Also add a test to seed-gen for when openlit is enabled

* Link to issue

* Fix CoverageBot.run_task and add test cases

---------

Co-authored-by: Henrik Brodin <90325907+hbrodin@users.noreply.github.com>
2026-01-27 23:13:34 +01:00
Ronald Eytchison a31b670a2e Fix: Use Openlit <1.36.6 to avoid bug with langgraph instrumentation (#457)
* Use openlit <1.36.6

Openlit >=1.36.6 has a bug with langgraph instrumentation.

Also add a test to seed-gen for when openlit is enabled

* Link to issue
2026-01-27 16:28:41 -05:00
Henrik Brodin 42fb0c126d build(deps): pin protobuf to 3.20.3 in fuzzer_runner for OSS-Fuzz compatibility (#456)
Add uv constraint-dependencies to prevent protobuf from being updated
beyond 3.20.3, which is required for compatibility with OSS-Fuzz
infrastructure.

This prevents dependabot from creating PRs like #453 that would break
the fuzzer runner.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 22:25:04 +01:00
Ronald Eytchison 594748aec1 Use claude 4.5 (#437)
* Replace Claude 4 with Claude 4.5

Also remove Claude 3.5 and replace usage with Claude 4

* Use claude 4.5 as the Anthropic fallback model for patcher
2026-01-27 09:35:30 -05:00
Henrik Brodin b94a23eedb build(deps): update openlit and pydantic to unblock mcp upgrade (#455)
Update dependency constraints to allow mcp 1.26.0:
- common: openlit ==1.35.0 -> ~=1.36.0
- orchestrator: pydantic ~=2.10.5 -> ~=2.11.0

The mcp upgrade was blocked because:
1. openlit 1.35.0 constrained openai-agents to older versions
2. pydantic <2.11.0 blocked mcp 1.23.0+ (requires pydantic>=2.11.0)

Resulting upgrades:
- mcp: 1.12.4 -> 1.26.0
- openlit: 1.35.0 -> 1.36.7
- pydantic: 2.10.6 -> 2.11.10
- openai-agents: 0.2.8 -> 0.3.3

Closes #450

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 14:15:53 +01:00
Henrik Brodin ddb25601a9 build(deps): add fuzzer_runner dependency updates (#451)
Updates pyasn1 0.6.1 → 0.6.2 and urllib3 2.5.0 → 2.6.3 in fuzzer_runner.

These updates are from Dependabot PRs #448 and #449.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 13:31:22 +01:00
Henrik Brodin f89ba22dce build(deps): consolidate dependabot updates (#447)
Update multiple dependencies across components:

patcher:
- langgraph-checkpoint 2.1.1 → 3.0.1 (major version, drops Python 3.9 support)
- langgraph 0.6.6 → 0.6.11
- marshmallow 3.26.1 → 3.26.2 (CVE-2025-68480 fix)
- mcp 1.13.0 → 1.26.0
- starlette 0.47.2 → 0.52.1 (security fix for Range header parsing)

program-model:
- mcp 1.13.0 → 1.26.0
- starlette 0.47.2 → 0.52.1 (security fix for Range header parsing)

seed-gen:
- langgraph-checkpoint 2.1.0 → 3.0.1
- langgraph 0.6.6 → 0.6.11

This consolidates the following Dependabot PRs: #430, #433, #434, #443, #444, #445, #446

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 12:10:31 +01:00
dependabot[bot] e57b4117d8 build(deps): bump aiohttp from 3.12.13 to 3.13.3 in /patcher (#435)
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henrik Brodin <90325907+hbrodin@users.noreply.github.com>
2026-01-27 11:30:26 +01:00
dependabot[bot] 678b6657f3 build(deps): bump python-multipart from 0.0.20 to 0.0.22 in /fuzzer
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.20 to 0.0.22.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.22)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.22
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-27 11:11:22 +01:00
dependabot[bot] 14b7106cb7 build(deps): bump python-multipart from 0.0.20 to 0.0.22 in /seed-gen
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.20 to 0.0.22.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.22)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.22
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henrik Brodin <90325907+hbrodin@users.noreply.github.com>
2026-01-27 10:54:15 +01:00
dependabot[bot] 775d150cc0 build(deps): bump python-multipart from 0.0.20 to 0.0.22 in /program-model
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.20 to 0.0.22.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.22)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.22
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Henrik Brodin <90325907+hbrodin@users.noreply.github.com>
2026-01-27 10:53:47 +01:00
dependabot[bot] 683aee96b7 build(deps): bump python-multipart from 0.0.20 to 0.0.22 in /patcher
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.20 to 0.0.22.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.22)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.22
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-27 10:29:41 +01:00
dependabot[bot] 44958ee84f build(deps): bump python-multipart from 0.0.20 to 0.0.22 in /orchestrator
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.20 to 0.0.22.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.22)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.22
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-27 10:19:01 +01:00
Riccardo Schirone 885912d755 fix: configure subprocess mock as context manager for tests
The subprocess mock was missing __enter__ and __exit__ configuration,
causing tests to hang when ChallengeTask._run_cmd used
`with subprocess.Popen(...) as process:` context manager syntax.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 17:06:33 +01:00
Riccardo Schirone f9d5073c6e ci: switch protobuf generation to grpcio-tools
Use grpcio-tools from the common venv instead of system protoc for
consistent protobuf code generation across development and CI.

Changes:
- Update protoc.sh to use `python -m grpc_tools.protoc`
- Add grpcio-tools ~=1.73.1 to common dev dependencies
- Update check-protobuf CI job to run from common venv
- Regenerate msg_pb2.py and msg_pb2.pyi with new tooling
- Document protobuf generation requirement in CLAUDE.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 17:06:33 +01:00
Riccardo Schirone 2257d3eaa6 fix: resolve Dockerfile hadolint issues
- Add `# hadolint ignore=DL3006` for ARG-based FROM statements
- Add `# hadolint ignore=SC1091` for sourcing /etc/os-release
- Add `--no-install-recommends` to apt-get install commands
- Add `ca-certificates` package for HTTPS curl operations
- Add `automake` to cscope-builder stage (required for autoreconf)
- Consolidate consecutive RUN instructions in fuzzer Dockerfile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 17:06:33 +01:00
Riccardo Schirone fb3938f19b ci: improve static-checks workflow
- Install hadolint from GitHub releases for Dockerfile linting
- Exclude external/ and node_data_storage/ directories from shellcheck
  and hadolint (contain vendored/cloned code)
- Improve merge conflict detection regex to avoid false positives
- Add SC2153 shellcheck disable directives for intentional env var names

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 17:06:33 +01:00
Riccardo Schirone 834cbf3cab ci: improve GitHub Actions workflow security and compatibility
- Replace deprecated `uv pip install --isolated` with direct `uv pip install`
- Fix zizmor template-injection warnings by using env variables instead of
  direct template expressions in shell commands
- Quote $GITHUB_OUTPUT for proper shell escaping

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 17:06:33 +01:00
Riccardo Schirone 47f38b8863 fix: apply ruff import sorting fixes to all source files
Run `ruff check --fix` across all components to fix I001 import sorting
violations in src/ and test/ directories.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 15:17:12 +01:00
Dan Guido 00283a31a5 fix: apply ruff and ty fixes to all Python source files
Apply automated fixes from ruff (import ordering, formatting) and ty (type
checker) to all Python source files across all components:

- Reorder imports according to isort/ruff rules
- Remove unnecessary type: ignore comments
- Fix minor type issues identified by ty
- Add atexit.register(logging.shutdown) where needed
- Consistent formatting

Components affected:
- common/src/
- orchestrator/src/
- fuzzer/src/
- fuzzer_runner/src/
- patcher/src/
- program-model/src/
- seed-gen/src/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 15:17:12 +01:00
Dan Guido e3d0d29356 fix: apply ruff fixes to all test files
Apply automated fixes from ruff (import ordering, formatting) to all test
files across all components:

- Reorder imports according to isort/ruff rules
- Remove unnecessary imports
- Consistent formatting

Components affected:
- fuzzer/tests/
- orchestrator/test/
- patcher/tests/
- program-model/tests/
- seed-gen/test/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:52:59 +01:00
Dan Guido c32fe7a767 ci: consolidate GitHub Actions workflows (#427)
Consolidate and improve GitHub Actions workflows:

Deleted redundant/outdated workflows:
- claude-code-review.yml - No longer used
- claude.yml - No longer used
- pre-commit.yml - Merged into static-checks.yml

Renamed for clarity:
- comp-integration.yml → component-integration.yml
- integration.yml → system-integration.yml

New workflows:
- static-checks.yml - Comprehensive static analysis (shellcheck, hadolint, actionlint)

Improvements:
- Add actionlint configuration (.github/actionlint.yaml)
- Update dependabot configuration with cooldown settings
- Improve workflow concurrency settings
- Pin actions to SHA hashes for security
- Add better job dependencies and caching

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:46:53 +01:00
Dan Guido 0206c0f6e1 chore: update Python dependencies and pyproject.toml configs
Update dependencies across all components:
- Update ruff to v0.12.0
- Add ty (Astral type checker) as dev dependency
- Standardize pyproject.toml configurations
- Regenerate uv.lock files

Components updated:
- common
- orchestrator
- fuzzer
- fuzzer_runner
- patcher
- program-model
- seed-gen

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:44:48 +01:00
Dan Guido 1d47e6347f fix: apply hadolint fixes to all Dockerfiles
Apply hadolint recommendations to all Dockerfiles:
- Add SHELL instruction with pipefail for proper error handling
- Use COPY instead of ADD where appropriate
- Add hadolint ignore comments for intentional violations
- Consistent formatting

Files fixed:
- fuzzer/Dockerfile
- orchestrator/Dockerfile
- patcher/Dockerfile
- program-model/Dockerfile
- seed-gen/Dockerfile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:23:54 +01:00
Dan Guido 95875b4ec5 fix: apply shellcheck and shfmt fixes to all shell scripts
Apply automated fixes from shellcheck and shfmt to all shell scripts:
- Quote variables to prevent word splitting and globbing
- Use $(...) instead of backticks for command substitution
- Add proper shebang and set -euo pipefail where missing
- Fix array handling and iteration patterns
- Consistent indentation (4 spaces)
- Remove unnecessary curly braces and simplify expressions

Files fixed:
- deployment/*.sh
- scripts/*.sh
- orchestrator/scripts/*.sh
- fuzzer_runner/runner.sh
- protoc.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:13:16 +01:00
Riccardo Schirone dc6b1e0072 ci: use uvx to run ty in pre-commit hook
uvx runs tools in isolated environments without requiring them as
project dependencies, which is needed for CI where project deps
aren't installed when pre-commit runs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:59:15 +01:00
Riccardo Schirone c5a617e841 ci: add uv setup to pre-commit workflow
The ty hook requires uv to run `uv run ty check src/`, but the
workflow was missing the uv installation step, causing hook
failures with exit code 127 (uv: command not found).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:59:15 +01:00
Dan Guido 41508a016c chore: replace mypy with ty in Makefile lint targets
Update lint-component target to use ty (Astral type checker) instead of mypy:
- Run ty check for all components uniformly
- Add fuzzer_runner to available components list
- Simplify type checking logic

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:59:15 +01:00
Dan Guido 494c8ab193 chore: add linting infrastructure for shell, Docker, and GH Actions
Add pre-commit hooks for comprehensive static analysis:
- shellcheck and shfmt for shell script linting/formatting
- hadolint for Dockerfile linting
- actionlint for GitHub Actions workflow validation
- zizmor for GitHub Actions security analysis
- ty (Astral) for Python type checking

Add configuration files:
- .hadolint.yaml - Dockerfile linting rules
- .shellcheckrc - Shell script linting rules

Update .gitignore for new tool artifacts.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:59:15 +01:00
Dan Guido ea7c136e49 chore: add Serena MCP server configuration
Add configuration for Serena semantic code navigation:
- .mcp.json - MCP server configuration for Claude Code
- .serena/project.yml - Project-specific settings (roots, languages, ignores)
- .serena/.gitignore - Ignore cache directory

Serena provides semantic code navigation tools that understand symbol
relationships, making it easier to explore and modify the codebase.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:30:11 +01:00
Dan Guido e67a32ab3f docs: improve developer documentation
CLAUDE.md:
- Add code navigation section with Serena tool recommendations
- Recommend symbolic tools over line-based edits

CONTRIBUTING.md:
- Add linting infrastructure section covering shellcheck, hadolint, actionlint
- Document pre-commit hook configuration
- Add integration with lint Makefile target

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:30:11 +01:00
Dan Guido a18c86a3e0 docs: add local minikube deployment guide
Add comprehensive documentation for local development deployment:
- Docker Desktop resource configuration (CPU, memory, disk)
- Common errors and solutions (resource insufficiency, pending pods, GHCR auth)
- Resource expectations table for different memory allocations
- macOS ARM64 (Apple Silicon) notes
- Verification steps and useful debugging commands

Also update env.template with inline comments explaining minikube resource
settings and their relationship to Docker Desktop resources.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:29:46 +01:00
Henrik Brodin 9575877a3e Use project specified in oss-fuzz (#415)
* Use project specified in oss-fuzz

This will use the contents of the oss-fuzz provided container as the
projects contents instead of a user supplied git url. This will allow to
run projects very similar to how oss-fuzz does it. It will enable
analysis of e.g. libmodbus who was previously not possible due to the
fuzzing harnesses being overwritten/shadowed by the mount of project
directory.
Use project_name for focusdir when in doubt
2026-01-23 14:55:19 +01:00
Riccardo Schirone e235368811 Fixes to docker-compose file (#417) 2026-01-22 14:08:17 +01:00
Henrik Brodin 1d83c2daf4 Improve fuzzer logging (#416)
To help when integrating new harnesses with buttercup, this provides
more detailed logging about harness execution and exit.
2026-01-21 13:03:00 +01:00
Henrik Brodin a77dbf324e feat: add git lfs support for challenge repositories (#413)
* feat: add git lfs support for challenge repositories

Use git-lfs when downloading challenges to handle large binary files.

* Update orchestrator/src/buttercup/orchestrator/ui/competition_api/services/challenge_service.py

Co-authored-by: Ronald Eytchison <58823072+reytchison@users.noreply.github.com>

---------

Co-authored-by: Ronald Eytchison <58823072+reytchison@users.noreply.github.com>
2026-01-19 14:52:25 +01:00
Ronald Eytchison 8ad6b32c51 Sanitize exception messages for git clone command (#411)
* Sanitize exception messages for git clone command

* Update test case

* Don't sanitize exception if there is no PAT
2026-01-15 08:56:12 -05:00