Skip to content

Zola export has no end-to-end 'does it actually build?' check — subdir-deploy breakage ships silently #378

@avrabe

Description

@avrabe

Friction (dogfooding, hourly loop)

While verifying three agent-reported export findings (REQ-115/116/118 — absolute /<prefix>/artifacts/… links that 404 on a GitHub-Pages-style sub-directory deploy, fixed in #377), I hit a recurring gap:

There is no way to know whether a rivet export --format zola site actually builds, short of hand-scaffolding a Zola site and running zola build yourself.

  • The existing export tests (export_html.rs, the new export_zola.rs) assert on generated strings. They can't catch a whole class of bug where the export succeeds but produces output that is broken downstream — wrong link forms, a dangling internal link that aborts zola build, a missing shortcode template, a missing taxonomy.
  • REQ-115/116/118 are exactly this class. The export exited 0 and looked fine; the breakage only appeared under a real build with a sub-directory base_url.
  • rivet export --format zola prints guidance ("ensure your config.toml has a 'tags' taxonomy", "--shortcodes") but a user who follows it can still land on a site that fails zola build with a cryptic Tera/taxonomy error.

What I used / what finally helped

Verifying the finding required:

  1. Hand-writing a minimal config.toml (with base_url set to a sub-path and a tags taxonomy) + templates/{index,section,page}.html.
  2. rivet export --format zola --shortcodes --output <site>.
  3. zola build, then grepping the built HTML for links that dropped the sub-path.

Having zola installed locally (0.22.1) is what made the finding verifiable at all. Without it this stays a string-grep guess.

Suggested fix

  1. An optional CI smoke job (gated on zola being available, like the Kani/Verus continue-on-error jobs): export the dogfood corpus, run zola build under a sub-directory base_url, fail if the build errors or if any generated link drops the sub-path. This would have caught REQ-115/116/118 before they shipped.
  2. A documented one-command repro recipe (or a rivet export --format zola --scaffold that emits a minimal buildable config.toml + the required templates), so verifying export correctness doesn't require hand-rolling a Zola site.

Filing per the loud-fail-over-silent-success doctrine: "export succeeded" should imply "the output is usable," and today it doesn't for Zola. Will also dogfood the product half as a REQ artifact.

Context: fixes landed in #377.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions