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, Virtual Site Map (VSM) topology analyzer, and Baseline & Regression Tracking (
.zenzic-baseline.json). - 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.
Beyond static file checks, Zenzic's Smart Link Graph builds an adjacency list to perform Breadth-First Search (BFS) over your document network. It identifies Topological Orphans (Z410, documents unreachable from navigation entry points) and Dead Ends (Z411, pages with no outgoing links), helping maintain structural navigation integrity.
| 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.27.0",
"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.27.0 check all| Area | URL | Audience |
|---|---|---|
| ๐ค User Guide | zenzic.dev | Install, configure, CI/CD, finding codes |
| ๐ Rule Specification Cards | zenzic.dev/docs/rules | 41 deep-dive rule specifications with Bad/Good remediation examples |
| ๐ง 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