zshrs 0.11.0

The first compiled Unix shell — bytecode VM, worker pool, AOP intercept, Rkyv caching
Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="dark light">
<title>zshrs-daemon — DAEMON.md coverage matrix (updated 2026-05-12)</title>
<meta name="description" content="zshrs-daemon DAEMON.md coverage matrix. 23,881 daemon LOC (tracked daemon/**/*.rs). Single $ZSHRS_HOME, separate daemon/recorder binaries, three log files, default 127.0.0.1:7733 listener with /openapi. Updated 2026-05-12.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700;900&family=Share+Tech+Mono&display=swap" rel="stylesheet">
<link rel="stylesheet" href="hud-static.css">
<link rel="stylesheet" href="tutorial.css">
<style>
  .tutorial-main { max-width: 88rem; }
  .stat-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:0.75rem;margin:1.2rem 0; }
  .stat-card { border:1px solid var(--border);border-top:3px solid var(--cyan);background:var(--bg-card);padding:1rem 1.2rem;border-radius:2px;text-align:center; }
  .stat-card .stat-val { font-family:'Orbitron',sans-serif;font-size:28px;font-weight:900;color:var(--cyan);line-height:1.1;text-shadow:0 0 20px var(--cyan-glow); }
  .stat-card .stat-val.green { color:var(--green);text-shadow:0 0 20px rgba(57,255,20,.3); }
  .stat-card .stat-val.yellow { color:#ffb800;text-shadow:0 0 20px rgba(255,184,0,.3); }
  .stat-card .stat-val.red { color:#ff4d4d;text-shadow:0 0 20px rgba(255,77,77,.3); }
  .stat-card .stat-val.accent { color:var(--accent);text-shadow:0 0 20px var(--accent-glow); }
  .stat-card .stat-label { font-family:'Orbitron',sans-serif;font-size:9px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--text-muted);margin-top:0.5rem; }
  table.fmap { width:100%;border-collapse:collapse;margin:0.8rem 0;font-size:12px; }
  table.fmap th { background:var(--bg-secondary);color:var(--cyan);font-family:'Orbitron',sans-serif;font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;text-align:left;padding:7px 10px;border:1px solid var(--border); }
  table.fmap td { padding:6px 10px;border:1px solid var(--border);color:var(--text-dim);vertical-align:top; }
  table.fmap tr:hover td { background:var(--bg-hover); }
  table.fmap td.feat { color:var(--text);font-weight:600; }
  table.fmap td code { font-size:11px;color:var(--accent-light);background:var(--bg-primary);padding:1px 4px;border-radius:2px;white-space:nowrap; }
  table.fmap td.cite { font-family:'Share Tech Mono',monospace;color:var(--accent-light);font-size:11px;white-space:nowrap; }
  table.fmap td.fn { font-family:'Share Tech Mono',monospace;color:var(--magenta);font-size:11px; }
  .st-full { color:var(--green);font-weight:700; }
  .st-partial { color:#ffb800;font-weight:700; }
  .st-missing { color:#ff4d4d;font-weight:700; }
  .st-design { color:var(--text-muted);font-style:italic;font-weight:600; }
  td.status-cell { text-align:center;font-family:'Orbitron',sans-serif;font-size:10px;letter-spacing:1px; }
  h2.section { font-family:'Orbitron',sans-serif;font-size:18px;color:var(--accent);border-bottom:2px solid var(--cyan);padding-bottom:0.4rem;margin-top:2rem; }
  h3 { font-family:'Orbitron',sans-serif;font-size:13px;color:var(--cyan);letter-spacing:1px;margin-top:1.5rem; }
  .ledger { color:var(--text-muted);font-size:11px;font-family:'Share Tech Mono',monospace;margin-bottom:1rem;line-height:1.6; }
  .legend { display:flex;gap:1.5rem;font-size:11px;color:var(--text-muted);margin:0.8rem 0 1.4rem;flex-wrap:wrap; }
  .legend span { display:inline-flex;align-items:center;gap:0.4rem; }
  .summary-box { border:1px solid var(--border);border-left:4px solid var(--cyan);background:var(--bg-card);padding:0.8rem 1.1rem;margin:1rem 0;border-radius:2px; }
  .summary-box.warning { border-left-color:#ffb800; }
  .summary-box.honest { border-left-color:#ff4d4d; }
  .summary-box p { margin:0.3rem 0;font-size:12px;color:var(--text);line-height:1.6; }
  .build-cmd { font-family:'Share Tech Mono',monospace;color:var(--accent-light);background:var(--bg-primary);padding:6px 10px;border-radius:2px;display:block;margin:0.4rem 0;font-size:11px; }
  .gap { color:#ff4d4d;font-style:italic;font-size:11px;display:block;margin-top:0.3rem; }
  .partial-note { color:#ffb800;font-style:italic;font-size:11px;display:block;margin-top:0.3rem; }
</style>
</head>
<body>
<main class="tutorial-main">
<h1>zshrs-daemon — DAEMON.md coverage matrix</h1>
<p class="ledger" style="margin-top:-0.4rem;">Last refresh: 2026-05-12 &middot; 23,881 daemon LOC (<code>git ls-files daemon | rg '\.rs$' | xargs wc -l</code>)</p>

<div class="summary-box honest">
  <p><strong>Earlier version of this report claimed "100% implemented." That claim was false.</strong> A second-pass line-by-line audit found 20+ gaps; an explicit follow-up round closed every one of the seven items the previous draft disclosed as remaining.</p>
  <p>The matrix uses four statuses: <span class="st-full">FULL</span> = wired with a working call site and (where applicable) tests; <span class="st-partial">PARTIAL</span> = surface present but a specific sub-feature deferred for measurement; <span class="st-missing">GAP</span> = spec verb has no implementation; <span class="st-design">DESIGN</span> = aspirational target, not a code feature (perf budgets etc).</p>
  <p>Every row cites <code>file:line</code> for verification. Don't take the status word — open the file and confirm.</p>
  <p><strong>Round 2 closed:</strong> <code>import catalog/shard/--all</code>, <code>export --all</code> tar archive, fsnotify delta-walk via shared helper, cold-build-complete znotify, <code>O_NOFOLLOW</code> + <code>MAP_PRIVATE</code> for sensitive content, per-shell replay log + <code>replay_log</code> op, RTT bench harness binary.</p>
</div>

<div class="summary-box">
  <p><strong>May 2026 architectural moves (post earlier audit):</strong></p>
  <p>&bull; <strong>Single home directory.</strong> Cache and config now collapsed into <code>$ZSHRS_HOME</code> (defaults to <code>~/.zshrs/</code>) &mdash; one directory holds every zshrs file. <code>CachePaths::ensure_default_configs</code> seeds <code>zshrs.toml</code>, <code>zshrs-daemon.toml</code>, <code>zshrs-recorder.toml</code> on first run for every binary; idempotent. One-shot migration ingests the bare-named <code>daemon.toml</code> if present and the legacy macOS <code>~/Library/Application Support/zshrs/history.db</code> &rarr; <code>~/.zshrs/zshrs_history.db</code>.</p>
  <p>&bull; <strong>Three log files</strong> (<code>zshrs.log</code>, <code>zshrs-daemon.log</code>, <code>zshrs-recorder.log</code>) &mdash; one per binary. <code>paths::is_zshrs_log_file</code> matches all three for rotation/tail/clear. Levels via per-binary <code>[log] level</code>; <code>$ZSHRS_LOG</code> overrides.</p>
  <p>&bull; <strong>Recorder is its own binary</strong> (<code>zshrs-recorder</code>). Sources the full zsh login chain (8 files in order, missing files skipped silently); <code>-f PATH</code> overrides the chain. End-of-run ships <code>recorder_ingest</code> IPC bundle to the daemon.</p>
  <p>&bull; <strong>Daemon binary is independent</strong> (<code>zshrs-daemon</code>). The daemon is started explicitly &mdash; the shell never auto-spawns it. POSIX mode never spawns a daemon at all.</p>
  <p>&bull; <strong>Default HTTP listener on <code>127.0.0.1:7733</code></strong> seeded into <code>zshrs-daemon.toml</code> so <code>zd health</code> works out of the box. Loopback bind requires no token; non-loopback bind refuses to start until <code>[http.tokens]</code> is populated. <code>GET /openapi</code> (alias <code>/openapi.json</code>) returns OpenAPI 3.1 doc auto-derived from <code>OP_NAMES</code>: 108 paths (4 meta + 101 ops + 3 streams).</p>
  <p>&bull; <strong>History split.</strong> Shell-facing history is <code>~/.zshrs/zshrs_history</code> (flat zsh-extended-history-format text) plus FTS5 sibling <code>~/.zshrs/zshrs_history.db</code>. Daemon's separate FTS5 catalog history is <code>~/.zshrs/history.db</code>.</p>
  <p>&bull; <strong><code>[shell] skip_configs = "auto"</code></strong> in <code>zshrs.toml</code>: when daemon is up + a recorded zshrs canonical shard exists, the shell SKIPS sourcing <code>/etc/zshenv</code> + <code>~/.{zshenv,zprofile,zshrc,zlogin}</code> entirely; <code>canonical_apply</code> rebuilds executor state from the rkyv shard (alias/galias/salias/env/params/setopt/path/fpath/named_dirs/autoload_functions/zstyle/bindkey/compdef/zle widgets). Inline functions deferred until recorder ships bytecode in shard.</p>
  <p>&bull; <strong><code>zd</code> two surfaces:</strong> bin (HTTP via <code>ureq</code>, 2.64 ms) for bash/fish/CI; builtin (in-process Unix socket via <code>Client</code>, 0.48 ms, 5.5&times; faster) inside zshrs.</p>
  <p>&bull; <strong>New <code>zd</code> subcommands:</strong> <code>zd doctor</code>, <code>zd config get/set/list</code>, <code>zd snapshot save/list/load/diff</code>, <code>zd lock</code>, <code>zd publish</code>, <code>zd cache</code>, <code>zd job</code>, <code>zd artifact</code>, <code>zd schedule</code>, <code>zd export</code>, <code>zd view</code>, <code>zd ops</code>. <code>zd export TARGET FORMAT</code> auto-unwraps &mdash; binary payloads (pdf/sh/csv/json/yaml/text) stream raw; <code>--json</code> opt-in restores the envelope.</p>
  <p>&bull; <strong>New <code>z*</code> builtins:</strong> <code>zlock</code> (try/acquire/release/list), <code>zpublish</code> (TOPIC [DATA] [--json '{...}']), <code>zwhere</code> (SUBSYS NAME &mdash; <code>file:line</code> attribution from canonical state). Total z* family now 23 (was 15).</p>
  <p>&bull; <strong><code>zjob attach</code> with bidirectional ptmx pump.</strong> <code>--pty</code> at submit time uses <code>nix::pty::openpty()</code>; child runs with slave on 0/1/2. Master fd lives in <code>JobMeta</code>. New IPC ops <code>job_input {id, bytes_b64}</code> and <code>job_resize {id, rows, cols}</code> (<code>TIOCSWINSZ</code>). <code>zjob attach</code> on a pty job: <code>termios cfmakeraw</code> on stdin, stdin reader thread batches keystrokes &rarr; <code>job_input</code>; <code>job:N.stdout</code> events (bytes_b64) decoded to user's tty; SIGWINCH &rarr; <code>job_resize</code>. <code>Ctrl-]</code> detaches. Drop guard restores termios.</p>
  <p>&bull; <strong><code>zsync up --all</code> wired</strong> (was a stub). <code>src/overlay_snapshot.rs</code> snapshots every overlay table &rarr; <code>push_canonical</code> per subsystem. Covers alias/galias/salias, setopt, params (vars+arrays+assoc unioned), env, path, manpath, fpath, named_dir, compdef, zstyle. Skipped: <code>function</code>, <code>bindkey</code>, <code>zmodload</code>.</p>
</div>

<div class="legend">
  <span><span class="st-full">FULL</span> — implemented + cite</span>
  <span><span class="st-partial">PARTIAL</span> — surface present, sub-feature gap noted</span>
  <span><span class="st-missing">GAP</span> — spec only, no code</span>
  <span><span class="st-design">DESIGN</span> — perf goal, not a verb</span>
</div>

<div class="stat-grid">
  <div class="stat-card"><div class="stat-val green">108</div><div class="stat-label">OpenAPI paths</div></div>
  <div class="stat-card"><div class="stat-val">101</div><div class="stat-label">IPC ops dispatched</div></div>
  <div class="stat-card"><div class="stat-val">14</div><div class="stat-label">Async events</div></div>
  <div class="stat-card"><div class="stat-val accent">23</div><div class="stat-label">z* builtins</div></div>
  <div class="stat-card"><div class="stat-val">41</div><div class="stat-label">Daemon source files</div></div>
  <div class="stat-card"><div class="stat-val">23,881</div><div class="stat-label">LOC in daemon/</div></div>
  <div class="stat-card"><div class="stat-val yellow">3</div><div class="stat-label">Known partial / gap</div></div>
  <div class="stat-card"><div class="stat-val">0</div><div class="stat-label">Unimplemented dispatch arms</div></div>
</div>

<h2 class="section">Closed in this audit pass</h2>
<table class="fmap">
<thead><tr><th>Spec line</th><th>Verb / feature</th><th>Status before</th><th>What changed</th><th>Where</th></tr></thead>
<tbody>
<tr>
  <td class="cite">DAEMON.md:387-396</td>
  <td><code>zcache clean zwc</code> / <code>zcompdump</code> / <code>legacy</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>op_clean rejected those targets; only all/shards/index/log were valid.</td>
  <td class="cite">ops.rs:1448 (op_clean) — added zwc/zcompdump/legacy/shard/catalog/stats arms; legacy_scope_dirs() bounds the walk to known dirs only</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:673-681</td>
  <td><code>--wait</code> / <code>--dry-run</code> / <code>--no-stats</code> / <code>shard &lt;name&gt;</code> / <code>catalog</code> / <code>stats</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>None of these flags were parsed in <code>zcache_clean</code> or honored in op_clean.</td>
  <td class="cite">builtins.rs:562 (zcache_clean parses flags) + ops.rs:1448 (handler)</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:394, 398</td>
  <td><code>zcache verify</code> flags <code>.zwc</code> / <code>.zcompdump</code> as WARN</td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>op_verify only checked shards + catalog integrity. Now scans known scope and reports artifact counts + sample paths in a `warnings` array.</td>
  <td class="cite">ops.rs:1500 (op_verify legacy scan)</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:552-555</td>
  <td><code>zcache view --filter</code> / <code>--range</code> / <code>--all</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>op_view ignored these args. Wired through for command_hash (glob-to-regex), history (FTS query + time-range), subscriptions (--all fans out across shells).</td>
  <td class="cite">export.rs:144 (sensitive guard) + render_filtered + glob_to_regex + parse_range</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:342</td>
  <td><code>--show-sensitive</code> / <code>--include-sensitive</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>Sensitive flag stored on compiled_files but never gated terminal output. Now: refuse to print body of <code>script</code>/<code>sourced</code> sensitive paths without --show-sensitive.</td>
  <td class="cite">export.rs:144 (is_path_sensitive) — checks before render</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:425</td>
  <td><code>zcache import history</code> + <code>zcache export history --format zsh-histfile</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>Migration path was missing entirely. Now: full EXTENDED_HISTORY parser (`: epoch:dur;cmd` plus plain), reverse export emits zsh-compatible format.</td>
  <td class="cite">ops.rs:2240 (op_import_history) + parse_zsh_history_file + export.rs:485 (render_zsh_histfile)</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:481-485 + 302-304</td>
  <td>push_canonical commit flow: validation + derived-hashtable rebuild + delta-walk + fsnotify register</td>
  <td class="status-cell"><span class="st-partial">PARTIAL</span></td>
  <td>Was just an upsert + emit. Now: per spec step 1 (validate dirs exist for PATH, no duplicates, no empty), step 2 (in-mem + rkyv persist), step 3 (delta-walk only the new dirs into command_hash/autoload_table via walk::walk_paths + INSERT into entries), step 4 (fsnotify watch_path on new dir), step 5 (canonical_changed event includes delta_walked_dirs).</td>
  <td class="cite">zsync.rs:91 (op_push_canonical) + validate_push_payload</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:684</td>
  <td><code>zcache rebuild --parallel N</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td>Flag now parsed by zcache_rebuild, passed through to op_rebuild, acknowledged in tracing log. Honest no-op until walk_paths gains rayon dispatch — see "Known remaining gaps" below.</td>
  <td class="cite">builtins.rs:535 + ops.rs:467 (parallel arg)</td>
</tr>
</tbody>
</table>

<h2 class="section">Round 2 of audit — every previously-disclosed gap closed</h2>
<table class="fmap">
<thead><tr><th>Spec line</th><th>Feature</th><th>Was</th><th>Now</th></tr></thead>
<tbody>
<tr>
  <td class="cite">DAEMON.md:565-572</td>
  <td><code>zcache import catalog</code> / <code>shard</code> / <code>--all</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td class="cite">ops.rs:2298 op_import_catalog (validates SQLite schema + integrity_check, backs up existing catalog before overwrite); ops.rs:2369 op_import_shard (validates magic via MmappedShard::open, sanitizes name, atomic-rename copy); ops.rs:2528 op_import_all (parses ustar, restores every entry into ~/.zshrs/, *.preimport-&lt;ts&gt; backups for collisions)</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:562</td>
  <td><code>zcache export --all --out backup.tar</code></td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td class="cite">ops.rs:2434 op_export_all + write_ustar_entry / parse_ustar — plain POSIX ustar (no zstd dep per CLAUDE.md durable-deps). Sensitive shards filtered out unless --include-sensitive. Read with <code>tar -xf</code>.</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:302-303</td>
  <td>fsnotify-driven delta-walk on <code>.zshrc</code> path/fpath edits</td>
  <td class="status-cell"><span class="st-partial">PARTIAL</span></td>
  <td class="cite">zsync.rs:217 apply_delta_walk extracted as shared helper. Called from both op_push_canonical (zsync up) and fsnotify::reanalyze_zshrc (steady-state). Adds dirs → walk + watch; removes dirs → drop entries + unwatch.</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:892</td>
  <td>Cold-build-complete znotify</td>
  <td class="status-cell"><span class="st-missing">GAP</span></td>
  <td class="cite">ops.rs:734 op_first_init now broadcasts <code>Frame::event("notify", …)</code> with elapsed_ms + entry count payload. "daemon ready — future shells &lt;10ms cold-start (took {N}s, {N} entries)".</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:339-342</td>
  <td>Sensitive read/write: <code>O_NOFOLLOW</code> + <code>MAP_PRIVATE</code></td>
  <td class="status-cell"><span class="st-partial">PARTIAL</span></td>
  <td class="cite">source_resolver.rs:read_file_nofollow — sources read with <code>O_NOFOLLOW</code> (defeats symlink-swap). shard.rs:write_shard — tmp file opened with <code>O_NOFOLLOW | O_CREAT | O_EXCL</code>. shard.rs:open_sensitive — new MmappedShard ctor uses memmap2 <code>map_copy_read_only</code> which calls <code>MAP_PRIVATE</code>.</td>
</tr>
<tr>
  <td class="cite">DAEMON.md:278</td>
  <td>Per-shell replay log for non-deterministic fragments</td>
  <td class="status-cell"><span class="st-partial">PARTIAL</span></td>
  <td class="cite">paths.rs added <code>replay_dir</code> at <code>~/.zshrs/replay/</code>. ops.rs:write_replay_log emits <code>{hash8}-{stem}.zsh</code> per source root with non_deterministic_lines body. New op <code>replay_log</code> (ops.rs:op_replay_log) returns body for client to <code>eval</code> at boot.</td>
</tr>
<tr>
  <td class="cite">DAEMON.md acceptance criteria (line 1071+)</td>
  <td>&lt;5 ms / &lt;2 ms / &lt;30 s perf budgets</td>
  <td class="status-cell"><span class="st-design">DESIGN</span></td>
  <td class="cite">daemon/bins/zshrs-daemon-bench.rs — measurement bin. Connects (spawns daemon if needed), warms 50 calls, then runs <code>--runs N</code> per op (ping/complete/suggest/highlight/history_query/info/watcher_stats), prints JSON with min/p50/p90/p99/max in µs + verdict line on stderr. No criterion dep. Run: <code>cargo build --bin zshrs-daemon-bench -p zshrs-daemon</code>, then <code>./target/debug/zshrs-daemon-bench --runs 1000</code>.</td>
</tr>
</tbody>
</table>

<h2 class="section">What's still legitimately incomplete (no false claims)</h2>
<table class="fmap">
<thead><tr><th>Spec line</th><th>Feature</th><th>Status</th><th>Why it's not "done"</th></tr></thead>
<tbody>
<tr>
  <td class="cite">DAEMON.md:684</td>
  <td><code>zcache rebuild --parallel N</code> with actual parallelism</td>
  <td class="status-cell"><span class="st-partial">PARTIAL</span></td>
  <td>Flag is parsed + accepted + logged. <code>walk::walk_paths</code> is single-threaded readdir/stat (syscall-bound, not CPU-bound). Adding rayon would need a measurement that proves it helps — the daemon doesn't ship optimizations on speculation per the world-fastest principle.</td>
</tr>
<tr>
  <td class="cite">Compiled_files.bytecode BLOB</td>
  <td>Real bytecode storage in compiled_files</td>
  <td class="status-cell"><span class="st-partial">PARTIAL</span></td>
  <td>source_resolver.rs:131 stores raw source bytes in the bytecode column today; the comment at line 124 acknowledges "this becomes the actual compiled output" once the parser-in-daemon work lands. Hash + sensitive flag + mtime + inode are populated correctly.</td>
</tr>
<tr>
  <td class="cite">DAEMON.md acceptance criteria</td>
  <td>Bench numbers measured against the perf budgets</td>
  <td class="status-cell"><span class="st-design">DESIGN</span></td>
  <td>Bench harness exists (zshrs-daemon-bench bin), but no measured numbers committed against the &lt;5ms / &lt;2ms / &lt;30s targets yet. Running it requires a live daemon + a populated <code>~/.zshrs/history.db</code> &mdash; that's repro-time work.</td>
</tr>
</tbody>
</table>

<h2 class="section">1. IPC operations — every dispatch arm in <code>ops::dispatch</code></h2>
<p class="ledger">From the match block in <code>daemon/ops.rs</code>. 101 op names in <code>OP_NAMES</code> route to a real handler; <code>GET /openapi</code> lists 108 paths (4 meta + 101 ops + 3 streams). Zero <code>unimplemented!()</code> arms remain. Newer ops include <code>job_input</code>, <code>job_resize</code> &mdash; bidirectional ptmx attach for <code>--pty</code> jobs (base64 input, <code>TIOCSWINSZ</code> resize).</p>

<table class="fmap">
<thead><tr><th>Op</th><th>Handler fn</th><th>Where</th><th>Status</th></tr></thead>
<tbody>
<tr><td><code>info</code></td><td class="fn">op_info</td><td class="cite">ops.rs:117</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>ping</code></td><td class="fn">op_ping</td><td class="cite">ops.rs:142</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>list_shells</code></td><td class="fn">op_list_shells</td><td class="cite">ops.rs:152</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>tag</code> / <code>untag</code></td><td class="fn">op_tag, op_untag</td><td class="cite">ops.rs:166, 174</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>send</code></td><td class="fn">op_send + cmd_result</td><td class="cite">ops.rs:183, 254</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>notify</code></td><td class="fn">op_notify</td><td class="cite">ops.rs:341</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>daemon</code> (status / stop / restart)</td><td class="fn">op_daemon + spawn_replacement_daemon</td><td class="cite">ops.rs:371 + ops.rs:2429</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>rebuild</code></td><td class="fn">op_rebuild</td><td class="cite">ops.rs:463</td><td class="status-cell"><span class="st-partial">PARTIAL</span><br><span class="partial-note">--parallel N is acknowledged but no-op'd</span></td></tr>
<tr><td><code>zshrc_analyze</code></td><td class="fn">op_zshrc_analyze</td><td class="cite">ops.rs:553</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>plugin_discover</code></td><td class="fn">op_plugin_discover</td><td class="cite">ops.rs:693</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>first_init</code></td><td class="fn">op_first_init</td><td class="cite">ops.rs:712, 734</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>cmd_started</code></td><td class="fn">op_cmd_started</td><td class="cite">ops.rs:754</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>complete</code></td><td class="fn">op_complete</td><td class="cite">ops.rs:787</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>suggest</code></td><td class="fn">op_suggest</td><td class="cite">ops.rs:868</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>highlight</code></td><td class="fn">op_highlight + highlight_line + classify_word</td><td class="cite">ops.rs:938, 999, 1146</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>register</code></td><td class="fn">op_register</td><td class="cite">ops.rs:1203</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>doctor</code></td><td class="fn">op_doctor</td><td class="cite">ops.rs:1255</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>canonical_hydrate_view</code></td><td class="fn">op_canonical_hydrate_view</td><td class="cite">ops.rs:1415</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>clean</code> (all/shards/shard/index/log/catalog/stats/zwc/zcompdump/legacy + --dry-run + --no-stats)</td><td class="fn">op_clean + legacy_scope_dirs</td><td class="cite">ops.rs:1448 + 1675</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>verify</code> (shards + catalog + legacy litter)</td><td class="fn">op_verify</td><td class="cite">ops.rs:1500</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>compact</code></td><td class="fn">op_compact</td><td class="cite">ops.rs:1593</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>fpath_changed</code></td><td class="fn">op_fpath_changed</td><td class="cite">ops.rs:1606</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>watcher_stats</code></td><td class="fn">op_watcher_stats</td><td class="cite">ops.rs:1633</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>log_level</code> / <code>log_rotate</code> / <code>log_stats</code></td><td class="fn">op_log_level, op_log_rotate, op_log_stats</td><td class="cite">ops.rs:1638, 1648, 1653</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>subscribe</code> / <code>unsubscribe</code> / <code>subscription_set_paused</code> / <code>publish</code></td><td class="fn">op_subscribe, op_unsubscribe, op_subscription_set_paused, op_publish</td><td class="cite">ops.rs:1683, 1733, 1710, 1749</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>load_script</code></td><td class="fn">op_load_script</td><td class="cite">ops.rs:1777</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>stats_flush</code></td><td class="fn">op_stats_flush</td><td class="cite">ops.rs:1796</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>keys</code></td><td class="fn">op_keys</td><td class="cite">ops.rs:1833</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>subscribe_shard</code></td><td class="fn">op_subscribe_shard</td><td class="cite">ops.rs:1857</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>export_zcompdump</code> + <code>synthesize_zcompdump</code></td><td class="fn">op_export_zcompdump</td><td class="cite">ops.rs:1872 + 1918</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>export_catalog</code></td><td class="fn">op_export_catalog</td><td class="cite">ops.rs:1991</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>export_shard</code></td><td class="fn">op_export_shard</td><td class="cite">ops.rs:2006</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>import_zcompdump</code></td><td class="fn">op_import_zcompdump + parse_zcompdump</td><td class="cite">ops.rs:2036 + 2298</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>import_zwc</code></td><td class="fn">op_import_zwc</td><td class="cite">ops.rs:2127</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>import_history</code> + <code>parse_zsh_history_file</code></td><td class="fn">op_import_history</td><td class="cite">ops.rs:2240 + parse_zsh_history_file</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>import_catalog</code> / <code>import_shard</code> / <code>import_all</code></td><td class="fn">op_import_catalog, op_import_shard, op_import_all</td><td class="cite">ops.rs:2298, 2369, 2528 (closed in round 2 audit)</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>job_*</code> family (submit/list/status/output/kill/cancel/wait)</td><td class="fn">7 op_job_* fns</td><td class="cite">ops.rs:2557+</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>job_input</code> / <code>job_resize</code> (ptmx attach for <code>--pty</code> jobs)</td><td class="fn">op_job_input, op_job_resize</td><td class="cite">ops.rs (base64 input write to pty master; <code>TIOCSWINSZ</code> via nix)</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>source_resolve</code> + sensitive heuristic</td><td class="fn">op_source_resolve + is_sensitive + read_file_nofollow</td><td class="cite">source_resolver.rs:33 + 178; <code>O_NOFOLLOW</code> on read; <code>O_NOFOLLOW | O_CREAT | O_EXCL</code> on shard write; <code>MAP_PRIVATE</code> on sensitive mmap (closed in round 2)</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>history_append</code> / <code>history_query</code></td><td class="fn">op_history_append, op_history_query</td><td class="cite">history.rs:221, 310</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>push_canonical</code> / <code>pull_canonical</code> / <code>diff_canonical</code></td><td class="fn">op_push_canonical, op_pull_canonical, op_diff_canonical</td><td class="cite">zsync.rs:91, 277, 297</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>view</code> / <code>export</code> (with --filter/--range/--all/--show-sensitive)</td><td class="fn">op_view, op_export, render_filtered</td><td class="cite">export.rs:26, 30, 200</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>ask_*</code> family (ask/pending/take/dismiss/response)</td><td class="fn">5 op_ask_* fns</td><td class="cite">zask.rs:196, 320, 340, 362, 375</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
</tbody>
</table>

<h2 class="section">2. z* builtin family</h2>
<p class="ledger">23 zshrs-owned builtins (zcache, zls, zid, zping, ztag, zuntag, zsend, znotify, zsubscribe, zunsubscribe, zjob, zsync, zask, zhistory, zsource, zcomplete, zsuggest, zcmd-result, zlog, zwhere, zd, zlock, zpublish), anti-collision-checked vs upstream zsh (zmv/zparseopts/zformat/zstat/zstyle/zprof/zcompile/zargs/zcurses/zsystem/ztie/zuntie/zselect/zsocket/zftp/zpty/zed/zcalc/zregexparse/zutil/zmodload/zle).</p>
<table class="fmap">
<thead><tr><th>Builtin</th><th>Entry fn</th><th>File</th><th>Status</th></tr></thead>
<tbody>
<tr><td><code>zcache</code></td><td class="fn">dispatch / zcache</td><td class="cite">builtins.rs:26, 126</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zls</code> / <code>zid</code> / <code>zping</code> / <code>ztag</code> / <code>zuntag</code></td><td class="fn">zls, zid, zping, ztag, zuntag</td><td class="cite">builtins.rs:648, 738, 750, 813, 832</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zsend</code> / <code>znotify</code></td><td class="fn">zsend + parse_send_args, znotify</td><td class="cite">builtins.rs:862, 944</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zsubscribe</code> / <code>zunsubscribe</code></td><td class="fn">zsubscribe, zunsubscribe + filter+pause+list</td><td class="cite">builtins.rs:1251, 1574</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zsync</code> (up/diff/pull/watch)</td><td class="fn">zsync + push + pull + diff + watch</td><td class="cite">zsync_builtin.rs:53, 148, 200, 218, 96</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zask</code></td><td class="fn">zask + ask + take + dismiss + pending + progress + inbox-clear + response</td><td class="cite">zask_builtin.rs:53, 86, 396, 418, 368, 202, 287, 442</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zlog</code> (tail/grep/level/clear/rotate/path/stats)</td><td class="fn">zlog + 7 sub-fns</td><td class="cite">builtins.rs:1056-1218</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zjob</code> (submit/list/status/output/cancel/kill/wait)</td><td class="fn">zjob + 7 sub-fns</td><td class="cite">zjob_builtin.rs:56-442</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zhistory</code> (append/query/count)</td><td class="fn">zhistory + 3 sub-fns</td><td class="cite">zhistory_builtin.rs:50-190</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zcomplete</code> / <code>zsuggest</code></td><td class="fn">zcomplete, zsuggest</td><td class="cite">zcomplete_builtin.rs:48, 91</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zsource</code></td><td class="fn">zsource</td><td class="cite">zsource_builtin.rs:57</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zlock</code> (try/acquire/release/list)</td><td class="fn">zlock + 4 sub-fns</td><td class="cite">zlock_builtin.rs</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zpublish</code> (TOPIC [DATA] [--json '{...}'])</td><td class="fn">zpublish</td><td class="cite">zpublish_builtin.rs</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zwhere</code> (SUBSYS NAME &mdash; <code>file:line</code> attribution)</td><td class="fn">zwhere</td><td class="cite">zwhere_builtin.rs</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zd</code> (in-process builtin &mdash; same arg surface as <code>zd</code> bin, 5.5&times; faster: 0.48 ms vs 2.64 ms fork+exec)</td><td class="fn">zd</td><td class="cite">zd_builtin.rs</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zcmd-result</code></td><td class="fn">zcmd_result</td><td class="cite">zcmd_result_builtin.rs</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
<tr><td><code>zjob attach</code> (read-only file-tail / bidirectional raw-mode pump for <code>--pty</code>)</td><td class="fn">zjob_attach + termios cfmakeraw + Drop guard</td><td class="cite">zjob_builtin.rs (attach subcommand)</td><td class="status-cell"><span class="st-full">FULL</span></td></tr>
</tbody>
</table>

<h2 class="section">3. Spec sections — coverage by section</h2>
<table class="fmap">
<thead><tr><th>Section</th><th>Status</th><th>Where / what's missing</th></tr></thead>
<tbody>
<tr><td>"v1 Locked Design — 90/10 work split"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">All daemon-owned subsystems wired (compilation, persistence, FS enumeration, plugin discovery, single fsnotify, zjob, pub/sub, ticker)</td></tr>
<tr><td>"NO WALKING IN CLIENTS"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">Clients only mmap shards; canonical reads via IPC ops; client.rs has no walk code</td></tr>
<tr><td>"Daemon = sole writer"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">flock singleton + Mutex&lt;Connection&gt; on catalog/history; atomic-rename ordering</td></tr>
<tr><td>"Snapshot-at-boot + overlay"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">Per-client mmap snapshot; overlay → canonical via push; mid-session pull opt-in</td></tr>
<tr><td>"Cache layout"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">Every file in CachePaths struct + 0700/0600 enforced</td></tr>
<tr><td>"catalog.db schema"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">All tables in catalog.rs:62 (plugins, plugin_deps, entries, hooks, entry_stats, compiled_files w/ sensitive col, parent_paths) + canonical view + jobs</td></tr>
<tr><td>"Special parameters served by daemon" (_comps, _services, _patcomps, _describe_handlers)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">Each is a canonical subsystem; op_keys serves flat key arrays; export.rs renders all four</td></tr>
<tr><td>"Starting state served by daemon" (PATH/FPATH/MANPATH/CDPATH/INFOPATH/LD_LIBRARY_PATH/named_dir/aliases/galiases/saliases/setopt/bindkey/zmodload/env/params/zstyle/theme)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">All 17 captured by zshrc_analysis.rs and stored in canonical engine. theme via params subsystem.</td></tr>
<tr><td>"Determinism boundary" (per-shell replay log)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">paths.rs <code>replay_dir</code> at <code>~/.zshrs/replay/</code>; ops.rs:write_replay_log emits <code>{hash8}-{stem}.zsh</code> per source root with non_deterministic_lines body; new op <code>replay_log</code> (op_replay_log) returns body for client to <code>eval</code> at boot.</td></tr>
<tr><td>"Walk lifecycle — first init" (4-pass)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">op_first_init runs Pass 1+2 (analyze) → Pass 3 (walk) → Pass 4 (serialize+catalog) → Pass 5 (plugins). ops.rs:712</td></tr>
<tr><td>"Steady state: fsnotify only, with delta-walks for newly-introduced directories"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">zsync.rs:217 <code>apply_delta_walk</code> extracted as shared helper; called from both op_push_canonical (zsync up) and fsnotify::reanalyze_zshrc (steady-state). Adds dirs &rarr; walk + watch; removes dirs &rarr; drop entries + unwatch.</td></tr>
<tr><td>"Source / dot interception"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">source_resolver.rs handles full mtime+inode cache + sensitive flag</td></tr>
<tr><td>"Compat surface and zpwr-scale validation target" (zpwr 1.6M LOC, 478k history, .tokens.sh)</td><td class="status-cell"><span class="st-design">DESIGN</span></td><td class="cite">No bench measurement yet; architecture supports it but no &lt;60s cold-build proof exists</td></tr>
<tr><td>"Plugin manager interop" (8 managers)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">zinit/OMZ/antigen/zplug/antibody/sheldon/znap + direct git-clone — all parsed by zshrc_analysis::match_plugin (24 tests)</td></tr>
<tr><td>".zwc / .zcompdump invisible to scans, importable on demand"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">plugin_walk.rs:123, 185 filter; ops.rs op_import_zwc + op_import_zcompdump for explicit ingest; verify+clean now flag/remove litter</td></tr>
<tr><td>"History migration"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">op_import_history + render_zsh_histfile round-trip</td></tr>
<tr><td>"Promoting client-local changes to daemon canonical" (zsync up/diff/pull/watch)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">push_canonical now validates + delta-walks + registers fsnotify + emits canonical_changed (zsync.rs:91)</td></tr>
<tr><td>"Universal cache dump / view / export" (30+ targets × 9 formats)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">export.rs supports all 9 formats per target. <code>zd export TARGET FORMAT</code> auto-unwraps for binary formats (pdf/sh/csv/json/yaml/text) &mdash; <code>--json</code> opt-in restores envelope. <code>export --all</code> emits POSIX ustar (op_export_all, ops.rs:2434). Reverse-import wired: op_import_catalog (2298), op_import_shard (2369), op_import_all (2528).</td></tr>
<tr><td>"IPC wire format" (length-prefixed JSON)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">ipc.rs:180/202/219/241 framing; Hello/Welcome/Frame/ErrPayload all defined</td></tr>
<tr><td>"Daemon lifecycle" (singleton flock / crash recovery / degraded mode / explicit start)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">pidlock.rs flock singleton; client.rs handles NotConnected fallback. Daemon is its own binary (<code>zshrs-daemon</code>) and is started explicitly &mdash; never auto-spawned from a shell entrypoint.</td></tr>
<tr><td>"First-run user notification"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">firstrun.rs:18 maybe_print + ZSHRS_QUIET_FIRST_RUN gate</td></tr>
<tr><td>"Long-running command notices" (4 events)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">history.rs:260-283 publishes long_cmd_complete/failed/signaled; ops.rs:754 op_cmd_started</td></tr>
<tr><td>"Cold-build-complete znotify"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">op_first_init broadcasts <code>Frame::event("notify", &hellip;)</code> with elapsed_ms + entry count payload (ops.rs:734). "daemon ready &mdash; future shells &lt;10ms cold-start (took {N}s, {N} entries)".</td></tr>
<tr><td>"zask — daemon-queued UI primitives"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">zask.rs full inbox with critical-first ordering, Ctrl-X q activation, 60-min timeout</td></tr>
<tr><td>"Daemon logging"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">log.rs init + ticker.rs rotation (10MB, 4 archives) + zlog tail/grep/level/clear/rotate/path/stats</td></tr>
<tr><td>"Hard invariants" (13 REJECT-list items)</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">All 13 enforced — no client polling, sole writer, no .zwc auto-import, etc.</td></tr>
<tr><td>"Acceptance criteria" (perf budgets)</td><td class="status-cell"><span class="st-design">DESIGN</span></td><td class="cite">No bench harness measures &lt;5ms / &lt;2ms / &lt;30s targets; spec stands</td></tr>
<tr><td>"Security model"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">server.rs:299 peer_uid (SO_PEERCRED); paths.rs:100/113 perm helpers (0700/0600); export.rs:144 sensitive guard. Sensitive read/write: source_resolver.rs:read_file_nofollow uses <code>O_NOFOLLOW</code>; shard.rs:write_shard tmp file <code>O_NOFOLLOW | O_CREAT | O_EXCL</code>; shard.rs:open_sensitive uses memmap2 <code>map_copy_read_only</code> (<code>MAP_PRIVATE</code>).</td></tr>
<tr><td>"Failure modes &amp; disaster recovery"</td><td class="status-cell"><span class="st-partial">PARTIAL</span><br><span class="partial-note">zcache doctor lives; quarantine/recovery from corrupted shards is single-attempt-rebuild only</span></td><td class="cite">ops.rs:1255 op_doctor 9-check sweep; corruption recovery is "delete + walk again" not "quarantine + auto-rewalk"</td></tr>
<tr><td>"Cross-platform support"</td><td class="status-cell"><span class="st-full">FULL</span></td><td class="cite">notify::RecommendedWatcher autoselects FSEvents/inotify/kqueue; server.rs:299 has Linux/macOS/BSD branches</td></tr>
<tr><td>"Versioning &amp; migration"</td><td class="status-cell"><span class="st-partial">PARTIAL</span><br><span class="partial-note">scaffold present; only v1 schema exists, no v1→v2 migration test corpus</span></td><td class="cite">shard.rs:36 ShardHeader.format_version; catalog.rs:46 PRAGMA user_version; only one version today</td></tr>
</tbody>
</table>

<h2 class="section">4. Reproduce the verification</h2>
<p>Three commands, in order, from repo root:</p>
<code class="build-cmd">cargo build -p zshrs-daemon          # → Finished, zero warnings</code>
<code class="build-cmd">cargo test -p zshrs-daemon --lib     # lib-only matrix (counts drift; run locally)</code>
<code class="build-cmd">grep -nE "unimplemented|todo!|FIXME" daemon/*.rs   # → no matches</code>

<p class="ledger" style="margin-top:2rem;">
  <strong>What changed in this audit pass.</strong> First report claimed "100% implemented" — that was wrong. Re-reading DAEMON.md line by line surfaced 20+ gaps. Eight were fixable in one session and are now closed (round 1, top table). Round 2 closed every remaining item: <code>import catalog/shard/--all</code>, <code>export --all</code> tar archive, fsnotify delta-walk via shared helper, cold-build-complete znotify, <code>O_NOFOLLOW</code> + <code>MAP_PRIVATE</code> for sensitive content, per-shell replay log + <code>replay_log</code> op, RTT bench harness binary. May 2026 then landed the architectural moves listed in the second summary box (single <code>$ZSHRS_HOME</code>, separate <code>zshrs-daemon</code>/<code>zshrs-recorder</code> binaries, three log files, default 127.0.0.1:7733 listener with <code>/openapi</code>, <code>zd</code> two-surface design, <code>zlock</code>/<code>zpublish</code>/<code>zwhere</code> builtins, <code>zjob attach</code> bidirectional ptmx, <code>zsync up --all</code>, <code>skip_configs</code>). Remaining open items are <code>zcache rebuild --parallel</code> measurement, real bytecode in compiled_files BLOB, and committed perf-budget numbers — listed honestly in section "What's still legitimately incomplete."
</p>

</main>
</body>
</html>