Haft uses an ontology of specialized artifact kinds to manage the lifecycle of engineering work, from specification to execution and verification. These artifacts are organized into a Directed Acyclic Graph (DAG) that links requirements (Specs) to problems (ProblemCards), choices (DecisionRecords), execution (WorkCommissions), and proof (EvidencePacks).
Core Artifact Kinds
| Kind | Purpose | Lifecycle |
|---|
| ProjectSpecificationSet | Governing parseable spec set, term map, and workflow policy | Draft → Active → Stale → Superseded/Deprecated |
| SpecSection | Stable-id unit inside a specification | Draft → Active → Stale → Superseded/Deprecated |
| SpecCoverageEdge | Link from spec sections to reasoning artifacts, code, or evidence | Active → Stale/Superseded |
| ProblemCard | Frames what is broken: signal, constraints, and acceptance | Backlog → In Progress → Addressed |
| SolutionPortfolio | Contains multiple variants for comparison | Active → Superseded/Deprecated |
| DecisionRecord | Records rationale, invariants, claims, and rollback plans | Pending → Shipped → Active → Stale → Superseded/Deprecated |
| EvidencePack | Measurement data with a verdict and validity period | Active → Superseded |
| Note | Micro-decision with rationale | Active → (auto-expires 90 days) → Deprecated |
| RefreshReport | Immutable log of lifecycle actions (e.g., waive, reopen) | Active |
Execution Records (vNext Model)
These records represent the integration between Haft and Open-Sleigh for executing decisions.
| Record | Purpose | Lifecycle |
|---|
| ImplementationPlan | DAG of WorkCommissions with dependencies and evidence requirements | Draft → Approved → Running → Partially Blocked → Completed/Cancelled |
| WorkCommission | Bounded authorization to execute a DecisionRecord in a specific scope | Draft → Queued → Ready → Preflighting → Running → Completed/CompletedWithProjectionDebt/Failed/Blocked/Cancelled/Expired |
| RuntimeRun | A single execution attempt against a WorkCommission | Claimed → Running → Passed/Failed/Cancelled/Stalled |
| ExternalProjection | Idempotent external tracker for observers | Desired → Drafted → Published → Synced/Drifted/Blocked/ProjectionDebt |
| AutonomyEnvelope | Human-defined permission bounds for batch/YOLO execution | Draft → Approved → Active → Exhausted/Revoked/Expired |