/** * Reading a sealed artifact as the lifecycle evidence it holds. * * The other half of #601's boundary. `readXmdArtifact()` decides whether a file * is an artifact at all — recognition, manifest, inventory and every semantic * gate — and returns a detached, deep-frozen value or says why it will not. * This turns that value into the provider-neutral snapshot and history a * retained run already answers with, and knows nothing about containers. * * ## No live ownership, at all * * Nothing here consults the provider's run root, opens a run database, takes a * lock, recovers a copy, attaches a Workspace, reads a definition or asks any * external provider. An artifact is evidence, and inspecting evidence is * reading: the path the caller supplied is opened once, verified completely, * and closed before a single value is projected. * * ## The same history, from a different source * * A run's history and an artifact's history are the same projection over the * same ordered rows — authored source, cumulative forkability, inherited * provenance — so both go through `projectHistory()`. What differs is only * where the rows come from: a live journal table on one side, verified journal * records on the other. Writing the mapping twice is how the two would quietly * start meaning different things. */ import type { Operation, Result } from "effection"; import type { WorkflowArtifactHistory, WorkflowArtifactSnapshot } from "../lifecycle/artifact.js"; /** One artifact's lifecycle snapshot, or why this file is not one. */ export declare function inspectArtifact(path: string): Operation>; /** Every event one artifact retains, in append order, or why this file is not one. */ export declare function historyArtifact(path: string): Operation>;