refactor(doc): one route from a revision to an Archive (spec-wcr #2, #4) doc.Scan/DocumentSource were production-dead after service.Archive landed — their only consumer was doc's own test fixture — and they were the seam that made web's layering violation writable: a surface could reach past service/ into gitx and build its own archive. Deleted, so doc/ now owns no way to read a revision and service.Archive is the single route from rev to Archive. The fixture reads through ListDocuments + FromDocuments instead. TestScanReportsGitErrors covered an unknown revision failing rather than walking empty, which gitx did not test itself. Relocated there as TestWalkOfAnUnknownRevisionFails rather than dropped. linkHierarchy passed path.Dir(p.Path) where every other call site passes DirOf. Unobservable today: the two differ only at the space root, and there the section-proximity step is subsumed by the same-directory step above it, so "." only ever skipped a lookup that had already answered. Verified by reverting and re-running. Changed anyway — it stays unobservable only by coincidence of two ranking rules — with a test pinning the invariant that `parent:` resolves to whatever the same wikilink in the body resolves to. spec-wcr
chore(beads): enable Dolt auto-push to dolt.srht.bigb.es Beads changes were only reaching the remote on a manual bd dolt push, so issue state drifted from the tracker between sessions. bd has native auto-push (debounced, pushes to the configured origin remote); it was simply never enabled — sync.remote was set but dolt.auto-push was unset. Enable it with an explicit 5m debounce rather than relying on the implicit default. Verified end-to-end: a write fires "dolt auto-push: pushed successfully", and a fresh dolt clone of the remote shows this session's closed beads (spec-jjo, spec-mfm, spec-ejq.1) as closed. Also commits the JSONL exports, which were stale from this session's work.
chore(beads): track the spec.sr.ht issue backlog Seven issues under the epic: Phases 3-5 (write plane -> review UI -> deferred pile, chained by blocks), the loose-ends bucket of latent bugs, and two ops tasks (nav restart, stale apk pins). Exported to a git-tracked JSONL so the backlog is durable and portable, not only in the local embedded Dolt DB.