Run locally
From /home/loca/dev/wild:
./bin/zonescope
bun run scan
bun src/cli.ts --only wiki.loca.zone --no-colorWrite both durable renderings while retaining the normal terminal report:
./bin/zonescope --out snapshot.json --html dashboard.htmlMachine-only examples:
./bin/zonescope --json
./bin/zonescope --quiet --out snapshot.jsonFlags
| Flag | Effect |
|---|---|
--json | Print the JSON snapshot instead of the terminal report. |
--html <path> | Write one self-contained HTML dashboard; terminal output remains unless JSON or quiet mode replaces it. |
--out <path> | Write the pretty-printed JSON snapshot. |
--only <substr> | Keep matching vhosts and probes; suppress host-wide findings that need a complete view. |
--no-probe | Skip live TLS and HTTP probes. |
--nginx <dir> | Override /etc/nginx/sites-enabled. |
--registry <path> | Override /home/loca/AGENTS.md. |
--concurrency <n> | Set the positive probe concurrency limit; default 8. |
--timeout <ms> | Set the positive timeout for each TLS and HTTP probe; default 4000. |
--no-color | Disable ANSI terminal colour. |
--strict | Return exit code 1 for warnings as well as errors. |
--quiet | Suppress stdout while still writing requested files. |
-h, --help | Print help without scanning. |
Tests
The suite uses bun:test and contains 36 tests for collectors, probe behavior, bounded concurrency, scan scoping, verdict boundaries, and all three reporters.
bun testA focused renderer check is available as bun test test/report.test.ts. TypeScript is strict, uses noUncheckedIndexedAccess, and keeps explicit .ts extensions on sibling imports.
Add a finding rule
- Add the code to
FindingCodeinsrc/types.ts. - Add its explicit severity and cross-source predicate in
src/verdict.ts. UpdateHOST_WIDE_CODES: usetruewhen the rule needs the complete host view andundefinedwhen it remains meaningful under--only. - Add focused tests for the triggering condition and the nearest non-triggering boundary.
- Update the finding table in
README.mdand this wiki reference. - Run the focused test, then
bun test.
Emit a generic Finding rather than printing inside verdict code. Terminal, JSON, and HTML reporters already consume generic findings and need a code-specific branch only when the presentation contract changes.
Dashboard publication
Inspect the user timer and its most recent service invocation:
systemctl --user status zonescope.timer
systemctl --user status zonescope.serviceThe timer invokes /home/loca/dev/wild/scripts/publish.sh every 10 minutes. The publisher runs the CLI with --quiet --html and --out, then atomically replaces /home/loca/dev/wild/site/index.html and snapshot.json when the scan completed without a crash-level failure.
Rebuild this wiki
cd /home/loca/dev/wikis && ./build.sh wildThe shared builder copies this wiki’s symlinked quartz.config.yaml into Quartz, builds the symlinked content vault into a temporary distribution, confirms index.html exists, and swaps the current symlink. See Dashboard for the separately generated operator surface.