Contributing#
The authoritative contributor guide lives at the repository root, in
CONTRIBUTING.md.
It is kept there rather than duplicated here so there is one copy to keep
current.
This page is a summary and a set of pointers.
The short version#
git clone https://github.com/EvilBit-Labs/dbsurveyor.git
cd dbsurveyor
just dev-setup
pre-commit install
just format # run this BEFORE just check
just check # format-check, lint, test, vuln -- the gate
just test-integration # container-backed adapter tests (needs Docker)
just check is the gate. Run just format first: the gate starts with a format
check, so skipping it turns a whitespace difference into a failure that reads
like a lint error.
Before you write code#
-
Read GOTCHAS.md.
It records behaviors that have already cost somebody time: tests that
reported success over nothing, the asymmetry between how artifacts are
written and read, linter rules that contradict each other, and a per-engine
list of database quirks re-validated against the current adapters. -
Open an issue first. For anything beyond a typo, discuss it before writing
code. This saves everyone time if the change does not fit the project's
direction. -
One issue per pull request. If a fix needs a refactor, that is a separate
pull request, discussed first.
Non-negotiables#
Every change must maintain these. They are what the tool exists to promise:
- Offline only. No network call except to the target database. No telemetry.
- Read only. No schema modification, no DML, no temporary objects.
- Credentials never reach output. Not an artifact, not a log line, not an
error message. - No cgo. A repository test fails on any cgo dependency entering the graph.
- ASCII only, in source and in Markdown, checked byte by byte.
Several of these are enforced by tests rather than by review, because a reviewer
will eventually miss one. See the architecture section of the root guide.
A test that has never failed is not evidence#
Before trusting a new invariant test, break the invariant on purpose and watch it
fail. Two repository-level tests in this tree reported success over an empty set
for months. Both are recorded in GOTCHAS.md section 1, and the pattern is the
lesson rather than the two specific bugs.
AI-assisted contributions#
Accepted, under the terms in
AI_POLICY.md.
The short version: you own every line you submit and must be able to explain it,
disclose your tools in the pull request, and do not submit output you have not
read and run.
Reporting a vulnerability#
See SECURITY.md.
Do not open a public issue for a security vulnerability.