Build, test, and extend Vericore without crossing its deterministic, local-first boundaries.
Read Getting Started for installation and first use.
For the complete command contract, use CLI Reference. It is the single source for command syntax, options, defaults, output artifacts, and command-level failure behavior.
understand
↓
change
↓
test
↓
inspect diff
↓
update docs/contracts
↓
CI
↓
review
For significant behavior changes, define the intended contract before implementation. Keep one pull request focused on one coherent change.
./gradlew --no-daemon clean test
./gradlew --no-daemon build
./gradlew --no-daemon installDist
The installed CLI is:
./build/install/vericore/bin/vericore --version
GitHub Actions is the authoritative clean-environment validation path. When local hardware is unavailable, use CI logs and artifacts as the execution evidence rather than inferring success from source inspection.
./build/install/vericore/bin/vericore --help
./build/install/vericore/bin/vericore --version
./build/install/vericore/bin/vericore doctor
./build/install/vericore/bin/vericore analyze .
./build/install/vericore/bin/vericore evidence-graph . --json
./build/install/vericore/bin/vericore reality . --json
./build/install/vericore/bin/vericore repo-qa "why is this component risky?" --path . --evidence-output output/grounded-evidence.json
./build/install/vericore/bin/vericore plan "change the component" --evidence output/grounded-evidence.json --output output/engineering-plan.json
./build/install/vericore/bin/vericore prepare "change the component"
# make the change
./build/install/vericore/bin/vericore verify
See CLI Reference for the complete command surface.
./build/install/vericore/bin/vericore server --host 127.0.0.1 --port 8080
curl --fail http://127.0.0.1:8080/health
Keep the server bound to loopback for local development. A deployment boundary must provide authentication, authorization, TLS, trusted-origin controls, quotas, and appropriate report access before exposing Vericore beyond a trusted local/internal environment.
See API.
Create a local configuration file from the template when needed:
cp .vericore.json.template .vericore.json
VericoreConfig controls exclusions, file limits, Git history, caching, parsing, reporting, AI, and rate limiting. Never commit credentials.
For server path validation, configure the narrowest practical value for VERICORE_ALLOWED_PATHS.
src/main/kotlin/com/vericore/
├── Main.kt
├── cli/ # user-facing commands and adapters
├── core/
│ ├── ai/ # optional provider integrations
│ ├── cache/ # analysis cache
│ ├── config/ # configuration and credentials
│ ├── exceptions/ # domain/application errors
│ ├── generator/ # report and learning helpers
│ ├── graph/ # dependency graph algorithms
│ ├── intelligence/ # deterministic engineering intelligence
│ ├── parser/ # Java/Kotlin parser contracts
│ ├── planner/ # evidence-backed planning
│ ├── qa/ # grounded repository Q&A
│ ├── reality/ # repository-state identity
│ ├── scanner/ # repository and Git scanning
│ ├── temporal/ # evolution analysis
│ └── workflow/ # prepare/verify contracts
├── enterprise/ # organization-oriented capabilities
├── mcp/ # local MCP protocol adapter
├── output/ # report generation
└── server/ # Ktor API boundary
src/test/kotlin/ # unit, property, security, CLI, server, and E2E tests
docs/ # architecture, contracts, integrations, and contributor docs
.github/workflows/ # CI and release verification
For the architectural model, see Architecture.
core/.LanguageParser.ParserFactory.Keep the evidence-first boundary:
Deterministic analysis
↓
Grounded evidence
↓
Bounded context
↓
AI reasoning
↓
Validated response
Do not introduce model calls directly into parsers, graph algorithms, or security boundaries. Provider-specific behavior belongs behind an explicit abstraction.
Reports must remain self-contained. Treat source text, commit messages, author names, and descriptions as untrusted content. Changes to HTML or JavaScript serialization require escaping/regression tests.
Before opening or updating a pull request:
./gradlew --no-daemon clean test
./gradlew --no-daemon build installDist
Then inspect the complete diff and let the GitHub Actions matrix run. Do not treat one green local command as release evidence.
A pull request should explain:
For AI-assisted features, also document evidence sources, provider boundaries, data exposure, uncertainty behavior, and CI verification requirements.
build.gradle.kts agree.CHANGELOG.md and implementation-status documentation.docs/ Markdown before publication; do not defer required release-state documentation until after release.The published 0.8.2 release is documented in RELEASE_READINESS_0.8.2.md. The published 0.8.1 and 0.8.0 releases remain documented as historical records. main currently contains unreleased post-0.8.2 hardening; do not describe those changes as part of the published v0.8.2 artifact set.
When behavior or a public contract changes, update the relevant documentation in the same change. The CLI contract belongs in CLI Reference; REST contracts belong in API; MCP contracts belong in MCP. Prefer links to authoritative contracts over duplicated rules.