Deterministic Document Integrity Engine and SAST for Markdown/MDX graphs.
Tiered code governance, frozen security contracts, and RE2-backed deterministic scanning.
Treat your Markdown documentation like production code.
Zenzic detects broken links, orphaned pages, credential leaks, and structural integrity issues before they reach production.
Zenzic is a unified, deterministic platform structured into three primary delivery mechanisms:
- Core Engine (CLI): Python CLI, AST rule engine, and Virtual Site Map (VSM) topology analyzer.
- VS Code Extension: Real-time LSP client offering sub-50ms inline diagnostics, Quick Fixes, and DQS scoring.
- GitHub Action: Zero-config CI/CD quality gate with SARIF upload and PR annotations.
Experience zero-config topological failure detection in under 60 seconds:
# Step 1: Install Zenzic CLI
uv tool install zenzic
# Step 2: Initialize workspace and create a broken link
zenzic init
mkdir -p docs
echo "[broken](missing.md)" > docs/index.md
# Step 3: Run full documentation graph analysis
zenzic check allExpected Output:
docs/index.md:1 [Z104] 'missing.md' resolves to nowhere โ the target file does not exist.
FAILED: Hard errors detected. Exit code 1 is mandatory.
To eliminate the latency between authoring a defect and discovering it, install the Zenzic VS Code Extension for real-time inline diagnostics and automated Quick Fixes.
Every Zenzic run is a pure function of its inputs. Given the same repository state and .zenzic.toml, the output โ finding codes, severity levels, exit code, SARIF structure โ is bit-for-bit identical across machines, platforms, and time. There are no probabilistic judgements, no LLM sampling, and no network-dependent results injected into the analysis path.
| Property | Guarantee |
|---|---|
| Same inputs โ same output | โ Always |
| RE2-backed regex engine | โ No backtracking, no catastrophic matching |
| Frozen finding codes | โ
FROZEN_CODES set; never renamed or silently retired |
| Reproducible CI artefacts | โ Identical SARIF across runner OS and time |
Zenzic treats documentation as a security surface. The tiered code model enforces a hard boundary between quality findings (suppressible, exit 1) and security findings (non-suppressible, exit 2 / 3):
- Z201 โ Credential Scanner: Hardcoded tokens, API keys, and secret patterns detected before they reach a PR.
- Z202 / Z203 โ Path Traversal Guard: Filesystem boundary violations caught at the scan boundary.
- Suppression CAP: A configurable ceiling on the total number of active
zenzic:ignoresuppressions. Exceeding it blocks the build.
Zenzic reports only what is statically verifiable in the repository at scan time. It never infers intent or approximates link validity. Every finding is a falsifiable, reproducible fact.
| Command | Purpose |
|---|---|
zenzic init |
Scaffold workspace configuration (.zenzic.toml) |
zenzic check all [PATH] |
Full documentation audit โ links, credentials, orphans |
zenzic score [--stamp] |
Compute the Documentation Quality Score (0โ100) |
zenzic diff [--base PATH] |
Detect debt regression against a saved baseline |
zenzic guard scan [PATH] |
Defense-in-Depth credential pre-gate (fatal on security findings) |
zenzic inspect codes |
Query live error-code semantics and suppressibility |
Zenzic Core is headless and emits standardized SARIF JSON, ensuring seamless integration with modern CI dashboards:
{
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
"version": "2.1.0",
"runs": [
{
"tool": {
"driver": {
"name": "zenzic",
"version": "0.25.2",
"rules": [
{
"id": "Z101",
"name": "BrokenLink"
}
]
}
}
}
]
}| Engine | Adapter | Highlights |
|---|---|---|
| MkDocs | MkDocsAdapter |
i18n suffix + folder modes, fallback_to_default |
| Zensical | ZensicalAdapter |
Transparent Proxy bridges mkdocs.yml |
| Any folder | StandaloneAdapter |
File integrity checks โ orphan detection disabled without a nav contract |
See the Adapter API for the plugin interface. Third-party adapters install via the zenzic.adapters entry-point group.
Zenzic Core is radically unaware of any CI platform. Platform-specific behaviour โ GitHub Annotations, Code Scanning upload, PR decoration โ is the sole responsibility of the Zenzic Action.
- uses: PythonWoods/zenzic-action@v2
with:
format: sarif
upload-sarif: "true"| Concern | Zenzic Core | Zenzic Action |
|---|---|---|
| Link & Topology validation | โ | Executes Core |
| Credential scanner (Z2xx) | โ | Executes Core |
| Exit-code contract (0/1/2/3) | โ | Enforced |
GitHub Annotations (::error::) |
โ | โ |
| Code Scanning SARIF upload | โ | โ |
| PR inline diff annotations | โ | โ |
# Global CLI tool (Recommended)
uv tool install zenzic
# Pinned dev dependency
uv add --dev zenzic
# pip
pip install zenzicIf you installed Zenzic globally via uv, you must explicitly request an upgrade to fetch the latest deterministic engine:
uv tool upgrade zenzicTo run a specific version ephemerally without altering your global environment:
uvx zenzic@0.25.2 check all| Area | URL | Audience |
|---|---|---|
| ๐ค User Guide | zenzic.dev | Install, configure, CI/CD, finding codes |
| ๐ง Developer Portal | zenzic.dev/developers | Adapters, ADRs, CLI architecture |
| ๐ก๏ธ Security | SECURITY.md | Security reviewer |
- Open an issue to discuss the change.
- Read the Contributing Guide.
- Every PR must pass
just verifyand include SPDX headers on new files.
See also: Code of Conduct ยท Security Policy
A CITATION.cff is present at the root. Click "Cite this repository" on GitHub for APA or BibTeX output.
Apache-2.0 โ see LICENSE. This project strictly adheres to Semantic Versioning.
Engineered with precision by PythonWoods in Italy ๐ฎ๐น
"Building the Standard for Technical Document Integrity."
Documentation ยท GitHub ยท Blog