Contents
Contributing to pgContext
pgContext’s PostgreSQL 17 V1 source build is complete. Contributions should be small, tested, and aligned with the crate boundaries in the workspace.
Use GitHub issues or discussions for public design and support questions. Send
potential security vulnerabilities privately to team@evokoa.com as described
in SECURITY.md.
Before opening a change, run:
cargo fmt --check
cargo clippy --workspace --exclude context-pg --all-targets --all-features -- -D warnings
cargo clippy -p context-pg --all-targets --features pg17 -- -D warnings
cargo test --workspace --exclude context-pg --all-features
cargo check -p context-pg --features pg17
scripts/run-v1-pgrx-tests.sh
cargo pgrx schema -p context-pg pg17 --out /tmp/pgcontext--0.1.0.generated.sql
cargo doc --workspace --no-deps
scripts/check-crate-boundaries.sh
scripts/check-public-docs.py --check
tests/shell/check_public_docs_smoke.sh
scripts/check-parity-matrix.sh
tests/shell/check_parity_matrix_smoke.sh
tests/shell/run_benchmark_report_smoke.sh
tests/shell/run_release_artifact_report_smoke.sh
tests/shell/run_security_review_report_smoke.sh
tests/shell/run_postgres_matrix_gates_smoke.sh
tests/shell/run_platform_build_report_smoke.sh
tests/shell/run_supply_chain_report_smoke.sh
scripts/check-source-hygiene.sh
scripts/run-fuzz-smoke.sh
Fuzz targets live under fuzz/ and use cargo-fuzz. Install cargo-fuzz
outside this repository if needed. Run the bounded, fixed-seed smoke suite for
ordinary development:
scripts/run-fuzz-smoke.sh
scripts/run-fuzz-smoke.sh --target cursor_state
The registry in fuzz/smoke-targets.txt fixes the per-target input bound and
requires a checked-in seed corpus. The smoke runner copies those seeds under
target/ before invoking libFuzzer, so local mutations never alter the source
corpus. Long-duration campaigns and their release evidence remain a separate
post-freeze workflow.
Property tests use proptest and run with the normal crate test commands.
Public behavior changes must include user-facing documentation. Public Rust APIs need rustdoc that explains errors, panics, and safety contracts where relevant.
Dependency additions must go through sfw for package-manager install or add
commands and should be isolated in their own commit when practical.