Devlog week 9: related posts, freshness monthly issues, box-audit 0.11.0
The week shipped: a related-posts block on every post page (the long-running issue #102, finally closed), the freshness bot's report split into one issue per calendar month with the review now dispatching its own fixes, three rolling post corrections, box-audit 0.11.0 with an evidence-integrity rule, and three new posts live on the site.
Related posts
Every post page now ends with a related-posts block: exactly three items, ranked by shared canonical tags through the tag registry (so node aliases nodejs), with same-pillar posts filling any gaps. Build-time only — no client JS. The block sits below the prev/next window as its own terminal-window, tag pills reuse the hero's styling, and a zero-dependency verifier re-derives each post's expected set from frontmatter and asserts the prerendered HTML carries it, including the negative checks (no draft leaks, no self-references).
Freshness: monthly issues + auto-fix dispatch
The freshness report stopped being one forever-growing issue. There's now one per calendar month; each run comments into the current month's, and older ones auto-close pointing at their successor. The bigger change: when a review finds actionable problems, it dispatches the fixes card itself instead of waiting for a human to notice the report — idempotent per post per day, so a re-run can't duplicate. Clean reviews create nothing.
Three rolling post corrections
The fix chain shipped three rounds. The velite post got a broken import link and a dead schema link repaired, plus the forward links to its sequel. The router post dropped a 6GHz claim the spec page didn't support, corrected the Fritzbox DHCP range, and gained an internal link. The multi-agent review post lost a typo, a section that repeated an earlier one, and gained links to its predecessor and successor posts. The lastModified rule for the chain got codified along the way.
box-audit 0.11.0
The accept flags take --reason TEXT now, and the reason lands in a dedicated sidecar keyed to the accepted value — six months later, the why is still on disk. --show-reasons dumps the file with (stale) markers where a recorded value no longer matches its allowlist. The sidecar sits deliberately outside the config hashes and untouched by --init, so annotations survive a re-init by construction rather than by merge logic. The operator docs gained an evidence-integrity section in the same release: assert the thing itself, never a derived copy, and give every new gate the negative variant that proves its teeth.
Also shipped
/publish-check now generates missing sidecars by default on single-post runs, with a flag to opt back out. The devlog guidelines gained their fact-lint block — counts, versions, attribution, checked against the record before a PR opens — and the bad-language canon gained publication-readiness and plain-technical-English sections. Dependabot cleared nine minor-and-patch bumps.
Three posts went live: the phone-stuck-at-99-empty-directory story, the publisher-agent-runs-five-jobs post, and the freshness-bot post. The ideas pipeline committed five new cards Saturday and shipped all five Sunday. A Mnemosyne trial started midweek on the default profile, verdict due mid-October. Worktree cleanup benched onegoodcoffee and killed devbreakdown.
Next: the Mnemosyne day-7 verdict lands mid-October, and the silent-cron rule still owes its third leg — noticing when a job sits paused instead of dying quietly.