Canonical analysis contracts, provider adapters, normalized findings, validation, and deterministic artifact generation for Quantum-L9 CI.
Project description
l9-ci-sdk
Canonical analysis contracts, provider adapters, normalized findings, validation, and deterministic artifact generation for the L9 CI constellation.
CI Core orchestrates. CI SDK observes. Downstream products diagnose, mutate, learn, prevent, and decide — they are not implemented here.
Agent operating law (architecture, phases, layer edges, git hygiene):
AGENTS.md. Deep SSOT: docs/architecture/,
docs/adr/, .l9/.
Install
Python ≥ 3.11. Two supported paths (keep deps aligned):
# Local editable install (console script `l9-ci`)
python -m venv .venv && source .venv/bin/activate
pip install -e ".[ci]"
# Or: runtime deps only (matches Core provision-sdk)
pip install -r requirements.txt
export PYTHONPATH=.
python -m l9_ci --help
- Runtime pins:
requirements.txtandpyproject.toml(must stay in sync). - CI toolchain pins:
requirements-ci.txt. - Core’s
provision-sdkstill runs this tree from source onPYTHONPATHand installsrequirements.txtinto its venv. - Publishing notes:
docs/PUBLISHING.md.
CLI map
Entry points: l9-ci (after editable/wheel install) or python -m l9_ci.
| Group | Commands |
|---|---|
semgrep |
detect, normalize |
bundle |
validate, project-agent-payload |
compatibility |
check |
gate |
evaluate |
providers |
list, detect |
baseline |
compare-tests, scan-packet-envelope, compare-scan, validate-ledger |
manifest |
generate, check |
Core happy path:
semgrep JSON → l9-ci semgrep normalize → l9-ci bundle validate
→ l9-ci bundle project-agent-payload → Core upload / publish
Exit codes and contract details: docs/architecture/cli-contract.md,
.l9/integration-contract.yaml.
Local gate (fail-closed)
Mechanical checks SSOT: .pre-commit-config.yaml.
Orchestration: Makefile.
make bootstrap # .venv + deps + install pre-commit/pre-push hooks + doctor
make fmt # intentional autofix (commit results)
make check # hooks → clean tree → mypy → pytest
make push # check, then git push
Do not bypass with git push --no-verify. Prefer make push.
Local zizmor is fail-closed even when dogfood CI is advisory.
actionlint remains CI-only until a pre-commit hook is added.
Dropbox / mypy: a .venv inside Dropbox often breaks mypy’s native
extensions. Prefer a clone outside Dropbox, or point Make at an off-Dropbox
interpreter (see AGENTS.md §10).
CI surfaces in this repo
| Surface | Workflows | Role |
|---|---|---|
| Core-driven self-analysis | l9-analysis*.yml |
Pins l9-ci-core by immutable SHA; advisory dogfood today |
| Self-CI (no Core) | l9-self-ci.yml |
Classifier / rule-modes gate (engine: ci-debt) |
| YAML governance | l9-yaml-governance.yml + dogfood |
Reusable yamllint / governance JSON / Action pins / actionlint / zizmor |
| Biome static checks | l9-biome-scan.yml + dogfood |
JSON/JS/TS formatter+linter ownership (biome.json) |
| Manifest reconcile | l9-manifest-reconcile.yml |
Keeps root MANIFEST.md aligned with tracked truth |
YAML governance configs: root lint/. Biome config: root
biome.json. Downstream callers pin immutable SDK SHAs.
Details: docs/architecture/yaml-governance.md,
docs/architecture/biome.md,
docs/architecture/repository-manifest.md.
Constellation
| Product | Role |
|---|---|
l9-ci-core |
Orchestrates |
| l9-ci-sdk (this repo) | Observes / contracts |
l9-ci-debt-resolver |
Diagnoses |
PR_Repair |
Mutates |
l9-ci-debt-intelligence |
Learns |
l9-ci-debt-lsp |
Prevents |
l9-assurance |
Decides |
Docs for agents (collision policy)
README.md— short human entrypoint. Agents must not rewrite it from unrelated feature PRs (seeAGENTS.md§13).AGENTS.md— agent operating law; update when law/surface changes.- Git hygiene — WIP commits over stashes; never switch branches over
uncommitted work (see
AGENTS.md§12).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file l9_ci-1.0.0.tar.gz.
File metadata
- Download URL: l9_ci-1.0.0.tar.gz
- Upload date:
- Size: 431.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d841f7d15c32ff4348162fa01f29a02e981c49ac6ff1d9c07cdc4db31b2b6072
|
|
| MD5 |
1f3f4f2c4aa289f952f58ada71419108
|
|
| BLAKE2b-256 |
6d0fc891df0733193498102925b4a643c784552385829443c4f3407a22aafc4b
|
File details
Details for the file l9_ci-1.0.0-py3-none-any.whl.
File metadata
- Download URL: l9_ci-1.0.0-py3-none-any.whl
- Upload date:
- Size: 128.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c495261defd2053adfbb38cef05760fade0f55a6546f4a137ceccfacc8cea019
|
|
| MD5 |
52e5c9e47482e2cc0aeddd963607c58b
|
|
| BLAKE2b-256 |
eb17c5931b46d15b9a1e2422cc8602ff359c0da3cd9ce5f8e287707d8cff6b6c
|