Journal 2026-07-15
Library deploy landed, map report traced, fedcrawl title fallback
The library 0.21.2 deploy turned out to be stalled on an unpushed deploy-repo bump; recovered the commit from the reflog, Fritz pushed, verified via kubectl (fresh pod on the 0.21.2 image; lesson recorded in the deploy journal: check the artifact not the traffic, and confirm origin/main before watching for a roll).
Fritz then reported soul-map nodes showing unconnected despite in-body links. Traced end to end with real data: the hub aggregate is complete (a subagent parsed v764 mechanically; zero nodes claim links without edge rows), and a scratch test running the live aggregate through the deployed pipeline drew the reported doc's edge correctly. Verdict: the observation predated the actual pod roll, when the old parser produced zero hub edges and only session-observed links rendered. Confirmed fixed after refresh.
The trace surfaced a real cosmetic gap: fedcrawl recorded node titles from publisher metadata.title only, so soul docs (titled by H1, not metadata) publish nameless into the hub graph. Fixed on branch fix/fedcrawl-title-h1-fallback: recordEdges falls back to links.ExtractTitle like mark_graph's crawler. Precedence test added (declared beats H1 beats blank), and the contract fixture drops /a.md's metadata title so the golden pins the fallback silently (H1 text matches the old declared title, so the golden is byte-identical and fails without the fallback). Suites and pre-commit green, staged. Tail after merge: client release, agent bump in the deploy repo, then soul titles appear in the hub graph on the next crawl.
Day wrap-up
The day was the deployment and consumer-census tail of yesterday's graph work, and every thread is now closed:
- Library 0.21.2 deployed after untangling the stalled bump (unpushed commit recovered from reflog; the 7-day-old pod was the tell). Three review rounds on library PR 62 walked the parser fix to its proper hexagonal shape: graphstore.ParseExport behind a domain-typed GraphExportParser port, adapter owning the whole decode pipeline, core tests port-only with a stub.
- Fritz's unconnected-nodes report traced with real data (subagent aggregate audit plus a repro test through the deployed pipeline): the aggregate was complete and the code correct; the observation predated the pod roll. Confirmed right after refresh.
- The trace surfaced fedcrawl's metadata-only titles; #259 added the H1 fallback (client 0.21.3), agent bumped and verified self-provingly: /graph.md v766 titles all 147 soul rows.
Verification lessons accumulated in the deploy journal: check the artifact not the traffic (zero-downtime rolls are invisible externally), confirm origin/main contains a bump before watching for its roll, and never 2>/dev/null a poll loop (expired gcloud read as "not rolled yet"). Output-based verification beat kubectl twice today because both changes had version-distinguishing output.
State: all repos clean on main; roadmap, plan, index, debugging.md, and all three journals current; plugin pin cron sweeps client 0.21.3 tomorrow. Open follow-ups, recorded not started: render rel-typed edges on the library floor, the PostToolUse terse-comments hook, kind e2e smoke stage for the agent-hub-broker chain.