CircleCI proof-command discovery¶
SDETKit can inspect repository-owned CircleCI configuration without calling the CircleCI API or running target-repository commands.
Run the read-only adoption surface:
python -m sdetkit adoption-surface \
--root . \
--out build/sdetkit/adoption-surface.json \
--format report
Evidence SDETKit reads¶
The adapter checks these repository paths:
.circleci/config.yml
.circleci/config.yaml
When a top-level job contains a literal single-line run step, SDETKit can recommend that command for human review. The recommendation includes:
ci_system=circleci
file=<config path>
job=<job name>
step_name=<optional run-step name>
purpose=<test|lint|type|security|docs|unknown>
auto_run_allowed=false
executes_untrusted_code=true
Supported literal shapes include:
- run: python -m pytest -q
- run:
name: Lint
command: python -m ruff check .
- run: {name: Types, command: mypy src}
Review-first behavior¶
SDETKit does not evaluate or guess behavior from:
setup: truedynamic configuration;- orbs or orb steps;
- pipeline or job parameters;
- reusable command bodies or invocations;
- CircleCI interpolation such as
<< pipeline.parameters.value >>; - shell variables or command substitution;
- multiline YAML command blocks;
- unsupported custom step mappings;
- multiple CircleCI config files where the active file cannot be inferred.
These signals are written to review_first_unknowns so an operator can inspect the native CircleCI configuration.
Safety boundary¶
A recommended command is evidence, not authorization. SDETKit does not execute it automatically and does not mutate the target repository or CircleCI project.
automation_allowed=false
patch_application_allowed=false
merge_authorized=false
semantic_equivalence_proven=false
Orbs, parameters, dynamic configuration, remote behavior, contexts, secrets, and project settings remain outside this repository-only proof.
Maintainer proof¶
python -m pytest -q tests/test_adoption_surface_circleci.py -o addopts=
python -m pytest -q \
tests/test_adoption_surface_jenkins.py \
tests/test_adoption_surface.py \
-o addopts=
python -m pre_commit run -a