CEQA Preflight is an early-stage, local-first command-line tool for checking the technical readiness of CEQA Submit filing packages.
It is designed to help planners, clerks, and consultants catch objective, correctable package issues before State Clearinghouse review. It will produce source-cited advisory findings and human-review reminders; it will not submit documents, modify originals, make network requests at runtime, or determine legal sufficiency.
Status: In build
CEQA Preflight is pre-alpha software. The repository includes safe local package loading, bounded PDF
technical inspection, a source-cited declarative rule engine, and an initial
common technical rule pack. NOD- and NOE-specific rules are currently
experimental: they run only with --include-experimental while documented
official-source review, practitioner review, tests, and a permissioned pilot
are completed.
- Local directory or ZIP input.
- NOD and NOE package checks.
- Deterministic PDF and metadata checks.
- Accessible HTML and JSON reports.
- No hosted document storage, portal scraping, or AI-driven legal analysis.
uv sync --all-groups
uv run ceqa-preflight --version
uv run ceqa-preflight --help
uv run ceqa-preflight init ./my-package --filing-type NOE
uv run ceqa-preflight check ./my-package --filing-type NOE --format html --output ./reports
uv run ceqa-preflight check ./my-package --filing-type NOE --include-experimental
uv run ceqa-preflight rules list --filing-type NOE
uv run ceqa-preflight pilot init ./pilot-evidence
uv run ceqa-preflight pilot summarize --reviews ./pilot-evidence/finding-review.csv --baseline ./pilot-evidence/manual-baseline.csv
The check command reads a directory or ZIP package locally, never uploads or
alters its contents, and can emit console, JSON, or self-contained HTML
advisory reports. Add --manifest package.yaml to enable explicit primary
form and document-category checks when experimental rules are opted into. The
default run includes active technical checks only. Add --log-format json for
minimal, package-content-free operational events on stderr.
The pilot commands support the permissioned evaluation protocol with opaque
IDs and controlled labels only; they do not read filing packages or accept
free-text reviewer notes.
CEQA Preflight is an independent open-source project. It is not affiliated with, endorsed by, or operated by the State of California, the Governor's Office of Land Use and Climate Innovation, the State Clearinghouse, CEQA Submit, or CEQAnet. See DISCLAIMER.md.
make verify
See CONTRIBUTING.md, SECURITY.md, and the architecture decision. The project also documents its pilot protocol, pilot partner kit, accessibility boundaries, and threat model.
The command-line interface and JSON report schema are not yet stable. No
GitHub Release or package publication has been made; version 0.1.0 is the
pre-release development baseline, not a promise of production readiness.
Breaking changes may occur before the first tagged release. See
CHANGELOG.md and docs/ROADMAP.md.
This project follows the pinned Portfolio Standards
submodule at release v1.0.1. “Applies” means an automated or documented
control exists; release-only evidence is collected before a tagged release.
| Standard | Status | Evidence / scope |
|---|---|---|
| Responsible-Tech Framework | Applies | Dated audits, threat model, and residual-risk register |
| AI Development Measurement | Applies | Development-use baseline is recorded in the audit log; no AI runtime claim is inferred from tool use |
| Code Quality | Applies; floor uplifts pending | Strict typing, coverage, complexity, and lint gates live in pyproject.toml and Makefile; analyzer and complexity-floor uplifts are tracked in PRs #14 and #15 |
| Security & Supply-Chain | Applies | Security policy, least-privilege SHA-pinned workflows, SAST, dependency audit, secret scan, SBOM, and provenance gates |
| CI/CD | Applies | .github/workflows/, Makefile, CODEOWNERS, and protected pull-request verification |
| Release & Versioning | Applies; pre-release gap | Changelog, pre-release contract, and trusted-main release uplift tracked in PR #12; no release has been published |
| Accessibility | Applies | Accessibility boundary and test evidence; human release review remains open before the first tag |
| Observability | Applies at local-CLI tier | Opt-in structured JSON operational events contain no package content; no hosted service or telemetry backend exists |
| Performance | Applies at local-CLI tier | ZIP, file, PDF-page, extraction-time, and worker-time bounds are enforced by PackageLimits and documented in the threat model |
| Internationalization | Applies; pre-release gap | Human-readable civic reports are currently English-only; scope correction and the EN/ES release gate are tracked in PR #16 |
| AI Evaluation | N/A — no AI runtime | The application ships no model, prompt, retrieval, generated answer, or AI inference path |
| Documentation | Applies | Roadmap, definition of done, ADRs, rule-authoring guidance, source reviews, and changelog |
| Quality & Metrics | Applies | make verify, 90% branch-coverage floor, controlled-label pilot precision/false-negative/timing measures, and release gates |
| Incident Response | Applies | Security reporting and response policy plus release-time residual-risk review; no hosted on-call surface exists |
| Data Governance | Applies | Local filing-package data card, no-retention architecture, permissioned-pilot protocol, and package-content-free logs |
The central standards register is maintained separately and must be updated when this repository is published.