up
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Policy Simulation / policy-simulate (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
devportal-offline / build-offline (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Policy Simulation / policy-simulate (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
devportal-offline / build-offline (push) Has been cancelled
This commit is contained in:
49
docs/schemas/artifacts.md
Normal file
49
docs/schemas/artifacts.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Artifacts Schema (DOCS-ORCH-34-004)
|
||||
|
||||
Last updated: 2025-11-25
|
||||
|
||||
## Purpose
|
||||
Describe artifact kinds produced by Orchestrator runs and how they are stored, hashed, and referenced.
|
||||
|
||||
## Artifact kinds
|
||||
- **log**: NDJSON log fragment for a step/run.
|
||||
- **metrics**: Prometheus/OpenMetrics snapshot for a step/run.
|
||||
- **output**: arbitrary task output (JSON, NDJSON, binary), content-addressed.
|
||||
- **manifest**: bundle manifest listing artifacts and hashes.
|
||||
|
||||
## Schema (common fields)
|
||||
```json
|
||||
{
|
||||
"kind": "log|metrics|output|manifest",
|
||||
"tenant": "acme",
|
||||
"dagId": "string",
|
||||
"runId": "string",
|
||||
"stepId": "string",
|
||||
"contentType": "application/json",
|
||||
"hash": "sha256:<hex>",
|
||||
"size": 1234,
|
||||
"createdUtc": "2025-11-25T00:00:00Z",
|
||||
"traceId": "optional",
|
||||
"encryption": "none|aes256-gcm",
|
||||
"compression": "none|gzip"
|
||||
}
|
||||
```
|
||||
|
||||
## Storage rules
|
||||
- Content-addressed by `sha256` (lowercase hex). Filenames may use `<hash>`; metadata kept in Mongo with tenant scoping.
|
||||
- Immutable; new versions create new hashes.
|
||||
- Optional encryption: AES-256-GCM with keys from Authority `secretRef`; never store keys alongside artifacts.
|
||||
- Compression optional (gzip) but hash is computed on compressed bytes; record `compression`.
|
||||
|
||||
## Access & security
|
||||
- Tenant-scoped reads; artifacts cannot be shared across tenants.
|
||||
- No secrets stored; redact before writing. Logs/metrics already redacted at source.
|
||||
- Access control enforced via orchestrator scopes; audit log every download/export.
|
||||
|
||||
## Offline posture
|
||||
- Artifacts may be exported as tarball with manifest (`manifest` kind) that lists hash, size, compression/encryption flags.
|
||||
- Imports verify manifest hash and per-artifact hash before accepting.
|
||||
|
||||
## Determinism
|
||||
- Hash and size recorded at creation; manifests sorted by `kind`, then `dagId`, `runId`, `stepId`, `hash`.
|
||||
- Timestamps UTC ISO-8601; NDJSON ordering stable.
|
||||
Reference in New Issue
Block a user