DOG-010 HIGH: ULOG row injection + one-bad-line permanent rebuild DoS

dog/ULOG.c emits log rows with plain URIutf8Feed (ULOG.c:40) — nothing rejects or escapes \n, \t, SP, or # in URI components, even though abc ships URIutf8FeedSafe (abc/URI.h:62-71) for exactly this trust boundary and worktree FILENAMES flow into rec->uri.path. A file named x\n0\tdel\t?refs/heads/main forges a complete extra attribution row. Worse, any malformed/non-monotonic line bricks the log: ulog_scan_log (ULOG.c:233-235) aborts on the FIRST ULOGBADFMT/ULOGCLOCK, so once the sidecar goes stale (clone, sidecar deleted, RO anon fallback, crash) EVERY subsequent ULOGOpen fails permanently — one crafted filename is a durable DoS on the wtlog. Method: Issues.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome