490 lines
7.6 KiB
Markdown
490 lines
7.6 KiB
Markdown
---
|
||
name: "Core Artifacts Submodule Spec"
|
||
description: "Specification for :core:artifacts – structured outputs with lineage"
|
||
depth: 2
|
||
links: ["../index.md", "./core-module-spec.md", "./core-context-submodule-spec.md"]
|
||
---
|
||
|
||
# :core:artifacts module specification
|
||
|
||
version: 0.1-draft
|
||
status: foundational specification
|
||
|
||
---
|
||
|
||
# 1. purpose
|
||
|
||
`:core:artifacts` defines the canonical structured output model for correx.
|
||
|
||
It is the authoritative subsystem for:
|
||
|
||
* artifact contracts
|
||
* artifact lifecycle semantics
|
||
* schema ownership
|
||
* lineage tracking
|
||
* artifact immutability
|
||
* artifact validation boundaries
|
||
* artifact serialization contracts
|
||
|
||
Artifacts represent:
|
||
|
||
* structured outputs produced during orchestration
|
||
* machine-validated workflow state contributions
|
||
* replayable execution products
|
||
|
||
Artifacts are the primary mechanism through which models contribute semantic work to the harness.
|
||
|
||
---
|
||
|
||
# 2. responsibilities
|
||
|
||
`:core:artifacts` owns:
|
||
|
||
* base artifact contracts
|
||
* artifact schema contracts
|
||
* artifact lifecycle semantics
|
||
* lineage semantics
|
||
* artifact identity semantics
|
||
* immutability guarantees
|
||
* serialization contracts
|
||
* artifact metadata contracts
|
||
* artifact relationship semantics
|
||
* artifact provenance semantics
|
||
|
||
---
|
||
|
||
# 3. non-responsibilities
|
||
|
||
`:core:artifacts` MUST NOT own:
|
||
|
||
* artifact persistence implementations
|
||
* semantic validation logic
|
||
* transition evaluation
|
||
* orchestration progression
|
||
* model execution
|
||
* tool execution
|
||
* UI rendering
|
||
* websocket serialization transport
|
||
|
||
Artifact legality is validated externally.
|
||
|
||
---
|
||
|
||
# 4. architectural role
|
||
|
||
`:core:artifacts` acts as:
|
||
|
||
* structured semantic output authority
|
||
* workflow data contract authority
|
||
* lineage authority
|
||
* execution provenance authority
|
||
|
||
All meaningful workflow progression MUST operate on artifacts rather than freeform model text.
|
||
|
||
---
|
||
|
||
# 5. design principles
|
||
|
||
## 5.1 artifacts are immutable
|
||
|
||
Artifacts MUST NEVER be mutated after creation.
|
||
|
||
Corrections MUST produce:
|
||
|
||
* new artifacts
|
||
* superseding relationships
|
||
* compensating events
|
||
|
||
---
|
||
|
||
## 5.2 artifacts are structured
|
||
|
||
Artifacts MUST conform to explicit schemas.
|
||
|
||
Freeform orchestration state is forbidden.
|
||
|
||
---
|
||
|
||
## 5.3 artifacts are replayable
|
||
|
||
Artifacts MUST remain:
|
||
|
||
* serializable
|
||
* deterministic
|
||
* reconstructable
|
||
* versioned
|
||
|
||
Replay MUST reproduce identical artifact history.
|
||
|
||
---
|
||
|
||
## 5.4 artifacts are proposals
|
||
|
||
Artifacts represent proposed semantic state.
|
||
|
||
Artifacts gain workflow authority only after:
|
||
|
||
* validation
|
||
* approvals
|
||
* transition acceptance
|
||
|
||
---
|
||
|
||
# 6. artifact model
|
||
|
||
## base artifact contract
|
||
|
||
```kotlin id="zskldn"
|
||
sealed interface Artifact {
|
||
val id: ArtifactId
|
||
val sessionId: SessionId
|
||
val stageId: StageId
|
||
val schemaVersion: Int
|
||
val createdAt: Instant
|
||
val lineage: ArtifactLineage
|
||
val metadata: ArtifactMetadata
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# 7. artifact identity semantics
|
||
|
||
Artifact identifiers MUST be:
|
||
|
||
* globally unique
|
||
* immutable
|
||
* replay-stable
|
||
|
||
Artifact identity MUST NOT depend on:
|
||
|
||
* provider internals
|
||
* runtime memory
|
||
* mutable projections
|
||
|
||
---
|
||
|
||
# 8. artifact lifecycle model
|
||
|
||
Mandatory lifecycle phases:
|
||
|
||
```text id="oztzsu"
|
||
CREATED
|
||
VALIDATING
|
||
VALIDATED
|
||
REJECTED
|
||
SUPERSEDED
|
||
ARCHIVED
|
||
```
|
||
|
||
Lifecycle changes MUST emit events.
|
||
|
||
---
|
||
|
||
# 9. schema model
|
||
|
||
Artifacts MUST conform to explicit schemas.
|
||
|
||
Schemas MAY be:
|
||
|
||
* built-in
|
||
* config-defined
|
||
* plugin-defined
|
||
|
||
Recommended schema model:
|
||
|
||
* kotlinx.serialization
|
||
* pydantic-compatible external definitions
|
||
* explicit versioning
|
||
|
||
---
|
||
|
||
## schema guarantees
|
||
|
||
Schemas MUST support:
|
||
|
||
* deterministic validation
|
||
* version compatibility
|
||
* explicit field typing
|
||
* replay-safe deserialization
|
||
|
||
---
|
||
|
||
# 10. artifact lineage model
|
||
|
||
All artifacts MUST support lineage tracking.
|
||
|
||
Lineage MUST include:
|
||
|
||
* parent artifacts
|
||
* originating events
|
||
* originating stage
|
||
* tool receipts
|
||
* validation history
|
||
* approval history
|
||
|
||
---
|
||
|
||
## lineage guarantees
|
||
|
||
Lineage MUST remain:
|
||
|
||
* immutable
|
||
* replayable
|
||
* traceable
|
||
|
||
---
|
||
|
||
# 11. provenance model
|
||
|
||
Artifacts MUST record provenance metadata for:
|
||
|
||
* originating model
|
||
* provider
|
||
* stage runtime
|
||
* generation config
|
||
* tool interactions
|
||
* context pack references
|
||
|
||
This metadata exists for:
|
||
|
||
* replay
|
||
* diagnostics
|
||
* auditability
|
||
* evaluation
|
||
|
||
---
|
||
|
||
# 12. artifact relationships
|
||
|
||
Supported relationships:
|
||
|
||
```text id="1wz8ny"
|
||
PARENT
|
||
CHILD
|
||
SUPERSEDES
|
||
DERIVED_FROM
|
||
VALIDATED_BY
|
||
APPROVED_BY
|
||
GENERATED_FROM
|
||
```
|
||
|
||
Relationships MUST remain append-only.
|
||
|
||
---
|
||
|
||
# 13. serialization requirements
|
||
|
||
Artifacts MUST support:
|
||
|
||
* deterministic serialization
|
||
* schema versioning
|
||
* replay-safe decoding
|
||
* portable encoding
|
||
|
||
Recommended:
|
||
|
||
* kotlinx.serialization
|
||
|
||
Forbidden:
|
||
|
||
* provider-specific formats
|
||
* reflection-dependent serialization
|
||
* mutable serialization contracts
|
||
|
||
---
|
||
|
||
# 14. validation boundaries
|
||
|
||
`:core:artifacts` defines structure only.
|
||
|
||
Validation responsibilities belong to:
|
||
|
||
* `:core:validation`
|
||
* `:core:approvals`
|
||
* `:core:policies`
|
||
|
||
Artifacts themselves MUST remain validation-agnostic.
|
||
|
||
---
|
||
|
||
# 15. artifact categories
|
||
|
||
Recommended top-level categories:
|
||
|
||
```text id="k93gb0"
|
||
ReasoningArtifact
|
||
PatchArtifact
|
||
PlanArtifact
|
||
SummaryArtifact
|
||
CommandArtifact
|
||
AnalysisArtifact
|
||
ToolResultArtifact
|
||
ContextArtifact
|
||
ApprovalArtifact
|
||
RecoveryArtifact
|
||
```
|
||
|
||
Additional categories MAY be plugin-defined.
|
||
|
||
---
|
||
|
||
# 16. artifact storage expectations
|
||
|
||
Artifacts MUST remain:
|
||
|
||
* append-only
|
||
* immutable
|
||
* replay-safe
|
||
|
||
Storage implementations belong to infrastructure modules.
|
||
|
||
---
|
||
|
||
# 17. replay guarantees
|
||
|
||
Replay MUST reconstruct:
|
||
|
||
* artifact history
|
||
* artifact lineage
|
||
* artifact relationships
|
||
* supersession chains
|
||
* validation history
|
||
|
||
Replay MUST NOT require:
|
||
|
||
* original models
|
||
* provider access
|
||
* live tool execution
|
||
|
||
---
|
||
|
||
# 18. supersession semantics
|
||
|
||
Corrections MUST occur through:
|
||
|
||
* replacement artifacts
|
||
* supersession relationships
|
||
|
||
Historical artifacts MUST remain preserved.
|
||
|
||
Example:
|
||
|
||
```text id="vgzfh7"
|
||
Artifact B
|
||
SUPERSEDES
|
||
Artifact A
|
||
```
|
||
|
||
Mutation-in-place is forbidden.
|
||
|
||
---
|
||
|
||
# 19. observability requirements
|
||
|
||
`:core:artifacts` MUST expose metadata hooks for:
|
||
|
||
* lineage tracing
|
||
* artifact provenance
|
||
* supersession chains
|
||
* validation outcomes
|
||
* approval history
|
||
* schema evolution
|
||
* replay diagnostics
|
||
|
||
---
|
||
|
||
# 20. security boundaries
|
||
|
||
Artifacts are considered:
|
||
|
||
* untrusted semantic proposals
|
||
|
||
Artifacts MUST NOT gain execution authority directly.
|
||
|
||
Execution authority requires:
|
||
|
||
* validation
|
||
* policy approval
|
||
* orchestration approval
|
||
|
||
Sensitive payload handling MUST support:
|
||
|
||
* redaction
|
||
* isolation
|
||
* audit-safe serialization
|
||
|
||
---
|
||
|
||
# 21. extension model
|
||
|
||
Extensions MAY define:
|
||
|
||
* custom schemas
|
||
* custom artifact categories
|
||
* custom metadata
|
||
* custom lineage relationships
|
||
|
||
Extensions MUST NOT:
|
||
|
||
* mutate historical artifacts
|
||
* bypass validation
|
||
* bypass replay guarantees
|
||
* introduce hidden mutable state
|
||
|
||
---
|
||
|
||
# 22. forbidden patterns
|
||
|
||
Forbidden:
|
||
|
||
* mutable artifacts
|
||
* freeform orchestration state
|
||
* schema-less execution artifacts
|
||
* artifact-owned workflow state
|
||
* hidden lineage mutation
|
||
* in-place correction
|
||
* replay-dependent artifact interpretation
|
||
|
||
---
|
||
|
||
# 23. persistence expectations
|
||
|
||
Persistence implementations MUST support:
|
||
|
||
* immutable storage
|
||
* lineage reconstruction
|
||
* version-safe retrieval
|
||
* replay-safe deserialization
|
||
|
||
Persistence belongs to infrastructure modules.
|
||
|
||
---
|
||
|
||
# 24. testing requirements
|
||
|
||
`:core:artifacts` MUST support deterministic testing for:
|
||
|
||
* schema validation
|
||
* serialization consistency
|
||
* lineage reconstruction
|
||
* supersession handling
|
||
* replay reconstruction
|
||
* version compatibility
|
||
|
||
---
|
||
|
||
# 25. philosophy summary
|
||
|
||
`:core:artifacts` exists to transform probabilistic model outputs into structured replayable workflow objects.
|
||
|
||
Reliability emerges from:
|
||
|
||
* immutable schemas
|
||
* explicit lineage
|
||
* deterministic serialization
|
||
* append-only history
|
||
* validation boundaries
|
||
|
||
not from trusting raw model text directly.
|