/** * How an executor relates to an artifact it writes. * * `primary` — the executor that authoritatively creates it. * `refresh` — an executor that rewrites it later in the pipeline * (staleness-driven). * `side_channel` — a host-facing file written to disk but deliberately OUTSIDE * `ARTIFACT_DEFINITIONS` and the staleness DAG; `note` states * why. Never silently omitted — an unrepresented write is the * drift this declaration exists to stop. */ export type ArtifactProductionRole = "primary" | "refresh" | "side_channel"; /** One (executor → artifact) production edge. */ export interface ArtifactProduction { /** Artifact fileName exactly as `ARTIFACT_DEFINITIONS` names it. */ artifact: string; role: ArtifactProductionRole; /** Qualifier carried into the generated producer table (mechanism, not prose). */ note?: string; } export interface ExecutorDefinition { id: string; kind: "deterministic" | "host_delegation"; obligation_ids: string[]; /** * The STATIC set of artifacts this executor can write — the single home of the * executor→artifact producer relation, rendered by * `scripts/shared/generate-executor-producers.mjs` into * `spec/audit/executor-producers.generated.md`. * * Distinct from `ExecutorRunResult.artifacts_written`, which is what one * INVOCATION happened to write (a subset — the acquisition executor declares * its results artifact only when a tool actually contributed). This is the * superset the code may produce; the two are pinned against each other by * `tests/audit/executor-artifact-production-declaration.test.ts`. * * Ordered by artifact fileName, then role (content-derived stable key, as * `LIFECYCLE_PRODUCTIONS` and `EXECUTOR_WRITE_SITES` are) — pinned by DECL-9. */ produces: readonly ArtifactProduction[]; } /** An artifact written outside every executor, by the run lifecycle itself. */ export interface LifecycleProduction { /** Artifact fileName, or a lifecycle file outside `ARTIFACT_DEFINITIONS`. */ artifact: string; /** The code that performs the write. */ writer: string; /** Why it is not an executor's output. */ reason: string; } /** * Artifacts no executor produces. `advanceAudit` writes the supervisor pair on * every fold, the environment probe writes the tooling manifest, and workers * append their own reflections — so these carry an explicit declaration rather * than an empty producer cell in the rendered table. * * Ordered by artifact fileName (content-derived stable key). */ export declare const LIFECYCLE_PRODUCTIONS: readonly LifecycleProduction[]; /** * Returns true when the executor identified by `id` is a host-delegation point * (i.e. it pauses the deterministic pipeline and asks the active LLM agent to * perform work) rather than a deterministic executor. */ export declare function isHostDelegationExecutor(id: string): boolean; export declare const EXECUTOR_REGISTRY: ExecutorDefinition[]; /** Executor owning each obligation id — O(1) replacement for scanning the registry. */ export declare const EXECUTOR_BY_OBLIGATION: ReadonlyMap; //# sourceMappingURL=executors.d.ts.map