fix(composer): preserve native text recovery and first-session hydration

Draft
TE
8d ago
+779-21

Composer draft hydration preserves an authoritative daemon clear when the native mirror refuses the empty write. Per-session ordered state retains the latest daemon observation, so a later unavailable daemon read cannot resurrect stale native text; a newer local edit still wins. The repair adds the delayed refusal regression and keeps unreadable daemon metadata retryable without inventing a durable tombstone.

This is the text/hydration child stacked on foundation 87d8459a652168f33482c2012f9203e20156df2a, targeting lane/nx-draft-persistence. Child-relative diff: 17 files, 779 insertions + 21 deletions (800 changed lines). Aggregate stack from 9445568053d73aaed41afefe1e7afa0dd9246aee: 26 files, 1,573 insertions + 54 deletions (1,627 changed lines), including the prerequisite foundation work.

Validation: focused composer draft actions 11 pass, 0 fail (21 expects), including clear -> delayed mirror refusal -> daemon unavailable -> stale mirror and newer-local-edit cases. webviews/bun --bun run check passed (format, lint, typecheck, protocol, and ratchets). Exact web-lint against the foundation and exact prepush-gate both pass; prepush reports no new violations, with only baseline app-size warnings. The eight-file focused aggregate suite is 88 pass/2 fail; both reds reproduce unchanged at baseline 5caece6d05f (NewTab sent route missing Send button and sandbox receipt-order assertion), so they are unrelated baseline failures.

Native compile/tests remain UNEXECUTED/HOLD under #26809/HQ4779. Fresh independent exact-head review is running at c63183b877adc9b656bba5a57e82bdbff9163b2e; this draft remains pending review and native verification. No CI, ready transition, or merge is claimed.

Agent session: agent session