# Explicit-root NPU batch triage dry-run examples

These examples are wrappers only. They do not install cron jobs, enable services,
change Atlas/Hermes routing, write Obsidian/RAG/vector DBs, move/delete files, or
send outbound messages.

The committed manifest template at `config/triage-roots.example.yaml` is
intentionally unapproved. For real private data, copy it to
`config/triage-roots.local.yaml` and approve exactly one narrow lane-specific
staging folder. Request-level `--root` may narrow that manifest root but cannot
broaden it.

Synthetic document/image smoke, CPU-only/no NPU claim:

```bash
python scripts/npu-batch-triage-dry-run.py \
  --manifest config/triage-roots.test.yaml \
  --lane screenshots \
  --root openvino-doc-image-triage-npu/samples \
  --limit 5 \
  --dry-run \
  --no-npu \
  --json
```

Synthetic document/image smoke with the existing local embeddings NPU service,
if `127.0.0.1:18817` is healthy. Treat NPU as proven only when `npu.proof_ok` is
true and `npu.busy_delta_us` (or item-level delta) is positive:

```bash
python scripts/npu-batch-triage-dry-run.py \
  --manifest config/triage-roots.test.yaml \
  --lane receipts \
  --root openvino-doc-image-triage-npu/samples \
  --limit 5 \
  --dry-run \
  --json
```

Audio smoke should use generated/public synthetic audio only until a private
audio staging root is approved:

```bash
python scripts/npu-batch-triage-dry-run.py \
  --manifest config/triage-roots.test.yaml \
  --lane voice_memos \
  --root tmp/synthetic-voice-memos \
  --limit 3 \
  --dry-run \
  --no-npu \
  --json
```

Cron/n8n shape (disabled example only):

```text
Manual Trigger / disabled cron
  -> Execute Command: python /home/will/lab/swarm/scripts/npu-batch-triage-dry-run.py --manifest /home/will/lab/swarm/config/triage-roots.local.yaml --lane receipts --limit 25 --dry-run --json
  -> IF ok && npu.proof_ok && files_processed > 0
  -> local dashboard/report only
```

Do not connect this output to Telegram/Discord/email sends, Obsidian writes,
RAG/vector reindex, file moves/deletes, Kanban mutation, service restarts, or
Atlas/Hermes routing without a separate reviewed approval gate.
