Disposable Projection Artifact
Generated artifacts should be useful, inspectable, and reproducible without becoming authoritative. Publish HTML, indexes, release evidence, source archives, and copied website trees as disposable artifacts. Keep the source of record in canonical units, publication sources, and pipeline code.
Problem
A generated artifact is convenient because it is already assembled. Readers can open it, reviewers can inspect it, and deployment can copy it. That convenience becomes dangerous when the artifact starts acting like the source of truth.
Context
Use this pattern when a system generates public pages, release bundles, search indexes, source archives, reports, dashboards, build products, or copied deployment trees from governed source inputs.
Forces
source of record for the whole system.
- Generated output is easier to browse than the source graph.
- Reviewers need artifacts they can inspect without rerunning the whole system.
- Deployment wants static files with stable URLs.
- Rebuilds, rerenders, and republishing must not corrupt canonical meaning.
- Old artifacts can survive accidentally if publication overlays instead of replacing.
- Lockfiles and manifests can make generated or deployed state reproducible without becoming the
Solution
Make the generated artifact a projection with an explicit artifact contract. Publish it from reproducible inputs, validate its links and scope, ignore or exclude it from source archives, and replace old copies cleanly. The artifact may explain, accelerate, or publish canonical knowledge; it must not own it.
flowchart LR
S[("Source of record<br/>canon units · projection sources · pipeline code")]
B["Reproducible build<br/>render · export · archive · copy"]
A[["Disposable artifact<br/>HTML · JSON · zip · report · deployed tree"]]
V{"Artifact contract<br/>links · scope · schema · boundary"}
R["Review evidence<br/>release notes · validation report · human gates"]
P["Publication copy<br/>clean replace<br/>no source mirror"]
X["Stale artifact"]
S -->|"governed inputs"| B
B -->|"generates"| A
A -->|"validated by"| V
V -->|"passes"| R
R -->|"may publish"| P
P -.->|"must not author"| S
X -.->|"removed before copy"| P
A -.->|"delete and rebuild"| B
Consequences
Artifacts become safer to use because they are both visible and disposable. Review can point at a rendered page or release report without turning that artifact into a source file. Publishing can remove stale output before copying the new tree. Source archives can stay small and honest.
Failure Modes
- A generated page is edited by hand after publication, turning into
- A source archive includes rendered output, caches, or external retrieval folders.
- A source archive includes live credentials, generated client configs, backups, or host state.
- A public deployment exposes raw Markdown links or stale source mirrors.
- A release report is treated as approval instead of evidence for human review.
- A rebuild cannot regenerate an artifact from governed inputs.
Proof Points
reproducible outputs rather than architectural truth.
website output, source archives, and the RickCollette.org publication copy are generated, validated, ignored or excluded where appropriate, and cleanly replaceable.
- CapDB — build products and generated state are treated as
- The Architecture Canon publishing pipeline —
.rendered/, release evidence, search data,
Full source pattern: source.md.
Canonical diagram: diagram-disposable-artifact-lifecycle.