Skip to content

Commit 94d3a3d

Browse files
Merge pull request #32 from PythonWoods/fix/post-release-sync-a3
fix: post-release sync for v0.5.0a3 — visual assets, --pre flag, hero screenshot
2 parents 30d15bf + aac5494 commit 94d3a3d

28 files changed

Lines changed: 1372 additions & 201 deletions

README.it.md

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ SPDX-License-Identifier: Apache-2.0
4040
</p>
4141

4242
<p align="center">
43-
<img src="docs/assets/screenshots/screenshot.svg" alt="Zenzic Sentinel — linter di documentazione" width="700">
43+
<img src="docs/assets/screenshots/screenshot-hero.svg" alt="Zenzic Sentinel — linter di documentazione" width="700">
4444
</p>
4545

4646
---
@@ -64,24 +64,31 @@ gli altri strumenti citati sono progetti di terze parti.
6464

6565
---
6666

67-
## v0.5.0a1 — La Sentinella
68-
69-
- **Hybrid Adaptive Engine**: `scan_docs_references` è l'unico entry point unificato per
70-
tutte le modalità di scansione. Il motore seleziona l'esecuzione sequenziale o parallela
71-
automaticamente in base alla dimensione del repository (soglia: 50 file).
72-
- **`AdaptiveRuleEngine` con validazione pickle anticipata**: tutte le regole vengono
73-
validate per la serializzabilità pickle al momento della costruzione. Una regola non
74-
serializzabile solleva `PluginContractError` immediatamente.
75-
- **`zenzic plugins list`**: nuovo comando che mostra ogni regola registrata nel gruppo
76-
entry-point `zenzic.rules` — regole Core e plugin di terze parti.
77-
- **Supporto `pyproject.toml` (ISSUE #5)**: incorpora la configurazione Zenzic in
78-
`[tool.zenzic]` quando `zenzic.toml` è assente. `zenzic.toml` vince sempre se entrambi
79-
i file esistono.
80-
- **Telemetria delle prestazioni**: `scan_docs_references(verbose=True)` stampa modalità
81-
motore, numero di worker, tempo di esecuzione e speedup stimato su stderr.
82-
- **`PluginContractError`**: nuova eccezione per le violazioni del contratto delle regole.
83-
- **Documentazione plugin**: `docs/developers/plugins.md` (EN + IT) — contratto completo,
84-
istruzioni di packaging ed esempi di registrazione `pyproject.toml`.
67+
## v0.5.0a3 — La Sentinella
68+
69+
- **Inizializzazione Intelligente**: `zenzic init` rileva `pyproject.toml` e offre di
70+
incorporare la configurazione come `[tool.zenzic]` invece di creare un `zenzic.toml`
71+
separato. Usa `--pyproject` per saltare il prompt. Auto-detection dell'engine in
72+
entrambe le modalità.
73+
- **Sentinel UI**: banner Indigo monolitico, gutter traceback con spaziatura a 2 spazi
74+
(`│ 16 ❱`), sottolineature caret chirurgiche e respiro verticale tra i finding.
75+
- **Target Agnostico**: `zenzic check all README.md` o `zenzic check all content/`
76+
limita l'audit a un singolo file o directory. `VanillaAdapter` selezionato
77+
automaticamente per target fuori da docs.
78+
- **Plugin SDK**: `zenzic init --plugin <nome>` scaffolda un pacchetto regole
79+
pronto all'uso. Namespace pubblico `zenzic.rules` stabile — `BaseRule`,
80+
`RuleFinding`, `CustomRule`, `Violation`, `Severity`.
81+
- **Hybrid Adaptive Engine**: `scan_docs_references` seleziona esecuzione sequenziale
82+
o parallela automaticamente in base alla dimensione del repository (soglia: 50 file).
83+
Validazione ancore deterministica a due fasi elimina falsi positivi da race condition.
84+
- **Z001/Z002 Split**: link rotti (Z001 errore) vs link a pagine orfane (Z002 warning).
85+
Senza `--strict`, i warning orfani non bloccano la build.
86+
- **Mutation-tested**: 86.7% mutation score (242/279 killed su `rules.py`).
87+
706 test, Hypothesis property-based testing con profili tiered.
88+
- **Config `pyproject.toml`**: incorpora la configurazione Zenzic in `[tool.zenzic]`
89+
quando `zenzic.toml` è assente. `zenzic.toml` vince sempre se entrambi esistono.
90+
- **Zenzic Shield**: rilevamento credenziali (7 famiglie) + protezione path traversal.
91+
Codice di uscita 2 riservato per eventi di sicurezza.
8592

8693
---
8794

@@ -146,19 +153,19 @@ zenzic check all --engine hugo
146153

147154
```bash
148155
# Esecuzione una-tantum senza installazione
149-
uvx zenzic check all
156+
uvx --pre zenzic check all
150157

151158
# Strumento globale disponibile in qualsiasi progetto
152-
uv tool install zenzic
159+
uv tool install --pre zenzic
153160

154161
# Dipendenza dev del progetto — versione fissata in uv.lock
155-
uv add --dev zenzic
162+
uv add --dev --pre zenzic
156163
```
157164

158165
### Con `pip`
159166

160167
```bash
161-
pip install zenzic
168+
pip install --pre zenzic
162169
```
163170

164171
### Lean e Agnostico per Design
@@ -291,6 +298,16 @@ non segnalare mai i file tradotti come orfani.
291298
292299
---
293300

301+
## Visual Tour
302+
303+
L'audit completo della Sentinella: banner, contesto gutter, sottolineature caret e punteggio qualità.
304+
305+
<p align="center">
306+
<img src="docs/assets/screenshots/screenshot.svg" alt="Zenzic Sentinel — output completo con punteggio qualità" width="700">
307+
</p>
308+
309+
---
310+
294311
## Contribuire
295312

296313
Bug report, miglioramenti alla documentazione e pull request sono benvenuti. Prima di iniziare:

README.md

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ SPDX-License-Identifier: Apache-2.0
4040
</p>
4141

4242
<p align="center">
43-
<img src="docs/assets/screenshots/screenshot.svg" alt="Zenzic Sentinel — engineering-grade documentation linter" width="700">
43+
<img src="docs/assets/screenshots/screenshot-hero.svg" alt="Zenzic Sentinel — engineering-grade documentation linter" width="700">
4444
</p>
4545

4646
---
@@ -63,30 +63,31 @@ referenced ecosystem tools are third-party projects.
6363

6464
---
6565

66-
## v0.5.0a1 Highlights — The Sentinel
67-
68-
- **Hybrid Adaptive Engine**: `scan_docs_references` is the single unified
69-
entry point for all scan modes. The engine selects sequential or parallel
70-
execution automatically based on repository size (threshold: 50 files). No
71-
flags required — Zenzic is fast by default.
72-
- **`AdaptiveRuleEngine` with eager pickle validation**: all rules are validated
73-
for pickle-serializability at construction time. A non-serialisable rule raises
74-
`PluginContractError` immediately — before any file is scanned.
75-
- **`zenzic.rules` entry-point group**: core rules (`VSMBrokenLinkRule`) are
76-
registered as first-class plugins. Third-party packages can extend Zenzic by
77-
registering under the same group and enabling their plugin ID in `zenzic.toml`.
78-
- **`zenzic plugins list`**: new command that displays every rule registered in
79-
the `zenzic.rules` entry-point group — Core rules and third-party plugins.
80-
- **`pyproject.toml` support (ISSUE #5)**: embed Zenzic config in `[tool.zenzic]`
81-
when `zenzic.toml` is absent. `zenzic.toml` always wins if both exist.
82-
- **Performance telemetry**: `scan_docs_references(verbose=True)` prints engine
83-
mode, worker count, elapsed time, and estimated speedup to stderr.
84-
- **`PluginContractError`**: new exception for rule contract violations.
85-
- **Plugin documentation**: `docs/developers/plugins.md` (EN + IT) — full
86-
contract, packaging instructions, and `pyproject.toml` registration examples.
87-
- **Release-track clarification**: the 0.4.x cycle is considered abandoned
88-
(exploratory with repeated breaking changes); 0.5.x is the active
89-
stabilization line.
66+
## v0.5.0a3 Highlights — The Sentinel
67+
68+
- **Smart Initialization**: `zenzic init` detects `pyproject.toml` and offers to
69+
embed config as `[tool.zenzic]` instead of a standalone `zenzic.toml`. Use
70+
`--pyproject` to skip the prompt. Engine auto-detection in both modes.
71+
- **Sentinel UI**: monolithic Indigo banner, traceback gutter with 2-space
72+
padding (`│ 16 ❱`), surgical caret underlines, and vertical breathing
73+
between findings.
74+
- **Agnostic Target**: `zenzic check all README.md` or `zenzic check all content/`
75+
scopes audits to a single file or directory. `VanillaAdapter` auto-selected for
76+
out-of-docs targets.
77+
- **Plugin SDK**: `zenzic init --plugin <name>` scaffolds a ready-to-edit rule
78+
package. `zenzic.rules` public namespace is stable — `BaseRule`, `RuleFinding`,
79+
`CustomRule`, `Violation`, `Severity`.
80+
- **Hybrid Adaptive Engine**: `scan_docs_references` selects sequential or parallel
81+
execution automatically based on repository size (threshold: 50 files).
82+
Deterministic two-phase anchor validation eliminates race-induced false positives.
83+
- **Z001/Z002 Split**: broken links (Z001 error) vs orphan-page links (Z002 warning).
84+
Without `--strict`, orphan warnings don't block the build.
85+
- **Mutation-tested**: 86.7% mutation score (242/279 killed on `rules.py`).
86+
706 tests, Hypothesis property-based testing with tiered profiles.
87+
- **`pyproject.toml` config**: embed Zenzic config in `[tool.zenzic]` when
88+
`zenzic.toml` is absent. `zenzic.toml` always wins if both exist.
89+
- **Zenzic Shield**: credential detection (7 secret families) + path traversal
90+
protection. Exit code 2 reserved for security events.
9091

9192
---
9293

@@ -106,10 +107,6 @@ Zenzic provides an extensive, engineering-grade documentation portal:
106107

107108
---
108109

109-
![Zenzic CLI Output][screenshot]
110-
111-
---
112-
113110
## What Zenzic checks
114111

115112
| Check | CLI command | What it detects |
@@ -331,25 +328,25 @@ fallback — for all documentation systems.
331328

332329
```bash
333330
# Zero-install, one-shot audit
334-
uvx zenzic check all
331+
uvx --pre zenzic check all
335332
336333
# Global CLI tool — available in any project
337-
uv tool install zenzic
334+
uv tool install --pre zenzic
338335
339336
# Project dev dependency — version-pinned in uv.lock
340-
uv add --dev zenzic
337+
uv add --dev --pre zenzic
341338
```
342339

343340
### With `pip`
344341

345342
```bash
346343
# Global install (consider a virtual environment)
347-
pip install zenzic
344+
pip install --pre zenzic
348345
349346
# Inside a virtual environment (recommended)
350347
python -m venv .venv
351348
source .venv/bin/activate # Windows: .venv\Scripts\activate
352-
pip install zenzic
349+
pip install --pre zenzic
353350
```
354351

355352
### Lean & Agnostic by Design
@@ -509,10 +506,10 @@ silently collapsed into a generic "file not found".
509506

510507
```yaml
511508
- name: Lint documentation
512-
run: uvx zenzic check all
509+
run: uvx --pre zenzic check all
513510
514511
- name: Check references and run Shield
515-
run: uvx zenzic check references
512+
run: uvx --pre zenzic check references
516513
```
517514

518515
Full workflow: [`.github/workflows/zenzic.yml`][ci-workflow]
@@ -569,6 +566,16 @@ nox -s preflight # zenzic check all (self-check)
569566

570567
---
571568

569+
## Visual Tour
570+
571+
The full Sentinel audit: banner, gutter context, caret underlines, and quality score breakdown.
572+
573+
<p align="center">
574+
<img src="docs/assets/screenshots/screenshot.svg" alt="Zenzic Sentinel — full audit output with quality score" width="700">
575+
</p>
576+
577+
---
578+
572579
## Contributing
573580

574581
We welcome bug reports, documentation improvements, and pull requests. Before you start:
@@ -606,7 +613,6 @@ Apache-2.0 — see [LICENSE][license].
606613
[docs-cicd]: https://zenzic.pythonwoods.dev/ci-cd/
607614
[docs-arch]: https://zenzic.pythonwoods.dev/architecture/
608615
[docs-contributing]: https://zenzic.pythonwoods.dev/community/contribute/
609-
[screenshot]: docs/assets/screenshots/screenshot.svg
610616
[ci-workflow]: .github/workflows/zenzic.yml
611617
[contributing]: CONTRIBUTING.md
612618
[license]: LICENSE

0 commit comments

Comments
 (0)