Docs / contributor-checklist · Edit on GitHub

Contributor checklist

Single hub for adding or updating a language, config/markup plugins, and shipping a feature change — including which tests to run before opening a PR.

This doc does not replace the deep guides it links to. Use it to pick a path, run the right tests, and paste the commands you ran in your PR.

Setup and clone: CONTRIBUTING.md · Crate map: Code_structure.md


0. Before you code

StepAction
IssueOpen or claim an issue (language: Language Support Request; feature: Feature request).
Tier / pathDecide Tier 1 vs 2 vs 3, markup, config, or feature — see §1.
DesignLarge features: skim or add a note under design/. Tier 1 languages: read tier-1-language-support.md Layers A–F first.
Crate mapKnow where your change lives — Code_structure.md.
CommitsInclude DCO sign-off on every commit — §6.

1. Choose your path

PathWhenDeep guide
Tier 1 languageCustom LanguagePlugin, full CFG/PDG/taint + Layer F CPGtier-1-language-support.md
Tier 2 languageGeneric tree-sitter + LanguageConfiglanguages.md · scaffold in tier-1 §3–4 (Tier 2 uses config.rs)
Tier 3 languageRegex patterns onlylanguages.md
Config formatsJSON, YAML, TOML, properties, …crates/rgctl-config-formats
Markup (Markdown)Doc context graph (not Tier 1/2)markdown-context.md
Feature changeCLI, analysis, graph, dashboard, semantic, …§4 + matching design/ doc

2. Programming languages

Scaffold (all tiers)

  1. Add crates/rgctl-lang-{id}/ and register in crates/rgctl-languages/.
  2. Update languages.toml (extensions, handler, kinds).
  3. Wire workspace Cargo.toml.

Full layout and naming: tier-1-language-support.md §3–4.

Tier 2 / Tier 3 — minimum tests

TierRun before PR
Tier 2Plugin unit tests in crates/rgctl-lang-{id}/; cargo test on touched crates; optional fixture under tests/fixtures/
Tier 3Same as Tier 2; no CFG/taint/dashboard gates

Promoting Tier 2 → Tier 1: tier-1 §5.

Tier 1 — test matrix (Layers E + F)

Layer definitions (A–F prose, F1–F7 table, honesty limits): tier-1 §2.
Copy-paste PR checklist block: tier-1 §7.

GateLayerCommand / location
E1 Plugin symbols + CallsEcargo test -p rgctl-lang-{id}
E2 CFG branching + loopEcargo test -p rgctl-analysis cfg_builder
E3 Taint source→sinkEcargo test --test taint_analysis or tests/{lang}_taint.rs
E4 Fixture integrationEe.g. cargo test --test go_cfg_analysis
E5 Dashboard bundleEcargo test --release --test dashboard_ecommerce_{lang} + shared dashboard_harness.rs
E6 Workspace cleanE§5 standard test workflow
F6 Field-write goldenFcrates/rgctl-analysis/src/field_write.rs{id}_cfg_captures_field_write_and_query
Langfeature GQL probesE/Fcargo test --test java_langfeatures · cargo test --test go_langfeatures (see go-language-coverage.md)

Dashboard gates by language (release mode; external fixture repos — set RGCTL_*_REPO if needed):

LanguageTest target
Godashboard_ecommerce_go
Javadashboard_gbuilder (gbuilder golden)
C#dashboard_ecommerce_csharp
Cdashboard_ecommerce_c
C++dashboard_ecommerce_cpp
Pythondashboard_ecommerce_python
Rustdashboard_ecommerce_rust
JavaScriptdashboard_ecommerce_javascript
TypeScriptdashboard_ecommerce_typescript

Fast dashboard smoke (tiny in-tree fixture): cargo test --test dashboard_bundle.

Parity snapshot: tier-1 §8.


3. Config / markup

Config format plugins

  • Code: crates/rgctl-config-formats
  • Tier table: languages.md (config formats do not run CFG/PDG)

Run workspace tests touching the format crate; add fixture tests if you change extraction behavior.

Markdown context graph

Deep guide: markdown-context.md. Fixture: tests/fixtures/markdown-context/.

GateCommand
CLI discover + GQLcargo test --test markdown_context_cli
In-memory spec matrixcargo test -p rgctl-extraction markdown_spec_coverage
Extraction unit testscargo test -p rgctl-lang-markdown · cargo test -p rgctl-extraction markdown_context_gql

Optional cold profile (large corpus): markdown-context.md § Cold profile.


4. Feature updates

Map what you touchedtests to run. Design detail lives in design/README.md.

Touch areaPrimary testsNotes
CLI JSON serializerscargo test --test cli_outputcli-io-sanity-qe.md Layer 1
CLI subprocess / flagscargo test --release --test subprocess_golden_path · --test all_commands_sanityLayers 2–3
Blast radius / policycargo test --test blast_radius · --release --test blast_radius_perfblast-radius-design.md
GQLcargo test --test gql_integration · --test gql_optimizergql-design.md
Semantic searchcargo test --test semantic_search_qe · semantic_audit · semantic_boundarysemantic-search-design.md
Graph / metrics / communitiescargo test --test graph_correctness · map_collision_qe · cross_feature_qe · community_auditQE suite
CFG / PDG / slicecargo test --test slicing · with_cfg_cli · dominancecfg-design.md · pdg-design.md
Taintcargo test --test taint_analysis · language *_taint.rstaint-analysis-design.md
Hybrid CPG (cpg CLI)field_write unit tests · with_cfg_clihybrid-cpg-plan.md
Migration plannercargo test --test migration_plan_cli · with_dashboard_climigration-planner-design.md
CI policy checksubprocess golden paths · graph_projectionsci-policy-checks-design.md
HTTP servecargo test --test http_servehttp-api.md
Dashboard export / UIcargo test dashboard_harness · ./scripts/test-dashboard-golden.shdashboard-design.md
User-guide workflowcargo test --test user_guide_scenarios (needs release rgctl, jq)user-guide.md
Core integrationcargo test --test integration_core_features · bundlesEdge extraction + persistence

Dashboard PR checklist

When changing dashboard/ or crates/rgctl-dashboard/:


5. Standard test workflow

Run before opening a PR (add path-specific targets from §2, §3, or §4):

cargo fmt --all -- --check

cargo clippy --lib --bins -- -D warnings
cargo clippy -p rgctl-analysis -- -D warnings
cargo clippy -p rgctl-graph -p rgctl-core -- -D warnings

cargo test --workspace --lib --bins --tests

cargo build --release -p rgctl
CARGO_BIN_EXE_rgctl="$PWD/target/release/rgctl" \
  cargo test --test user_guide_scenarios

cargo test --test map_collision_qe
cargo test --test graph_correctness
cargo test --test semantic_search_qe
cargo test --test cross_feature_qe

cargo test --test cli_output
cargo test --release --test subprocess_golden_path
cargo test --release --test all_commands_sanity

cargo test --release --test blast_radius_perf

Optional release-mode dashboard gates: add --release --test dashboard_* targets from §2.

CLI I/O layer reference: cli-io-sanity-qe.md. Workflow mirror: .github/workflows/ci.yml.


6. Documentation & PR

Doc updates

Change typeUpdate
User CLIuser-guide.md · validate with cargo test --test user_guide_scenarios
Agent / JSONAGENTS.md · json-api.md · agent-recipes.md
Languages listlanguages.md
Dashboard UXdashboard-user-guide.md
New capabilityMatching doc in design/

Signed commits and DCO

Every commit in a PR must include DCO sign-off — use -s / --signoff so the commit message contains:

Signed-off-by: Your Name <your.email@example.com>

The sign-off certifies agreement with the Developer Certificate of Origin (DCO).

One-shot:

git commit -s -m "your message"

Verify before push:

git log -1 --format=%B | grep -i '^Signed-off-by:'

Open the PR

  1. Branch from main.
  2. Fill in .github/PULL_REQUEST_TEMPLATE.md.
  3. List exact commands you ran (see §5).
  4. Tier 1 language PRs: paste the checklist from tier-1 §7.

7. Decision tree

                    ┌─────────────────┐
                    │  What changed?  │
                    └────────┬────────┘
                             │
         ┌───────────────────┼───────────────────┐
         ▼                   ▼                   ▼
   ┌───────────┐      ┌─────────────┐     ┌─────────────┐
   │ Language  │      │ Markup /    │     │ Feature /   │
   │ plugin    │      │ config      │     │ infra       │
   └─────┬─────┘      └──────┬──────┘     └──────┬──────┘
         │                   │                   │
    Tier 1?              Markdown?           See §4 table
    ├─ yes → §2          ├─ yes → §3         + design doc
    │   Tier 1 matrix    │   markdown_*      │
    └─ no → §2           └─ else config      Dashboard?
       Tier 2/3 min          formats              │
                              crate tests     §4 dashboard
                                                checklist
         │                   │                   │
         └───────────────────┴───────────────────┘
                             │
                             ▼
              §5 standard test workflow
                             │
                             ▼
              §6 signed commits + DCO + PR template

See also