Skip to content
 
 

Repository files navigation

CEQA Preflight

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

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, a common technical rule pack (readability, searchable text, flattened forms, structure tags, file hygiene), and a synthetic-package generator for demos and pilot calibration. 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.

Intended initial scope

  • 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.

Quick start

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 init ./my-package --filing-type NOE --from-package
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 check ./pkg-a ./pkg-b --filing-type NOE --format json --output ./reports
uv run ceqa-preflight check ./my-package --filing-type NOE --format checklist
uv run ceqa-preflight synth ./demo-package --filing-type NOE --defect scanned
uv run ceqa-preflight rules list --filing-type NOE
uv run ceqa-preflight rules list --format json
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

Without a local checkout, run the CLI directly from a clone with uv: uvx --from /path/to/ceqa-preflight ceqa-preflight --help, or install it with pipx install /path/to/ceqa-preflight. No package registry release exists yet.

The check command reads one or more directories or ZIP packages locally, never uploads or alters their contents, and can emit console, JSON, self-contained HTML, or printable sign-off checklist advisory reports. Checking several packages at once prints a per-package roll-up summary. Add --manifest package.yaml to enable explicit primary form and document-category checks when experimental rules are opted into (single package only), and --rules / --exclude-rules to select specific rule identifiers. The default run includes active technical checks only. Add --log-format json for minimal, package-content-free operational events on stderr, including inspection progress counts for large packages.

The synth command generates plainly fictional synthetic packages, optionally seeded with objective defects (scanned pages, fillable forms, encrypted or truncated PDFs, duplicates, and more) for demos, regression tests, and pilot reviewer calibration. See examples/ for a generated package and its HTML report.

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.

Exit codes

check exits 0 when no automated failure was found (warnings and manual-review items may still exist), 1 when at least one failure finding was produced, and 2 on input or internal rule errors. With multiple packages, the worst exit code wins.

Non-affiliation and disclaimer

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.

Development

make verify

This project is developed with AI-assisted tooling. Every change, whether AI-assisted or not, must pass the same review, tests, and make verify gate before merge; AI-assisted development measurement is tracked in the responsible technology audits.

See CONTRIBUTING.md, SECURITY.md, and the architecture decision. The project also documents its pilot protocol, pilot partner kit, accessibility boundaries, and threat model.

Public API and release status

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.

Standards conformance

This project follows the vendored Portfolio Standards. “Applies” means an automated or documented control exists; release-only evidence is collected before a tagged release.

Standard State Evidence / scope
Responsible-Tech Framework Applies Responsible technology audits, threat model, and data card
Code Quality Applies Makefile gates (ruff, mypy --strict, pytest with a 90% branch-coverage floor, and complexity <= 10), uv.lock, and .python-version
Security & Supply-Chain Applies Security policy; bandit, pip-audit, gitleaks, and CodeQL in CI; SHA-pinned actions and a committed lockfile
CI/CD Applies SHA-pinned, permission-scoped workflows; CI runs the same make verify gate as local development
Release & Versioning Applies — pre-release gap The signed-tag release workflow is committed; the first public tag and its release evidence are still pending
Observability N/A (no hosted telemetry) Stateless local CLI; opt-in JSON operational events only, with no package contents
Performance N/A (no service SLO) No hosted service; bounded PDF/ZIP parsing is covered by the threat model
Accessibility Applies Accessibility boundaries; release review pending the first tag
Internationalization Applies — pre-release gap Scope and release gate; current English-only reports must gain reviewed EN/ES catalogs before a public tag
AI Evaluation N/A (no AI runtime) No model, prompt, or AI inference is shipped
Documentation Applies README, CONTRIBUTING.md, CHANGELOG.md, CITATION.cff, and the definition of done
Quality & Metrics Applies Metrics ledger in the roadmap; make verify is the merge gate
AI Development Measurement Applies docs/ROADMAP.md declares AI-DEV-MEASUREMENT: APPLIES; the baseline is recorded in the responsible technology audits
Incident Response Applies — local CLI scope Security, privacy, and data-exposure incidents remain in scope even though there is no hosted service
Data Governance Applies The local filing package data card defines the processing and retention boundary

The central standards register is maintained separately and must be updated when this repository is published.

About

Pre-alpha offline CLI that checks CEQA filing packages (NOD, NOE) for objective, correctable technical defects before State Clearinghouse review: bounded PDF inspection, a source-cited declarative rule engine, and HTML/JSON/checklist advisory reports. It never submits, alters, or judges legal sufficiency; NOD/NOE rules are experimental.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages