PDCA Watch — Live Tick Dashboard
v2.1.11 Sprint β FR-β4. Wraps
lib/dashboard/watch.jsover CC's/loop(v2.1.71+). Read-only — only consumes state files; never writes. Falls back to a single render when/loopis unsupported (E-β4-01).
Arguments
| Argument | Description | Example |
|---|---|---|
| (none) | Auto-resolve active feature from pdca-status.primaryFeature | /pdca-watch |
<feature> | Watch a specific feature by name | /pdca-watch bkit-v2111-integrated-enhancement |
Behavior
Resolution
- If
<feature>is provided, use it verbatim. - Else read
.bkit/state/pdca-status.json→primaryFeature, thenactiveFeatures[0]as fallback. - If still no feature → render
"No active PDCA feature. Start one with /pdca pm <feature>"and exit.
Tick (every 30s via /loop)
For each tick, lib/dashboard/watch.js#renderTick produces a panel with:
Watch <feature> — tick N (HH:MM:SS) ───────────────────────────────────────────────────────────── Phase: <phase> Match: <%> Iter: <n / 5> Tokens: <in> in / <out> out · samples <N> Est cost: $<USD> ─────────────────────────────────────────────────────────────
Data sources:
- Phase / matchRate / iterationCount:
pdca-status.features[<feature>] - Token totals: last 50 lines of
token-ledger.ndjson - Cost: Sonnet-class flat estimate ($3/Mtok in, $15/Mtok out)
Termination
- Ctrl-C from user
- Feature
phase === 'completed'orphase === 'archived' - After max 60 ticks (≈30 min) — caller restarts if more time needed
CC /loop Support
| CC Version | Behavior |
|---|---|
| ≥ 2.1.71 | Native /loop 30s ticker |
| < 2.1.71 | E-β4-01: single render + warning, no loop |
| Unknown | Same as < 2.1.71 (fail-safe) |
The check is performed via watch.checkLoopSupport({ ccVersion }) —
caller passes the resolved CC version from lib/infra/cc-version-checker.
Security
- Pure read on
.bkit/state/pdca-status.jsonand.bkit/runtime/token-ledger.ndjson. - Tail bounded to
MAX_TAIL_LINES = 200regardless of caller input — defends against pathological NDJSON growth. - No subprocess spawning, no network.
- PII redaction on the ledger is owned by the writer (Token Accountant); watch only reads what's already redacted.
Module Dependencies
| Module | Function | Usage |
|---|---|---|
lib/dashboard/watch.js | resolveFeature() | Auto-detect when no arg |
lib/dashboard/watch.js | renderTick() | One frame per tick |
lib/dashboard/watch.js | tailLedger() | NDJSON tail (≤200) |
lib/dashboard/watch.js | checkLoopSupport() | CC version gate |
lib/infra/cc-version-checker.js | getCurrent() | Version source |
Examples
bash# Auto-detect active feature /pdca-watch # Watch a specific feature /pdca-watch bkit-v2111-integrated-enhancement
Related
/pdca status— single snapshot (no loop)/control trust— trust score informs auto-escalation/pdca-fast-track— Daniel-mode auto-approve checkpoints
ARGUMENTS:

