Quartz Public Site — TODO
Working list for improving the news.mohinika.com build and deployment. This note is maintained in alf-vault so the current state and restore risks remain visible.
- hiro to educate himself on Quartz and watch some videos
Publication safety
- Manually review all current
public: truearticle notes; an article should not become public before it has been rated/reviewed. - Decide whether the deterministic publisher should enforce
public: trueand a non-emptyratingfor notes underNews articles/, while allowing other future public analyses to usepublic: truewithout a rating. - Add a dry-run safety report listing newly public, newly private, unrated, and removed notes before pushing.
- Check the generated site for accidental personal comments, private source material, health/financial details, and inaccessible wikilinks.
- Consider a first-publication approval gate for newly selected notes.
Quartz capabilities to explore
- Inventory the Quartz plugins currently enabled in
quartz.config.tsand distinguish built-in emitters, transformers and filters from Obsidian plugins. - Test Quartz’s
ExplicitPublishfilter as a possible second publication safeguard. - Explore folder pages, tag pages, search, graph, backlinks, breadcrumbs, RSS and sitemap for the news site.
- 2026-09-20: the site now publishes a generated Logged articles index at
/News-articles/— the news articles, the crisis maps and the envisioning work, newest first, with Created and Modified columns. It is built deterministically from the published notes, so a published note appears and an unpublished one drops out. - The subscribe feed (
/index.xml) carries those same three areas and nothing else. Everything else published stays on the site (and in the sitemap), to be shared deliberately rather than listed or fed. - The generated index replaces the plain auto folder listing for the news section; per-topic folder pages are unchanged.
sitemap.xmllists every published page again (its URLs had been malformed).
- 2026-09-20: the site now publishes a generated Logged articles index at
- Explore whether Quartz properties/frontmatter can replace or complement Dataview views.
- Decide which public-facing indexes or landing-page sections would be useful for topics, dates, systems and polycrisis themes.
- Test Mermaid/LaTeX/callouts only if they improve public articles rather than adding maintenance.
- Document which Obsidian features do not render in Quartz and provide safe authoring guidance.
This is a public note that gets published
Dataview and Obsidian compatibility
- Confirm which existing Dataview queries are used in
alf-vault. - Identify queries that cannot be published directly through Quartz.
- Replace useful public views with Quartz-native folders, tags, frontmatter, search or generated index notes where appropriate.
- Keep Dataview as an Obsidian authoring aid unless a public Quartz equivalent is proven.
Build and deployment
- Add a local preview/test procedure for
news_alfbefore a production push. - Add link checking for internal and external links where practical.
Incident — 2026-10-02: the site silently froze for ~70 minutes
An Envisioning note (Envisioning/How Agents Extend Human Judgement.md, created 09:08 by another agent) carried invalid YAML frontmatter — source: … episode "Cancel Culture: What Happens When AI Agents Do Your Admin?" …; a plain YAML scalar cannot contain : . Quartz exited 1, Cloudflare kept serving the last good deployment, and every push in the window (09:31, 09:43, 10:01) built nothing. Nothing looked wrong from the vault or from git — the newly filed note simply never appeared.
- Diagnosis:
cd /opt/data/projects/news_alf && npx quartz build— the log names the file, the line and the column. Never diagnose this by waiting for a deploy. - Fix: quote the offending value (
source: 'Text: with a colon'). A latent second case (260831 Dan Neidle …,public: false) would have broken the build the moment it was published; fixed in the same sweep. A full scan of 579 vault frontmatter blocks found those two and no others. - Restored 10:41 — feed 92 items, both blocked pages 200.
- Guard added the same day:
publish_news_alf.pynow validates every selected note with PyYAML before writing anything and aborts withINVALID_FRONTMATTER <path>: <error>rather than pushing a build-breaking commit. A dry run printsfrontmatter_check=ok (N notes). - Decide whether Cloudflare should build from GitHub or continue receiving a prebuilt/static workflow.
- Add a documented manual Cloudflare Pages verification step for
news.mohinika.com. - Review whether the repository should contain only Quartz source plus exported public content, or whether build artefacts should stay ignored.
Hermes automation and restore resilience
- Preserve the editable landing page here:
Projects/Intentional News/Public Landing Page.md. - Keep the no-agent publisher deterministic and restricted to exact
public: trueselection. - Keep current cron and model snapshots under
/mnt/backup/hermes-state/. - Refresh the Hermes restore checklist whenever jobs, aliases, paths, publication rules or domains change.
- Test restoring the cron/model snapshots in a safe or documented procedure.
Decisions to record
- Record the final rating/publication rule in a dated note under
Decisions/. - Record the selected Quartz plugin set and any Dataview replacement approach in a dated decision note.
- Record whether the public site is an article archive, a living knowledge garden, or both.
Current implementation
- Repository:
hkhiro/news_alf - Local checkout:
/opt/data/projects/news_alf - Source vault:
/opt/data/obsidian/alf-vault - Landing-page source:
Projects/Intentional News/Public Landing Page.md - Site:
news.mohinika.com - Publisher:
/opt/data/projects/publish_news_alf.py - Publisher mode: Hermes no-agent job, every 30 minutes
- Publication selector: exact YAML
public: true - Default REMOVED 2026-10-07 (the owner, verbatim): “There should not be any defaults for public: true. It should be public: false unless I specifically state it to be true.” The 2026-10-01 rule that a note filed into
News articles/publishes by default is dead.public: falseis the default for EVERY note,News articles/included;public: trueonly on the owner’s explicit instruction for that specific note. The reasoning behind the old rule still holds as a problem, not a default: a private news note under a public root gives readers a dead 404, so a published Crisis/Envisioning note should either avoid the wikilink or the owner publishes the target too (see the open item below). Rule now written into thefile-news-articleskill (alf-fin, 2026-10-07) and the vault privacy reference. - Open, not actioned (2026-10-01): 78 older
News articlesnotes remainpublic: false(57 of them carry named-household/portfolio references in the body — scrub before publishing); a wider 157 links from public pages point at unpublished targets (private Envisioning/Crisis/Projects notes). Options: publish the targets, or make the Quartz transformer render unresolved links as plain text instead of 404 anchors. - Feed and page parity (verified 2026-10-01):
/index.xml(the single RSS feed) and/News-articles/(“Logged articles”) carry the same set — 86 articles: 53News articles+ 19Crisis+ 14Envisioning, newest first. Feed scope isrssIncludeRoots: ["News articles","Crisis","Envisioning"]inquartz.config.ts, matched on file path. - Fixed 2026-10-01: the generated “Logged articles” page was being emitted as a feed item (it sat at the top of the feed, dated with each publish run). The vendored emitter now drops every
index.mdfrom the feed — a feed carries articles, not navigation. Private notes (public: false) are absent from both the feed and the page by design; flipping one to public shows it within the 30-minute cycle.
Last reviewed: 2026-10-07 (public-default reversal applied)