Artifact Roots¶
Atlas keeps generated reports, run products, caches, and examples in distinct
roots because they carry different trust and retention properties. A path under
artifacts/ is discoverable output, but the path alone does not make it valid
evidence.
flowchart TD
Run[Named command run] --> Evidence[artifacts/RUN_ID]
Run --> Isolate[artifacts/isolates/LANE]
Run --> Cache[.cache or configured Cargo roots]
Source[Checked-in source] --> Example[ops/_generated.example]
Evidence --> Retain[Reports, logs, summaries, receipts]
Isolate --> Dispose[Temporary and lane-scoped execution state]
Cache --> Dispose
Example --> Fixture[Reviewed example, not run evidence]
Root Semantics¶
| Root | Intended contents | Trust rule |
|---|---|---|
artifacts/<run-id>/ |
reports and receipts for one run | bind claims to run, revision, command, and target |
artifacts/isolates/<lane>/ |
temporary lane and Cargo state | disposable; cache presence is not run proof |
.cache/ or an explicitly configured Cargo root |
compiler and dependency caches | performance optimization only |
artifacts/docs/site/ |
built documentation site | publication input; verify its build separately |
ops/_generated.example/ |
checked-in example output | fixture, never live run evidence |
Workflows do not use one universal Cargo cache location. For example,
ops-validate places Cargo state beneath its isolate, while
release-candidate uses .cache/cargo/target/release-candidate and keeps run
reports under artifacts/<run-id>/. Consumers must use the paths declared by
the executing lane rather than infer evidence from a generic directory name.
Run Identity¶
A reviewable run root contains enough context to answer:
- which command and revision produced the files;
- which profile, selector, or suite was chosen;
- which capabilities and external targets were used;
- which report is authoritative and which files are supporting logs;
- whether the workflow uploaded the complete root and how long it is retained.
The release-candidate and ops-validation workflows create a unique RUN_ID,
write reports and logs under that root, summarize key paths, and upload the run
directory. Individual commands can also write domain-specific paths elsewhere
under artifacts/; workflow capture must make those paths explicit.
Retention and Promotion¶
Moving a file from disposable output into a governed location changes its contract. Make that transition only when a registry names the destination, producer, source inputs, validation command, and consumer. Preserve the generated header or schema identity required by that registry.
| Lifecycle action | Required evidence |
|---|---|
| retain a run | run identity, revision, command, inputs, result, and artifact manifest |
| upload from CI | workflow and job identity, retention period, complete root, and checksum or platform receipt |
| compare with a baseline | scenario identity, environment class, metric semantics, and compatibility decision |
| publish as release evidence | artifact identity, provenance, checksum binding, and consumer verification |
| promote into a governed source location | owning registry, deterministic generator, freshness check, and review |
Copying a report into a release packet does not strengthen the report. The packet must preserve its status, scope, input identity, and evidence gaps.
Repository Boundary¶
configs/sources/repository/repo-laws.json declares runtime artifacts
ephemeral outside governed examples. Generated output is committed only when a
registry or source contract names the governed destination. Otherwise it stays
untracked and disposable.
Path Compatibility¶
Report paths named by workflows, registries, or consumer automation are compatibility surfaces. Cache and temporary paths are not, unless a checked-in consumer incorrectly promotes them into a contract. Change a governed path with its producers and consumers; do not retain an obsolete location by silently duplicating outputs.