Veto is in public beta. Bug reports, provider compatibility notes, and focused improvements to routing behavior are welcome.
Use the repository issue forms for bugs, features, and optimization proposals. Every issue must state a concise summary, reproduction or context, expected and actual behavior, scope, and a checklist of explicit acceptance criteria.
Pull requests must use the PR template. Link the issue, copy each acceptance criterion into the evidence section, and include concrete verification for each one. The repository check verifies that the fields and evidence are present; it does not semantically prove that the criteria are complete. Maintainers make that determination and retain responsibility for merge approval.
Use Conventional Commits syntax for the PR title and every commit title
(feat:, fix:, perf:, or another supported type). CI checks both because
Release Please parses commit subjects from Git history: rebase merges keep each
commit subject, while squash merges use either the PR title or a commit title.
A non-conventional subject can be omitted from release notes and version bumps.
Contributor trust is classified by the versioned
policy: whitelisted logins pass this
governance check without issue, acceptance-evidence, reputation, or
commit-author validation; blacklisted logins are blocked with the configured
reason; and every unlisted login is grey. Grey contributors need a
same-repository issue with acceptance criteria and pass the advisory GitHub
reputation lookup; valid grey PRs receive needs-maintainer-review. Login
matching is case-insensitive. The PR author is accountable; commit-author
mismatches are reported separately for maintainer review. Reputation data is
only a review signal, never an automatic quality judgment.
PRs authored by github-actions[bot] are an explicit trusted-automation
exception because they originate from repository-owned workflows. They skip
duplicate issue and acceptance-criteria checks, but remain subject to branch
protection, required CI, and maintainer review. Other automation and bot PRs
remain subject to the normal checks.
The governance check fails closed when a grey contributor's issue or reputation data cannot be read. Maintainers may update the versioned policy in a reviewed PR, documenting the reason; whitelist entries intentionally bypass this check, while branch protection and required CI still apply. Blacklisted PRs are commented on and blocked, not automatically closed.
- Search existing issues first.
- Include the command, expected result, actual result, operating system, and Veto version.
- Redact API keys, credentials, provider responses, terminal history, and
files under
~/.veto/. - For routing-quality reports, include the task kind and risk level, but remove proprietary task content.
Keep changes narrow and explain the user-visible behavior they affect. Add or update tests when behavior changes, then run:
go test -race -timeout 120s ./...
go vet ./...
go build ./cmd/veto
./scripts/agent-skill-smoke.sh
release_dist=$(mktemp -d)
./scripts/package-release.sh v0.0.0 "${release_dist}"Changes to installation, doctor, or release packaging should also extend the
fresh-home onboarding smoke and validate all six archives plus both checksum
manifests locally. Do not add a second packaging implementation to the GitHub
workflow; it must reuse scripts/package-release.sh.
Changes to model IDs, pricing, or provider behavior need current provider evidence. Synthetic benchmark results may demonstrate routing mechanics, but must not be presented as proof of production quality or savings.
veto feedback collects the same structured vocabulary as the issue forms,
saves a redacted report under ~/.veto/feedback/ with mode 0600, and opens a
prefilled GitHub issue in the default browser. It never includes credentials,
raw task text, provider responses, terminal history, or ~/.veto/ contents by
default. Provider/model metadata is included only with explicit
--include-provider confirmation. Use flags for scripts, or pipe a report
object with --stdin --json.
The browser payload is bounded. If it is shortened, the complete redacted
report remains at the printed local path and can be attached manually. GitHub
sign-in is required for attribution; Veto never creates or uses a shared
account. If GitHub is unavailable, keep the local report and submit it later
after signing in. Post-run feedback is disabled by default and never appears
for non-interactive execution. Opt in with "post_run_feedback": true in
~/.veto/config.json; use veto run --no-feedback or
veto exec --no-feedback for an explicit per-run opt-out.
By contributing, you agree that your contribution is licensed under the Apache License 2.0.