How-to: Add a new artifact type¶
This repo uses ports/adapters and a workflow pipeline.
Checklist¶
-
Define the domain model
-
Add a new
artifacts.Typevalue -
Add a v1 model struct and constructor
-
Implement a compute usecase
-
IO via
datasource.CanonicalStore -
Deterministic version hash (exclude build info)
-
Update validation
-
Extend builtin validator: schema checks + version recompute
-
Wire into workflow
-
Add to
workflow.Pipeline.RunDay -
Add to job mode (compute job + publish job)
-
Add reference docs
-
Add schema under
schemas/artifacts/ - Update
reference/output-layout.md
Non-negotiables¶
- Deterministic output for same canonical inputs
- Bounded resource usage
- Publish pointer updated last
Read next¶
- Suite how-to (signal end-to-end): How-to: add a new signal end-to-end
- Start here: Start here
- Artifacts and versioning: Artifacts and versioning
- Artifact schemas: Artifact schemas
- Output layout: Output layout (local filesystem)