Quartz or site consumer interface
This page defines the consumer interface for turning published artifacts into a website without tight coupling.
The consumer is a site builder, for example Quartz, Docusaurus, or any static site pipeline. The consumer must treat published outputs as immutable inputs and must not depend on upstream repo internals.
Scope and non scope
This page defines:
- Which published endpoints are valid inputs to a site consumer
- The rule that consumers use index files or snapshot manifests only
- Minimal mapping from published artifacts to site pages
- URL stability rules and update handling rules
- Required IO expectations for a consumer integration
This page does not define:
- Installation tutorials
- Build tool configuration details
- Theme, styling, UI components, or routing frameworks
- Any upstream pipeline implementation details
Consumer inputs
A site consumer may consume one or both of the following.
Input family A: Digest outputs
Valid inputs:
- Digest index files declared as authoritative
- Published memo content referenced by those index files
- Any digest level indexes used to enumerate content windows
The consumer must not discover digest content by walking directories. It must enumerate via index files only.
Input family B: Snapshot outputs
Valid inputs:
- Snapshot manifest file
- Tiles referenced by the manifest
- Optional snapshot accelerators referenced by the manifest
The consumer must not guess tile names or optional files. It must follow the manifest only.
Authoritative read rule
The consumer reads only these authority documents:
- digest indexes for digest outputs
- snapshot manifests for snapshot outputs
The consumer must never infer structure by directory naming conventions alone.
Examples of forbidden behavior:
- globbing all markdown files under a digests folder
- assuming a directory tree implies bag types or time windows
- reading intermediate scratch outputs or local run directories
- reading upstream raw inputs from producers
Minimal mapping rules
The consumer must map published artifacts into a stable site surface with minimal assumptions.
Digest memos to pages
The consumer must treat each memo as a page candidate only if it is referenced by the digest indexes.
The mapping must define:
- page identifier derivation, based on stable ids or stable slugs declared in indexes
- page title derivation, using metadata from indexes and memo frontmatter where present
- page grouping, based on bag type, topic tags, or window identifiers from the indexes
The consumer must not derive identifiers from file paths alone. If a file path changes but the index stable id remains the same, URLs must remain stable.
Snapshot docs to pages
A snapshot doc may become:
- a page
- a section on an index page
- an entry in a list view page
The mapping must define:
- doc id and stable URL mapping based on doc id or stable id
- grouping and navigation based on doc metadata declared in the manifest doc schema
The consumer must not reorder docs. It must preserve snapshot ordering where it affects navigation.
Update handling
Updates are expected. The consumer must support re builds without breaking URLs or producing partial site state.
Digest updates
Digest outputs should be updated atomically. The consumer should:
- read index files
- generate pages and lists accordingly
- treat missing referenced memos as a hard error unless the index declares recoverable mode
The consumer should not keep stale pages that are no longer referenced by current indexes unless it has an explicit retention policy.
Snapshot updates
Snapshots are immutable once promoted. Updates happen by producing a new snapshot directory. The consumer should:
- treat the manifest as the entry point
- consider the snapshot id as the version key
- support selecting latest snapshot by a configured pointer if needed, but that pointer must be explicit and not inferred
URL stability rules
The consumer must preserve URLs across re builds.
Rules:
- URLs should be derived from stable ids or stable slugs declared by authoritative indexes or manifests
- Renaming a directory or changing internal file layout must not change URLs
- If a URL must change, it must be handled as a formal migration with redirects or alias mapping, and it should trigger an ADR
Recommended structure:
- stable top level namespaces by artifact family
- stable second level grouping by bag type or doc family
- stable per item slug derived from stable id and a human readable hint
If a consumer cannot support redirects, then URL changes must be avoided by design.
Compatibility and version handling
The consumer must:
- validate schema versions of inputs
- fail fast when schema versions are unsupported
- treat unknown fields as ignorable unless required fields are missing
For digest indexes:
- required fields must exist for enumeration and URL mapping
For snapshot manifests:
- required fields must exist for locating tiles, ordering docs, and verifying integrity
If versions are incompatible, the consumer must stop the line and record the failure in its run record.
Output contract of the consumer
The consumer should emit:
- a build log that references input index or manifest identifiers
- a run record that includes:
- input manifests and indexes used
- output location or deployment target identifier
- validation results and any integrity failures
This ensures the website itself fits the ecosystem observability pattern.
Summary: coupling boundaries
The consumer integration must keep coupling low by obeying two rules:
- The consumer reads only authoritative indexes or manifests.
- The consumer never reaches upstream to compute meaning, enumerate content, or parse raw inputs.
This lets upstream repos evolve internally without breaking the website surface, while maintaining stable contracts at the publish boundary.