@agentskit/harness 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -0
- package/CODE_OF_CONDUCT.md +5 -0
- package/CONTRIBUTING.md +26 -0
- package/LICENSE +21 -0
- package/README.md +473 -0
- package/SECURITY.md +11 -0
- package/dist/cli.js +1308 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +968 -0
- package/dist/index.js +1828 -0
- package/dist/index.js.map +1 -0
- package/docs/ADR-0001-extensible-kernel.md +41 -0
- package/docs/ADR-0002-profiles-and-context.md +22 -0
- package/docs/ADR-0003-doc-bridge-context-binding.md +36 -0
- package/docs/ADR-0004-run-metrics.md +29 -0
- package/docs/ADR-0005-benchmark-manifest.md +27 -0
- package/docs/ADR-0006-agent-session-protocol.md +36 -0
- package/docs/ADR-0007-policy-gate.md +33 -0
- package/docs/ADR-0008-runtime-executor.md +33 -0
- package/docs/ADR-0009-process-runtime-boundary.md +34 -0
- package/docs/ADR-0010-docker-sandbox-runtime.md +32 -0
- package/docs/ADR-0011-runtime-attestation.md +30 -0
- package/docs/ADR-0012-controlled-baseline-observations.md +27 -0
- package/docs/ADR-0013-honest-benchmark-comparability.md +27 -0
- package/docs/ADR-0014-criterion-level-benchmark-evidence.md +24 -0
- package/docs/ADR-0015-directional-benchmark-outcomes.md +23 -0
- package/docs/ADR-0016-baseline-evidence-digests.md +21 -0
- package/docs/ADR-0017-event-log-integrity.md +25 -0
- package/docs/ADR-0018-verification-projection-attestation.md +23 -0
- package/docs/ADR-0019-human-decision-attestation.md +27 -0
- package/docs/ADR-0020-terminal-reconciliation.md +26 -0
- package/docs/ADR-0021-event-lock-recovery.md +25 -0
- package/docs/ADR-0022-signed-evidence-bundle.md +27 -0
- package/docs/ADR-0023-safe-action-recovery.md +30 -0
- package/docs/ADR-0024-controlled-completion-metrics.md +27 -0
- package/docs/ADR-0025-ci-dogfood.md +22 -0
- package/docs/ADR-0026-ci-evidence-artifact.md +22 -0
- package/docs/ADR-0027-portable-evidence.md +19 -0
- package/docs/ADR-0028-effective-metrics.md +20 -0
- package/docs/ADR-0029-honest-ci-preparation.md +20 -0
- package/docs/ADR-0030-agentskit-os-benchmark-bridge.md +20 -0
- package/docs/ADR-0031-real-provider-baseline.md +18 -0
- package/docs/ADR-0032-harness-equivalent-benchmark.md +25 -0
- package/docs/ADR-0033-portable-agent-gate.md +25 -0
- package/docs/ADR-0034-measurement-quality-gates.md +25 -0
- package/docs/ADR-0035-reproducible-benchmark-samples.md +20 -0
- package/docs/ADR-0036-comparable-baseline-samples.md +20 -0
- package/docs/ADR-0037-replicated-baseline-collection.md +27 -0
- package/docs/ADR-0038-end-to-end-benchmark-boundary.md +28 -0
- package/docs/ADR-0039-artifact-and-protocol-metrics.md +39 -0
- package/docs/ADR-0040-benchmark-corpus-surfaces.md +32 -0
- package/package.json +68 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/errors.ts","../src/profiles.ts","../src/hash.ts","../src/files.ts","../src/types.ts","../src/config.ts","../src/state-machine.ts","../src/events.ts","../src/plugins.ts","../src/context.ts","../src/runs.ts","../src/evidence.ts","../src/source.ts","../src/verification.ts","../src/adapters/doc-bridge.ts","../src/metrics.ts","../src/bundle.ts","../src/cli.ts"],"names":["index","resolve","isRecord","record","id","benchmark","dirname","join","existsSync","readFileSync","body","events","mkdirSync","sourceHash","saveRun","transition","relative","now","writeFileSync","digest","rate","readdirSync","sha256","surface","artifactAcceptanceRate","reviewMinutes","item","observation","rmSync","requireRun","sep","createHash"],"mappings":"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","file":"cli.js","sourcesContent":["import type { RunState } from './types.js'\n\nexport const STATES = [\n 'CLARIFYING', 'PLANNED', 'IMPLEMENTING', 'VERIFYING',\n 'AWAITING_HUMAN_APPROVAL', 'AWAITING_AUTHORIZATION', 'COMPLETE',\n 'BLOCKED', 'STALE', 'CANCELLED', 'SUPERSEDED',\n] as const satisfies readonly RunState[]\n\nexport const LEGAL_TRANSITIONS = {\n CLARIFYING: ['PLANNED', 'BLOCKED', 'CANCELLED'],\n PLANNED: ['IMPLEMENTING', 'CLARIFYING', 'STALE', 'CANCELLED'],\n IMPLEMENTING: ['VERIFYING', 'CLARIFYING', 'STALE', 'CANCELLED'],\n VERIFYING: ['AWAITING_HUMAN_APPROVAL', 'BLOCKED', 'STALE', 'CANCELLED'],\n AWAITING_HUMAN_APPROVAL: ['AWAITING_AUTHORIZATION', 'COMPLETE', 'BLOCKED', 'IMPLEMENTING', 'STALE', 'CANCELLED'],\n AWAITING_AUTHORIZATION: ['COMPLETE', 'BLOCKED', 'IMPLEMENTING', 'STALE', 'CANCELLED'],\n COMPLETE: ['STALE', 'SUPERSEDED'],\n BLOCKED: ['SUPERSEDED'],\n STALE: ['SUPERSEDED', 'PLANNED'],\n CANCELLED: ['SUPERSEDED'],\n SUPERSEDED: [],\n} as const satisfies Readonly<Record<RunState, readonly RunState[]>>\n\nexport const REAL_CATEGORIES: ReadonlySet<string> = new Set(['endpoint', 'database', 'cli', 'mcp', 'ui'])\nexport const DECISIONS: ReadonlySet<string> = new Set(['approved', 'approve', 'yes', 'ok', 'rejected', 'reject', 'no'])\n","export type HarnessErrorCode = 'HARNESS_ERROR' | 'INVALID_CONFIG' | 'INVALID_INPUT' | 'INVALID_STATE' | 'POLICY_BLOCKED' | 'CLARIFYING' | 'STALE' | 'WORKTREE_DIRTY' | 'ACTIVE_RUN' | 'NO_RUN' | 'HUMAN_APPROVAL_REQUIRED'\n\nexport class HarnessError extends Error {\n public readonly code: HarnessErrorCode\n\n public constructor(message: string, code: HarnessErrorCode = 'HARNESS_ERROR') {\n super(message)\n this.name = 'HarnessError'\n this.code = code\n }\n}\n\nexport const fail = (message: string, code: HarnessErrorCode = 'HARNESS_ERROR'): never => {\n throw new HarnessError(message, code)\n}\n","import { fail } from './errors.js'\n\ntype RawRecord = Record<string, unknown>\n\nconst isRecord = (value: unknown): value is RawRecord => typeof value === 'object' && value !== null && !Array.isArray(value)\nconst record = (value: unknown, label: string): RawRecord => {\n if (!isRecord(value)) fail(`${label} must be an object.`, 'INVALID_CONFIG')\n return value as RawRecord\n}\nconst id = (value: unknown, label: string): string => {\n if (typeof value !== 'string' || !value.trim()) fail(`${label} must be a non-empty string.`, 'INVALID_CONFIG')\n return value as string\n}\nconst parents = (value: unknown, label: string): string[] => value === undefined ? [] : Array.isArray(value) ? value.map((item, index) => id(item, `${label}[${index}]`)) : [id(value, label)]\n\nconst merge = (base: RawRecord, overlay: RawRecord): RawRecord => {\n const result: RawRecord = { ...base }\n for (const key of ['surfaces', 'budget', 'cleanup'] as const) {\n if (overlay[key] !== undefined) result[key] = { ...(isRecord(result[key]) ? result[key] : {}), ...record(overlay[key], `profile.${key}`) }\n }\n if (overlay['checkOverrides'] !== undefined) {\n if (!Array.isArray(overlay['checkOverrides'])) fail('profile.checkOverrides must be an array.', 'INVALID_CONFIG')\n const checks = Array.isArray(result['checks']) ? [...result['checks']] : []\n for (const [index, value] of (overlay['checkOverrides'] as unknown[]).entries()) {\n const override = record(value, `profile.checkOverrides[${index}]`)\n const checkId = id(override['id'], `profile.checkOverrides[${index}].id`)\n const checkIndex = checks.findIndex((check) => isRecord(check) && check['id'] === checkId)\n if (checkIndex < 0) fail(`profile.checkOverrides references unknown check: ${checkId}.`, 'INVALID_CONFIG')\n checks[checkIndex] = { ...(checks[checkIndex] as RawRecord), ...override }\n }\n result['checks'] = checks\n }\n return result\n}\n\nexport const resolveProfile = (root: RawRecord): RawRecord => {\n if (root['profiles'] === undefined) return root\n const profileMap = record(root['profiles'], 'profiles')\n const selected = id(root['profile'], 'profile')\n const visiting = new Set<string>()\n const visited = new Map<string, RawRecord>()\n const resolve = (name: string): RawRecord => {\n const cached = visited.get(name)\n if (cached) return cached\n if (visiting.has(name)) fail(`Profile inheritance cycle includes ${name}.`, 'INVALID_CONFIG')\n const definition = record(profileMap[name], `profiles.${name}`)\n visiting.add(name)\n let result: RawRecord = { ...root }\n for (const parent of parents(definition['extends'], `profiles.${name}.extends`)) result = merge(result, resolve(parent))\n result = merge(result, definition)\n visiting.delete(name); visited.set(name, result)\n return result\n }\n return resolve(selected)\n}\n","import { createHash } from 'node:crypto'\n\nexport const sha256 = (value: string | NodeJS.ArrayBufferView): string => createHash('sha256').update(value).digest('hex')\nexport const hashJson = (value: unknown): string => sha256(JSON.stringify(value))\n","import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs'\nimport { dirname, join, relative, resolve, sep } from 'node:path'\nimport { fail } from './errors.js'\nimport type { LoadedConfig, VerificationRun } from './types.js'\n\nexport const readJson = (path: string): unknown => JSON.parse(readFileSync(path, 'utf8')) as unknown\nexport const writeJson = (path: string, value: unknown): void => {\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, `${JSON.stringify(value, null, 2)}\\n`, 'utf8')\n}\n\nexport const pathInside = (root: string, candidate: string): boolean => {\n const rel = relative(resolve(root), resolve(candidate))\n return rel === '' || (!rel.startsWith(`..${sep}`) && rel !== '..' && !rel.startsWith(sep))\n}\n\nexport const latestPath = (stateDir: string): string => join(stateDir, 'latest.json')\nexport const runPath = (stateDir: string, runId: string): string => join(stateDir, 'runs', runId, 'run.json')\nexport const saveRun = (stateDir: string, run: VerificationRun): void => writeJson(runPath(stateDir, run.runId), run)\nexport const readRun = (stateDir: string, runId: string): VerificationRun => readJson(runPath(stateDir, runId)) as VerificationRun\n\nexport const loadLatestRun = (stateDir: string): VerificationRun | null => {\n if (!existsSync(latestPath(stateDir))) return null\n const pointer = readJson(latestPath(stateDir)) as { readonly runId: string }\n return readRun(stateDir, pointer.runId)\n}\n\nexport const setLatest = (stateDir: string, run: VerificationRun): void => writeJson(latestPath(stateDir), {\n runId: run.runId,\n path: relative(resolve(stateDir, '..', '..'), runPath(stateDir, run.runId)),\n updatedAt: new Date().toISOString(),\n})\n\nexport const cleanConfiguredArtifacts = (loaded: LoadedConfig): { readonly cleaned: readonly string[] } => {\n const roots = loaded.config.cleanup?.roots ?? []\n for (const root of roots) {\n const target = resolve(loaded.root, root)\n if (!pathInside(loaded.root, target)) fail(`Cleanup root escapes project root: ${root}`, 'INVALID_CONFIG')\n if (existsSync(target)) for (const entry of readdirSync(target)) rmSync(join(target, entry), { recursive: true, force: true })\n }\n return { cleaned: roots }\n}\n\nexport const fileContents = (path: string): string => readFileSync(path, 'utf8')\n","import type { ContextSnapshot } from './context.js'\n\nexport const SURFACE_NAMES = ['logic', 'endpoint', 'database', 'cli', 'mcp', 'ui', 'docs'] as const\nexport type SurfaceName = typeof SURFACE_NAMES[number]\n\nexport const CHECK_CATEGORIES = ['build', 'test', 'lint', ...SURFACE_NAMES, 'custom'] as const\nexport type CheckCategory = typeof CHECK_CATEGORIES[number]\n\nexport const RUN_STATES = [\n 'CLARIFYING', 'PLANNED', 'IMPLEMENTING', 'VERIFYING',\n 'AWAITING_HUMAN_APPROVAL', 'AWAITING_AUTHORIZATION', 'COMPLETE',\n 'BLOCKED', 'STALE', 'CANCELLED', 'SUPERSEDED',\n] as const\nexport type RunState = typeof RUN_STATES[number]\n\nexport interface SurfaceRequirement {\n readonly required: boolean\n readonly reason?: string\n}\n\nexport interface ContractScope {\n readonly inScope: readonly string[]\n readonly outOfScope: readonly string[]\n}\n\nexport interface ContractOutcome {\n readonly id: string\n readonly statement: string\n readonly checks: readonly string[]\n}\n\nexport interface TaskContract {\n readonly intent: string\n readonly scope: ContractScope\n readonly ambiguities: readonly string[]\n readonly outcomes: readonly ContractOutcome[]\n}\n\nexport interface VerificationCheck {\n readonly id: string\n readonly category: CheckCategory\n readonly command: string\n readonly required: boolean\n readonly timeoutMs: number\n readonly execution?: 'real'\n readonly capabilities?: readonly string[]\n readonly evidence: 'structured'\n}\n\nexport interface TrackingConfig {\n readonly required: boolean\n readonly target?: string\n readonly reason?: string\n}\n\nexport interface BenchmarkBinding {\n readonly suiteId: string\n readonly taskId: string\n readonly mode: 'harness'\n}\n\nexport interface VerificationConfig {\n readonly schemaVersion: 1\n readonly project: string\n readonly root?: string\n readonly stateDir?: string\n readonly profile: string\n readonly contract: TaskContract\n readonly surfaces: Readonly<Record<SurfaceName, SurfaceRequirement>>\n readonly checks: readonly VerificationCheck[]\n readonly tracking: TrackingConfig\n readonly budget?: { readonly maxDurationMs?: number }\n readonly cleanup?: { readonly roots?: readonly string[] }\n readonly benchmark?: BenchmarkBinding\n}\n\nexport interface LoadedConfig {\n readonly absolute: string\n readonly root: string\n readonly stateDir: string\n readonly config: VerificationConfig\n readonly configHash: string\n}\n\nexport interface SourceSnapshot {\n readonly revision: string\n readonly status: string\n readonly statusHash: string\n}\n\nexport interface EvidenceArtifact {\n readonly type?: string\n readonly path: string\n readonly sha256: string\n readonly viewport?: { readonly width: number; readonly height: number } | string\n}\n\nexport interface StructuredEvidence {\n readonly status: string\n readonly criteria: readonly string[]\n readonly capability?: string\n readonly artifacts?: readonly EvidenceArtifact[]\n readonly [key: string]: unknown\n}\n\nexport interface CheckResult {\n readonly id: string\n readonly category: CheckCategory\n readonly status: 'pending' | 'passed' | 'failed'\n readonly exitCode?: number\n readonly durationMs?: number\n readonly evidence?: StructuredEvidence\n readonly failures?: readonly string[]\n}\n\nexport interface RunOutcome extends ContractOutcome {\n readonly status: 'pending' | 'passed' | 'failed'\n}\n\nexport interface EvidenceReference {\n readonly checkId: string\n readonly stdout: string\n readonly stderr: string\n}\n\nexport interface VerificationRun {\n readonly type: 'agentskit-harness-run'\n readonly schemaVersion: 1\n readonly runId: string\n readonly project: string\n readonly state: RunState\n readonly configHash: string\n readonly contractHash: string\n readonly sourceRevision: string\n readonly sourceStatusHash: string\n readonly baseline: SourceSnapshot\n /** A human-approved plan, retained for backwards compatibility with v1 runs. */\n readonly contractApproval?: { readonly actor: 'human'; readonly at: string; readonly contractHash: string }\n /** An automated preparation is never an approval and cannot complete a run. */\n readonly contractPreparation?: { readonly actor: 'ci'; readonly at: string; readonly contractHash: string }\n readonly checks: readonly CheckResult[]\n readonly outcomes: readonly RunOutcome[]\n readonly transitions: readonly StateTransition[]\n readonly evidenceReferences: readonly EvidenceReference[]\n readonly contextSnapshots: readonly ContextSnapshot[]\n readonly contextHash?: string\n readonly verificationDigest?: string\n readonly benchmark?: BenchmarkBinding\n readonly supersedes?: string\n readonly dirtyBaselineAuthorized?: boolean\n readonly metrics?: { readonly totalDurationMs: number; readonly budgetExceeded: boolean }\n readonly humanApproval?: { readonly actor: 'human'; readonly at: string; readonly sourceRevision: string; readonly contractHash: string; readonly verificationDigest?: string }\n readonly authorization?: { readonly actor: 'human'; readonly at: string; readonly target: string; readonly sourceRevision: string; readonly contractHash: string; readonly verificationDigest?: string }\n}\n\nexport interface RunReconciliation {\n readonly status: 'verified'\n readonly runId: string\n readonly state: RunState\n readonly eventCount: number\n readonly headHash?: string\n readonly verificationDigest?: string\n}\n\nexport interface StateTransition {\n readonly from: RunState | null\n readonly to: RunState\n readonly at: string\n readonly actor?: string\n readonly reason?: string\n}\n","import { dirname, resolve } from 'node:path'\nimport { REAL_CATEGORIES } from './constants.js'\nimport { resolveProfile } from './profiles.js'\nimport { fail } from './errors.js'\nimport { hashJson } from './hash.js'\nimport { pathInside, readJson } from './files.js'\nimport type { CheckCategory, ContractOutcome, LoadedConfig, SurfaceName, SurfaceRequirement, TaskContract, TrackingConfig, VerificationCheck, VerificationConfig } from './types.js'\nimport { CHECK_CATEGORIES, SURFACE_NAMES } from './types.js'\n\ninterface RawRecord { readonly [key: string]: unknown }\ninterface RawScope extends RawRecord { readonly inScope?: unknown; readonly outOfScope?: unknown }\ninterface RawContract extends RawRecord { readonly intent?: unknown; readonly scope?: unknown; readonly ambiguities?: unknown; readonly outcomes?: unknown }\ninterface RawCheck extends RawRecord { readonly id?: unknown; readonly category?: unknown; readonly command?: unknown; readonly required?: unknown; readonly timeoutMs?: unknown; readonly execution?: unknown; readonly capabilities?: unknown; readonly evidence?: unknown }\ninterface RawTracking extends RawRecord { readonly required?: unknown; readonly target?: unknown; readonly reason?: unknown }\ninterface RawConfig extends RawRecord { readonly schemaVersion?: unknown; readonly project?: unknown; readonly root?: unknown; readonly stateDir?: unknown; readonly profile?: unknown; readonly profiles?: unknown; readonly contract?: unknown; readonly checks?: unknown; readonly surfaces?: unknown; readonly tracking?: unknown; readonly budget?: unknown; readonly cleanup?: unknown }\ninterface RawBudget extends RawRecord { readonly maxDurationMs?: unknown }\ninterface RawCleanup extends RawRecord { readonly roots?: unknown }\ninterface RawBenchmark extends RawRecord { readonly suiteId?: unknown; readonly taskId?: unknown; readonly mode?: unknown }\n\nconst isRecord = (value: unknown): value is RawRecord => typeof value === 'object' && value !== null && !Array.isArray(value)\nconst stringValue = (value: unknown, label: string): string => {\n if (typeof value !== 'string') return fail(`${label} is required.`, 'INVALID_CONFIG')\n const result = value.trim()\n if (!result) return fail(`${label} is required.`, 'INVALID_CONFIG')\n return result\n}\nconst stringArray = (value: unknown, label: string): string[] => {\n if (!Array.isArray(value)) fail(`${label} must be an array of non-empty strings.`, 'INVALID_CONFIG')\n const items: unknown[] = value as unknown[]\n if (!items.every((item: unknown): item is string => typeof item === 'string' && Boolean(item.trim()))) fail(`${label} must be an array of non-empty strings.`, 'INVALID_CONFIG')\n return items.map((item: unknown) => stringValue(item, label))\n}\nconst asRecord = (value: unknown, label: string): RawRecord => {\n if (!isRecord(value)) fail(`${label} must be an object.`, 'INVALID_CONFIG')\n return value as RawRecord\n}\nconst surface = (value: unknown, name: SurfaceName): SurfaceRequirement => {\n if (typeof value === 'boolean') return value ? { required: true } : { required: false, reason: `${name} is not applicable.` }\n const record = asRecord(value, `surfaces.${name}`)\n if (typeof record['required'] !== 'boolean') fail(`surfaces.${name}.required must be boolean.`, 'INVALID_CONFIG')\n if (!record['required'] && typeof record['reason'] !== 'string') fail(`surfaces.${name}.reason is required when not applicable.`, 'INVALID_CONFIG')\n return { required: record['required'] as boolean, ...(typeof record['reason'] === 'string' ? { reason: record['reason'] } : {}) }\n}\n\nconst parseCheck = (value: unknown, index: number): VerificationCheck => {\n const record = asRecord(value, `checks[${index}]`) as RawCheck\n const id = stringValue(record['id'], `checks[${index}].id`)\n const category = stringValue(record['category'], `checks[${index}].category`)\n if (!(CHECK_CATEGORIES as readonly string[]).includes(category)) fail(`checks[${index}].category is invalid.`, 'INVALID_CONFIG')\n const command = stringValue(record['command'], `checks[${index}].command`)\n if (REAL_CATEGORIES.has(category) && record['execution'] !== 'real') fail(`checks[${index}] must declare execution: real.`, 'INVALID_CONFIG')\n if (record['evidence'] !== 'structured') fail(`checks[${index}] must declare evidence: structured.`, 'INVALID_CONFIG')\n if (record['capabilities'] !== undefined && (!Array.isArray(record['capabilities']) || !record['capabilities'].every((item: unknown) => typeof item === 'string'))) fail(`checks[${index}].capabilities must be strings.`, 'INVALID_CONFIG')\n const capabilities = Array.isArray(record['capabilities']) ? record['capabilities'].filter((item): item is string => typeof item === 'string') : undefined\n if (category === 'ui' && !capabilities?.includes('real-browser')) fail(`checks[${index}] must declare real-browser.`, 'INVALID_CONFIG')\n if (category === 'ui' && !capabilities?.includes('screenshot')) fail(`checks[${index}] must declare screenshot.`, 'INVALID_CONFIG')\n if (record['required'] !== undefined && typeof record['required'] !== 'boolean') fail(`checks[${index}].required must be boolean.`, 'INVALID_CONFIG')\n if (record['timeoutMs'] !== undefined && (!Number.isInteger(record['timeoutMs']) || typeof record['timeoutMs'] !== 'number' || record['timeoutMs'] < 1)) fail(`checks[${index}].timeoutMs must be positive.`, 'INVALID_CONFIG')\n return { id, category: category as CheckCategory, command, required: record['required'] !== false, timeoutMs: typeof record['timeoutMs'] === 'number' ? record['timeoutMs'] : 120_000, ...(record['execution'] === 'real' ? { execution: 'real' } : {}), ...(capabilities ? { capabilities } : {}), evidence: 'structured' }\n}\n\nconst parseOutcome = (value: unknown, index: number, checks: readonly VerificationCheck[]): ContractOutcome => {\n const record = asRecord(value, `contract.outcomes[${index}]`)\n const id = stringValue(record['id'], `contract.outcomes[${index}].id`)\n const statement = stringValue(record['statement'], `contract.outcomes[${index}].statement`)\n const ids = stringArray(record['checks'], `contract.outcomes[${index}].checks`)\n if (ids.some((checkId) => !checks.some((check) => check.id === checkId))) fail(`contract.outcomes[${index}] references an unknown check.`, 'INVALID_CONFIG')\n return { id, statement, checks: [...new Set(ids)] }\n}\n\nexport const validateConfig = (rawValue: unknown): VerificationConfig => {\n const raw = resolveProfile(asRecord(rawValue, 'verification config')) as RawConfig\n if (raw['schemaVersion'] !== 1) fail('verification config schemaVersion must be 1.', 'INVALID_CONFIG')\n const project = stringValue(raw['project'], 'verification config project')\n const contractRaw = asRecord(raw['contract'], 'contract') as RawContract\n const rawChecks = raw['checks']\n const checks = Array.isArray(rawChecks) ? rawChecks.map(parseCheck) : fail('checks must be a non-empty array.', 'INVALID_CONFIG')\n if (!checks.length || new Set(checks.map((check) => check.id)).size !== checks.length) fail('check ids must be unique.', 'INVALID_CONFIG')\n const scopeRaw = asRecord(contractRaw['scope'], 'contract.scope') as RawScope\n const scope = { inScope: stringArray(scopeRaw['inScope'], 'contract.scope.inScope'), outOfScope: stringArray(scopeRaw['outOfScope'], 'contract.scope.outOfScope') }\n const ambiguities = stringArray(contractRaw['ambiguities'], 'contract.ambiguities')\n const rawOutcomes = contractRaw['outcomes']\n const outcomes = Array.isArray(rawOutcomes) ? rawOutcomes.map((outcome, index) => parseOutcome(outcome, index, checks)) : fail('contract.outcomes must be a non-empty array.', 'INVALID_CONFIG')\n if (!outcomes.length || new Set(outcomes.map((outcome) => outcome.id)).size !== outcomes.length) fail('outcome ids must be unique.', 'INVALID_CONFIG')\n const mapped = new Set(outcomes.flatMap((outcome) => outcome.checks))\n if (checks.some((check) => check.required && !mapped.has(check.id))) fail('every required check must map to an outcome.', 'INVALID_CONFIG')\n const rawSurfaces = isRecord(raw['surfaces']) ? raw['surfaces'] : undefined\n const surfaces = Object.fromEntries(SURFACE_NAMES.map((name) => [name, surface(rawSurfaces?.[name] ?? (name === 'logic'), name)])) as Record<SurfaceName, SurfaceRequirement>\n for (const name of SURFACE_NAMES) if (surfaces[name].required && !checks.some((check) => check.required && check.category === name)) fail(`required surface ${name} has no required check.`, 'INVALID_CONFIG')\n const trackingRaw = isRecord(raw['tracking']) ? raw['tracking'] as RawTracking : { required: false, reason: 'tracking is not configured for this run.' }\n if (trackingRaw['required'] === true && typeof trackingRaw['target'] !== 'string') fail('tracking.target is required when tracking is enabled.', 'INVALID_CONFIG')\n if (trackingRaw['required'] !== true && typeof trackingRaw['reason'] !== 'string') fail('tracking.reason is required when tracking is disabled.', 'INVALID_CONFIG')\n const budgetRaw = raw['budget'] === undefined ? undefined : asRecord(raw['budget'], 'budget') as RawBudget\n if (budgetRaw && budgetRaw['maxDurationMs'] !== undefined && (!Number.isInteger(budgetRaw['maxDurationMs']) || typeof budgetRaw['maxDurationMs'] !== 'number' || budgetRaw['maxDurationMs'] < 1)) fail('budget.maxDurationMs must be positive.', 'INVALID_CONFIG')\n const cleanupRaw = raw['cleanup'] === undefined ? undefined : asRecord(raw['cleanup'], 'cleanup') as RawCleanup\n const cleanup = cleanupRaw ? { roots: cleanupRaw['roots'] === undefined ? undefined : stringArray(cleanupRaw['roots'], 'cleanup.roots') } : undefined\n const benchmarkRaw = raw['benchmark'] === undefined ? undefined : asRecord(raw['benchmark'], 'benchmark') as RawBenchmark\n const benchmark = benchmarkRaw ? { suiteId: stringValue(benchmarkRaw['suiteId'], 'benchmark.suiteId'), taskId: stringValue(benchmarkRaw['taskId'], 'benchmark.taskId'), mode: benchmarkRaw['mode'] === 'harness' ? 'harness' as const : fail('benchmark.mode must be harness.', 'INVALID_CONFIG') } : undefined\n const contract: TaskContract = { intent: stringValue(contractRaw['intent'], 'contract.intent'), scope, ambiguities, outcomes }\n const tracking: TrackingConfig = { required: trackingRaw['required'] === true, ...(typeof trackingRaw['target'] === 'string' ? { target: trackingRaw['target'] } : {}), ...(typeof trackingRaw['reason'] === 'string' ? { reason: trackingRaw['reason'] } : {}) }\n return { schemaVersion: 1, project, ...(typeof raw['root'] === 'string' ? { root: raw['root'] } : {}), ...(typeof raw['stateDir'] === 'string' ? { stateDir: raw['stateDir'] } : {}), profile: typeof raw['profile'] === 'string' ? raw['profile'] : 'strict', contract, surfaces, checks, tracking, ...(budgetRaw ? { budget: { maxDurationMs: budgetRaw['maxDurationMs'] as number | undefined } } : {}), ...(cleanup ? { cleanup } : {}), ...(benchmark ? { benchmark } : {}) }\n}\n\nexport const loadConfig = (configPath = '.codex/verification.json'): LoadedConfig => {\n const absolute = resolve(configPath)\n const raw = readJson(absolute)\n const rawRecord = asRecord(raw, 'verification config')\n const root = resolve(dirname(absolute), typeof rawRecord['root'] === 'string' ? rawRecord['root'] : '.')\n const stateDir = resolve(root, typeof rawRecord['stateDir'] === 'string' ? rawRecord['stateDir'] : '.codex/verification')\n if (!pathInside(root, stateDir)) fail('stateDir must be inside the project root.', 'INVALID_CONFIG')\n const config = validateConfig(raw)\n return { absolute, root, stateDir, config, configHash: hashJson(config) }\n}\n","import { DECISIONS, LEGAL_TRANSITIONS, STATES } from './constants.js'\nimport { fail } from './errors.js'\nimport type { RunState, StateTransition, VerificationRun } from './types.js'\n\nexport const transition = (run: Pick<VerificationRun, 'state' | 'transitions'>, to: RunState, reason?: string, actor = 'harness'): Pick<VerificationRun, 'state' | 'transitions'> => {\n if (!STATES.includes(to)) fail(`Unknown state ${to}.`, 'INVALID_STATE')\n if (run.state !== to && !LEGAL_TRANSITIONS[run.state].some((state) => state === to)) fail(`Illegal transition ${run.state} -> ${to}.`, 'INVALID_STATE')\n const event: StateTransition = { from: run.state, to, at: new Date().toISOString(), actor, ...(reason ? { reason } : {}) }\n return { ...run, state: to, transitions: [...run.transitions, event] }\n}\n\nexport const assertHuman = (actor: string): void => {\n if (actor !== 'human') fail('This action requires --by human.', 'HUMAN_APPROVAL_REQUIRED')\n}\n\nexport const approvedDecision = (decision: string): boolean => {\n if (!DECISIONS.has(decision)) fail('Decision must be approved or rejected.', 'INVALID_INPUT')\n return ['approved', 'approve', 'yes', 'ok'].includes(decision)\n}\n","import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeSync } from 'node:fs'\nimport { join } from 'node:path'\nimport { fail } from './errors.js'\nimport { sha256 } from './hash.js'\nimport type { ContextQuery } from './context.js'\nimport type { RunState } from './types.js'\nimport type { DockerRuntimeEvidence } from './runtime.js'\n\nexport const HARNESS_EVENT_SCHEMA_VERSION = 1 as const\nexport const EVENT_LOG_GENESIS = 'GENESIS' as const\nexport const HARNESS_EVENT_TYPES = ['run.created', 'state.transitioned', 'context.attached', 'verification.completed', 'approval.recorded', 'authorization.recorded', 'session.started', 'session.resumed', 'agent.turn.started', 'policy.evaluated', 'tool.approval.requested', 'tool.approval.recorded', 'tool.requested', 'tool.execution.started', 'tool.recovery.recorded', 'tool.blocked', 'tool.completed', 'tool.failed', 'session.ended'] as const\nexport type HarnessEventType = typeof HARNESS_EVENT_TYPES[number]\nconst SESSION_EVENT_TYPES = new Set<HarnessEventType>(['session.started', 'session.resumed', 'agent.turn.started', 'policy.evaluated', 'tool.approval.requested', 'tool.approval.recorded', 'tool.requested', 'tool.execution.started', 'tool.recovery.recorded', 'tool.blocked', 'tool.completed', 'tool.failed', 'session.ended'])\n\nexport interface HarnessEventPayloads {\n readonly 'run.created': { readonly project: string; readonly baselineRevision: string; readonly baselineStatusHash: string }\n readonly 'state.transitioned': { readonly from: RunState | null; readonly to: RunState; readonly actor: string; readonly reason?: string; readonly transitionIndex: number }\n readonly 'context.attached': { readonly providerId: string; readonly sourceHash: string; readonly snapshotHash: string; readonly query: ContextQuery }\n readonly 'verification.completed': { readonly verificationDigest: string; readonly checkCount: number; readonly outcomeCount: number; readonly totalDurationMs: number; readonly budgetExceeded: boolean }\n readonly 'approval.recorded': { readonly decision: 'approved' | 'rejected'; readonly resultingState: RunState; readonly verificationDigest: string; readonly actor: 'human'; readonly sourceRevision: string; readonly contractHash: string }\n readonly 'authorization.recorded': { readonly decision: 'approved' | 'rejected'; readonly resultingState: RunState; readonly verificationDigest: string; readonly actor: 'human'; readonly target: string; readonly sourceRevision: string; readonly contractHash: string }\n readonly 'session.started': { readonly adapterId: string; readonly adapterVersion: string; readonly capabilities: readonly string[] }\n readonly 'session.resumed': { readonly recovery: 'event-log' }\n readonly 'agent.turn.started': { readonly turnId: string; readonly inputHash: string }\n readonly 'policy.evaluated': { readonly actionId: string; readonly turnId: string; readonly toolId: string; readonly decision: 'allow' | 'block' | 'approve'; readonly policyId: string; readonly reason: string }\n readonly 'tool.approval.requested': { readonly turnId: string; readonly actionId: string; readonly toolId: string; readonly argumentsHash: string; readonly policyId: string; readonly reason: string }\n readonly 'tool.approval.recorded': { readonly turnId: string; readonly actionId: string; readonly toolId: string; readonly argumentsHash: string; readonly decision: 'approved' | 'rejected'; readonly actor: 'human'; readonly policyId: string; readonly reason: string }\n readonly 'tool.requested': { readonly turnId: string; readonly actionId: string; readonly toolId: string; readonly argumentsHash: string }\n readonly 'tool.execution.started': { readonly turnId: string; readonly actionId: string; readonly toolId: string; readonly attempt: number }\n readonly 'tool.recovery.recorded': { readonly turnId: string; readonly actionId: string; readonly toolId: string; readonly decision: 'retry' | 'abandon'; readonly actor: 'human'; readonly reason: string }\n readonly 'tool.blocked': { readonly turnId: string; readonly actionId: string; readonly toolId: string; readonly policyId: string; readonly reason: string }\n readonly 'tool.completed': { readonly actionId: string; readonly resultHash: string; readonly durationMs: number; readonly runtimeEvidence?: DockerRuntimeEvidence }\n readonly 'tool.failed': { readonly actionId: string; readonly errorCode: string; readonly retryable: boolean; readonly durationMs: number; readonly runtimeEvidence?: DockerRuntimeEvidence }\n readonly 'session.ended': { readonly status: 'completed' | 'failed' | 'cancelled' }\n}\n\nexport type HarnessEvent<K extends HarnessEventType = HarnessEventType> = K extends HarnessEventType ? {\n readonly schemaVersion: typeof HARNESS_EVENT_SCHEMA_VERSION\n readonly runId: string\n readonly sequence: number\n readonly at: string\n readonly sourceRevision: string\n readonly configHash: string\n readonly previousHash?: string\n readonly eventHash?: string\n readonly sessionId?: string\n readonly type: K\n readonly payload: HarnessEventPayloads[K]\n } : never\n\nexport type HarnessEventInput<K extends HarnessEventType = HarnessEventType> = Omit<HarnessEvent<K>, 'schemaVersion' | 'sequence' | 'at'>\nexport type HarnessEventListener<K extends HarnessEventType> = (event: HarnessEvent<K>) => void\n\nexport interface EventStore {\n append<K extends HarnessEventType>(event: HarnessEventInput<K>): HarnessEvent<K>\n read(runId: string): readonly HarnessEvent[]\n verify(runId: string): EventLogVerification\n}\n\nexport interface EventLogVerification {\n readonly status: 'verified' | 'legacy'\n readonly eventCount: number\n readonly headHash?: string\n}\n\nexport interface EventLogLock {\n readonly pid: number\n readonly at: string\n}\n\nexport interface EventLogLockStatus {\n readonly status: 'locked' | 'unlocked'\n readonly path: string\n readonly lock?: EventLogLock\n}\n\nexport interface EventLogLockRecovery {\n readonly status: 'recovered' | 'unlocked'\n readonly path: string\n readonly lock?: EventLogLock\n}\n\nconst eventPath = (stateDir: string, runId: string): string => join(stateDir, 'runs', runId, 'events.ndjson')\nconst lockPath = (stateDir: string, runId: string): string => `${eventPath(stateDir, runId)}.lock`\nconst parseLock = (value: string): EventLogLock => {\n try {\n const record = JSON.parse(value) as Record<string, unknown>\n if (!Number.isInteger(record['pid']) || (record['pid'] as number) <= 0 || typeof record['at'] !== 'string' || !Number.isFinite(Date.parse(record['at']))) fail('Event log lock metadata is invalid.', 'HARNESS_ERROR')\n return { pid: record['pid'] as number, at: record['at'] as string }\n } catch (error) {\n if (error instanceof SyntaxError) fail('Event log lock metadata is invalid.', 'HARNESS_ERROR')\n throw error\n }\n}\nconst readLock = (stateDir: string, runId: string): EventLogLock | null => {\n const path = lockPath(stateDir, runId)\n return existsSync(path) ? parseLock(readFileSync(path, 'utf8')) : null\n}\nconst isEventType = (value: unknown): value is HarnessEventType => typeof value === 'string' && (HARNESS_EVENT_TYPES as readonly string[]).includes(value)\nconst digest = (value: string): boolean => /^[a-f0-9]{64}$/.test(value)\nconst eventBody = (event: HarnessEvent): Omit<HarnessEvent, 'eventHash'> => {\n const { eventHash: _eventHash, ...body } = event\n return body\n}\nconst eventDigest = (event: HarnessEvent): string => sha256(JSON.stringify(eventBody(event)))\n\nconst parseEvent = (value: unknown, expectedSequence: number): HarnessEvent => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) fail('Event log contains a non-object record.', 'HARNESS_ERROR')\n const record = value as Record<string, unknown>\n if (record['schemaVersion'] !== HARNESS_EVENT_SCHEMA_VERSION || typeof record['runId'] !== 'string' || typeof record['sequence'] !== 'number' || record['sequence'] !== expectedSequence || typeof record['at'] !== 'string' || typeof record['sourceRevision'] !== 'string' || typeof record['configHash'] !== 'string' || !isEventType(record['type']) || typeof record['payload'] !== 'object' || record['payload'] === null || (record['sessionId'] !== undefined && (typeof record['sessionId'] !== 'string' || !record['sessionId'].trim())) || (SESSION_EVENT_TYPES.has(record['type']) && typeof record['sessionId'] !== 'string')) fail('Event log is invalid or out of order.', 'HARNESS_ERROR')\n const hasPreviousHash = record['previousHash'] !== undefined\n const hasEventHash = record['eventHash'] !== undefined\n if (hasPreviousHash !== hasEventHash || (hasPreviousHash && (typeof record['previousHash'] !== 'string' || (record['previousHash'] !== EVENT_LOG_GENESIS && !digest(record['previousHash'] as string)) || typeof record['eventHash'] !== 'string' || !digest(record['eventHash'] as string)))) fail('Event log integrity metadata is invalid.', 'HARNESS_ERROR')\n return record as unknown as HarnessEvent\n}\n\nconst validateChain = (events: readonly HarnessEvent[]): EventLogVerification => {\n const current = events.filter((event) => event.eventHash !== undefined)\n if (!current.length) return { status: 'legacy', eventCount: events.length }\n if (current.length !== events.length) fail('Event log mixes legacy and hashed records.', 'HARNESS_ERROR')\n let previous: string = EVENT_LOG_GENESIS\n for (const event of events) {\n const eventHash = event.eventHash ?? fail('Event log hash chain is invalid.', 'HARNESS_ERROR')\n if (event.previousHash !== previous || eventHash !== eventDigest(event)) fail('Event log hash chain is invalid.', 'HARNESS_ERROR')\n previous = eventHash\n }\n return { status: 'verified', eventCount: events.length, ...(events.length ? { headHash: previous } : {}) }\n}\n\nexport class FileEventStore implements EventStore {\n public constructor(private readonly stateDir: string) {}\n\n public append<K extends HarnessEventType>(event: HarnessEventInput<K>): HarnessEvent<K> {\n if (!event.runId.trim()) fail('Event runId is required.', 'INVALID_INPUT')\n if (!event.sourceRevision.trim() || !event.configHash.trim()) fail('Event sourceRevision and configHash are required.', 'INVALID_INPUT')\n if (!isEventType(event.type)) fail('Event type is invalid.', 'INVALID_INPUT')\n if (SESSION_EVENT_TYPES.has(event.type) && (!event.sessionId || !event.sessionId.trim())) fail('Session events require a sessionId.', 'INVALID_INPUT')\n if (event.sessionId !== undefined && !event.sessionId.trim()) fail('Event sessionId cannot be empty.', 'INVALID_INPUT')\n const path = eventPath(this.stateDir, event.runId)\n const lock = lockPath(this.stateDir, event.runId)\n mkdirSync(join(this.stateDir, 'runs', event.runId), { recursive: true })\n let lockFd: number\n try { lockFd = openSync(lock, 'wx'); writeSync(lockFd, JSON.stringify({ pid: process.pid, at: new Date().toISOString() })) } catch (error) { if ((error as NodeJS.ErrnoException).code === 'EEXIST') fail('Event log is busy; retry the operation.', 'HARNESS_ERROR'); throw error }\n try {\n const events = this.readUnlocked(event.runId)\n const previous = events.at(-1)\n const body = { schemaVersion: HARNESS_EVENT_SCHEMA_VERSION, sequence: events.length + 1, at: new Date().toISOString(), runId: event.runId, sourceRevision: event.sourceRevision, configHash: event.configHash, ...(event.sessionId ? { sessionId: event.sessionId } : {}), ...(previous?.eventHash ? { previousHash: previous.eventHash } : events.length ? {} : { previousHash: EVENT_LOG_GENESIS }), type: event.type, payload: event.payload } as HarnessEvent<K>\n const record = (events.length && !previous?.eventHash ? body : { ...body, eventHash: eventDigest(body) }) as HarnessEvent<K>\n appendFileSync(path, `${JSON.stringify(record)}\\n`, 'utf8')\n return record\n } finally {\n closeSync(lockFd)\n unlinkSync(lock)\n }\n }\n\n private readUnlocked(runId: string): readonly HarnessEvent[] {\n const path = eventPath(this.stateDir, runId)\n if (!existsSync(path)) return []\n const events = readFileSync(path, 'utf8').split(/\\r?\\n/).map((line) => line.trim()).filter(Boolean).map((line, index) => {\n try { return parseEvent(JSON.parse(line) as unknown, index + 1) } catch (error) { if (error instanceof SyntaxError) fail('Event log contains invalid JSON.', 'HARNESS_ERROR'); throw error }\n })\n validateChain(events)\n return events\n }\n\n public read(runId: string): readonly HarnessEvent[] {\n if (existsSync(lockPath(this.stateDir, runId))) fail('Event log is busy; retry the operation.', 'HARNESS_ERROR')\n return this.readUnlocked(runId)\n }\n\n public verify(runId: string): EventLogVerification {\n return validateChain(this.read(runId))\n }\n}\n\nexport const inspectEventLogLock = (stateDir: string, runId: string): EventLogLockStatus => {\n const path = lockPath(stateDir, runId)\n const lock = readLock(stateDir, runId)\n return lock ? { status: 'locked', path, lock } : { status: 'unlocked', path }\n}\n\nexport const recoverEventLogLock = ({ stateDir, runId, actor, maxAgeMs = 300_000 }: { readonly stateDir: string; readonly runId: string; readonly actor: string; readonly maxAgeMs?: number }): EventLogLockRecovery => {\n if (actor !== 'human') fail('Event log lock recovery requires a human actor.', 'HUMAN_APPROVAL_REQUIRED')\n if (!Number.isInteger(maxAgeMs) || maxAgeMs < 0) fail('maxAgeMs must be a non-negative integer.', 'INVALID_INPUT')\n const path = lockPath(stateDir, runId)\n const lock = readLock(stateDir, runId)\n if (!lock) return { status: 'unlocked', path }\n const ageMs = Date.now() - Date.parse(lock.at)\n if (ageMs < maxAgeMs) fail('Event log lock is not old enough to recover.', 'HARNESS_ERROR')\n try { process.kill(lock.pid, 0) } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'ESRCH') fail('Event log lock owner cannot be proven dead.', 'HARNESS_ERROR')\n unlinkSync(path)\n return { status: 'recovered', path, lock }\n }\n return fail('Event log lock owner is still alive.', 'HARNESS_ERROR')\n}\n","import { fail } from './errors.js'\nimport type { HarnessEvent, HarnessEventListener, HarnessEventType } from './events.js'\n\nexport const HARNESS_PLUGIN_API_VERSION = 1 as const\nexport type Disposer = () => void\n\nexport interface PluginSlot<T> { readonly id: string }\nexport const createPluginSlot = <T>(id: string): PluginSlot<T> => {\n if (!id.trim()) fail('Plugin slot id is required.', 'INVALID_INPUT')\n return { id }\n}\n\nexport interface HarnessPluginContext {\n readonly apiVersion: typeof HARNESS_PLUGIN_API_VERSION\n register<T>(slot: PluginSlot<T>, id: string, value: T): Disposer\n effect(disposer: Disposer): void\n on<K extends HarnessEventType>(type: K, listener: HarnessEventListener<K>): Disposer\n}\n\nexport interface HarnessPlugin {\n readonly id: string\n readonly version: string\n readonly apiVersion: typeof HARNESS_PLUGIN_API_VERSION\n readonly requires?: readonly string[]\n readonly apply: (context: HarnessPluginContext) => void | Disposer\n}\n\nexport interface PluginContribution<T> { readonly pluginId: string; readonly id: string; readonly value: T }\n\nexport interface PluginRegistry {\n register(plugin: HarnessPlugin): void\n mount(): void\n emit<K extends HarnessEventType>(event: HarnessEvent<K>): void\n on<K extends HarnessEventType>(type: K, listener: HarnessEventListener<K>): Disposer\n contributions<T>(slot: PluginSlot<T>): readonly PluginContribution<T>[]\n dispose(): void\n}\n\nconst validId = (value: string, label: string): string => {\n if (!value.trim()) fail(`${label} is required.`, 'INVALID_INPUT')\n return value\n}\n\nexport const createPluginRegistry = (): PluginRegistry => {\n const plugins = new Map<string, HarnessPlugin>()\n const contributions = new Map<string, Map<string, PluginContribution<unknown>>>()\n const listeners = new Map<HarnessEventType, Set<HarnessEventListener<HarnessEventType>>>()\n const cleanups: Disposer[] = []\n let mounted = false\n let disposed = false\n\n const ensureOpen = (): void => { if (disposed) fail('Plugin registry has been disposed.', 'HARNESS_ERROR') }\n const removeContribution = (slot: PluginSlot<unknown>, id: string, pluginId: string): void => {\n const entries = contributions.get(slot.id)\n if (entries?.get(id)?.pluginId === pluginId) entries.delete(id)\n }\n const registerContribution = <T>(pluginId: string, slot: PluginSlot<T>, id: string, value: T): Disposer => {\n const entries = contributions.get(slot.id) ?? new Map<string, PluginContribution<unknown>>()\n if (entries.has(id)) fail(`Plugin contribution already exists: ${slot.id}/${id}.`, 'INVALID_INPUT')\n entries.set(id, { pluginId, id, value })\n contributions.set(slot.id, entries)\n const disposer = (): void => removeContribution(slot as PluginSlot<unknown>, id, pluginId)\n cleanups.push(disposer)\n return disposer\n }\n const order = (): HarnessPlugin[] => {\n const result: HarnessPlugin[] = []\n const visiting = new Set<string>()\n const visited = new Set<string>()\n const visit = (id: string): void => {\n if (visited.has(id)) return\n if (visiting.has(id)) fail(`Plugin dependency cycle includes ${id}.`, 'INVALID_INPUT')\n const candidate = plugins.get(id)\n if (!candidate) fail(`Plugin dependency is missing: ${id}.`, 'INVALID_INPUT')\n const plugin = candidate as HarnessPlugin\n visiting.add(id)\n for (const dependency of plugin.requires ?? []) visit(dependency)\n visiting.delete(id); visited.add(id); result.push(plugin)\n }\n for (const id of plugins.keys()) visit(id)\n return result\n }\n const registry: PluginRegistry = {\n register(plugin) {\n ensureOpen()\n if (mounted) fail('Plugins cannot be registered after mount.', 'HARNESS_ERROR')\n validId(plugin.id, 'Plugin id'); validId(plugin.version, 'Plugin version')\n if (plugin.apiVersion !== HARNESS_PLUGIN_API_VERSION) fail(`Unsupported plugin API version: ${String(plugin.apiVersion)}.`, 'INVALID_INPUT')\n if (plugins.has(plugin.id)) fail(`Plugin already registered: ${plugin.id}.`, 'INVALID_INPUT')\n plugins.set(plugin.id, plugin)\n },\n mount() {\n ensureOpen()\n if (mounted) return\n try {\n for (const plugin of order()) {\n const context: HarnessPluginContext = {\n apiVersion: HARNESS_PLUGIN_API_VERSION,\n register: (slot, id, value) => registerContribution(plugin.id, slot, validId(id, 'Plugin contribution id'), value),\n effect: (disposer) => { cleanups.push(disposer) },\n on: (type, listener) => {\n const handlers = listeners.get(type) ?? new Set<HarnessEventListener<HarnessEventType>>()\n handlers.add(listener as HarnessEventListener<HarnessEventType>); listeners.set(type, handlers)\n const disposer = (): void => { handlers.delete(listener as HarnessEventListener<HarnessEventType>) }\n cleanups.push(disposer); return disposer\n },\n }\n const cleanup = plugin.apply(context)\n if (cleanup) cleanups.push(cleanup)\n }\n mounted = true\n } catch (error) { registry.dispose(); throw error }\n },\n emit(event) {\n ensureOpen()\n for (const listener of listeners.get(event.type) ?? []) listener(event as HarnessEvent<HarnessEventType>)\n },\n on(type, listener) {\n ensureOpen()\n const handlers = listeners.get(type) ?? new Set<HarnessEventListener<HarnessEventType>>()\n handlers.add(listener as HarnessEventListener<HarnessEventType>); listeners.set(type, handlers)\n return (): void => { handlers.delete(listener as HarnessEventListener<HarnessEventType>) }\n },\n contributions: <T>(slot: PluginSlot<T>): readonly PluginContribution<T>[] => [...(contributions.get(slot.id)?.values() ?? [])] as readonly PluginContribution<T>[],\n dispose() {\n if (disposed) return\n let firstError: unknown\n for (const cleanup of cleanups.splice(0).reverse()) { try { cleanup() } catch (error) { firstError ??= error } }\n contributions.clear(); listeners.clear(); disposed = true; mounted = false\n if (firstError) throw firstError\n },\n }\n return registry\n}\n","import { readFileSync } from 'node:fs'\nimport { createPluginSlot } from './plugins.js'\nimport { hashJson } from './hash.js'\nimport { fail } from './errors.js'\n\nexport interface ContextQuery {\n readonly query: string\n readonly scope?: readonly string[]\n readonly sourceRevision?: string\n}\n\nexport interface ContextReference {\n readonly id: string\n readonly uri: string\n readonly title?: string\n readonly version?: string\n readonly contentHash?: string\n}\n\nexport interface ContextSnapshot {\n readonly providerId: string\n readonly query: ContextQuery\n readonly references: readonly ContextReference[]\n readonly sourceHash: string\n readonly snapshotHash: string\n readonly resolvedAt: string\n}\n\nexport interface ContextProvider {\n readonly id: string\n readonly version: string\n readonly resolve: (query: ContextQuery) => Promise<ContextSnapshot>\n}\n\nexport const hashContextSnapshot = ({ providerId, query, references, sourceHash }: Pick<ContextSnapshot, 'providerId' | 'query' | 'references' | 'sourceHash'>): string => hashJson({ providerId, query, references, sourceHash })\nexport const hashContextSnapshots = (snapshots: readonly ContextSnapshot[]): string => hashJson(snapshots.map(({ providerId, query, references, sourceHash, snapshotHash }) => ({ providerId, query, references, sourceHash, snapshotHash })))\n\nconst record = (value: unknown, label: string): Record<string, unknown> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) fail(`${label} must be an object.`, 'INVALID_INPUT')\n return value as Record<string, unknown>\n}\nconst requiredString = (value: unknown, label: string): string => {\n if (typeof value !== 'string' || !value.trim()) fail(`${label} must be a non-empty string.`, 'INVALID_INPUT')\n return value as string\n}\nexport const validateContextSnapshot = (value: unknown, index = 0): ContextSnapshot => {\n const raw = record(value, `context snapshot ${index}`)\n const rawQuery = record(raw['query'], `context snapshot ${index}.query`)\n const rawReferences = raw['references']\n if (!Array.isArray(rawReferences)) fail(`context snapshot ${index}.references must be an array.`, 'INVALID_INPUT')\n const references = (rawReferences as unknown[]).map((reference: unknown, referenceIndex: number) => {\n const rawReference = record(reference, `context snapshot ${index}.references[${referenceIndex}]`)\n return {\n id: requiredString(rawReference['id'], `context snapshot ${index}.references[${referenceIndex}].id`),\n uri: requiredString(rawReference['uri'], `context snapshot ${index}.references[${referenceIndex}].uri`),\n ...(typeof rawReference['title'] === 'string' ? { title: rawReference['title'] } : {}),\n ...(typeof rawReference['version'] === 'string' ? { version: rawReference['version'] } : {}),\n ...(typeof rawReference['contentHash'] === 'string' ? { contentHash: rawReference['contentHash'] } : {}),\n }\n })\n const scope = rawQuery['scope'] === undefined ? undefined : Array.isArray(rawQuery['scope']) && rawQuery['scope'].every((item) => typeof item === 'string') ? rawQuery['scope'] : fail(`context snapshot ${index}.query.scope must be an array of strings.`, 'INVALID_INPUT')\n const snapshot = {\n providerId: requiredString(raw['providerId'], `context snapshot ${index}.providerId`),\n query: { query: requiredString(rawQuery['query'], `context snapshot ${index}.query.query`), ...(scope ? { scope } : {}), ...(typeof rawQuery['sourceRevision'] === 'string' ? { sourceRevision: rawQuery['sourceRevision'] } : {}) },\n references,\n sourceHash: requiredString(raw['sourceHash'], `context snapshot ${index}.sourceHash`),\n snapshotHash: requiredString(raw['snapshotHash'], `context snapshot ${index}.snapshotHash`),\n resolvedAt: requiredString(raw['resolvedAt'], `context snapshot ${index}.resolvedAt`),\n }\n if (snapshot.snapshotHash !== hashContextSnapshot(snapshot)) fail(`context snapshot ${index}.snapshotHash does not match its contents.`, 'INVALID_INPUT')\n return snapshot\n}\n\nexport const readContextSnapshots = (path: string): readonly ContextSnapshot[] => {\n const value = JSON.parse(readFileSync(path, 'utf8')) as unknown\n return (Array.isArray(value) ? value : [value]).map((snapshot, index) => validateContextSnapshot(snapshot, index))\n}\n\nexport const validateContextSnapshots = (snapshots: readonly ContextSnapshot[]): readonly ContextSnapshot[] => snapshots.map((snapshot, index) => validateContextSnapshot(snapshot, index))\n\nexport const CONTEXT_PROVIDER_SLOT = createPluginSlot<ContextProvider>('context.provider')\n","import { hashJson } from './hash.js'\nimport { saveRun as persistRun, setLatest } from './files.js'\nimport { FileEventStore } from './events.js'\nimport { hashContextSnapshots } from './context.js'\nimport type { ContextSnapshot } from './context.js'\nimport type { LoadedConfig, SourceSnapshot, VerificationRun } from './types.js'\n\nconst now = (): string => new Date().toISOString()\nconst newRunId = (): string => `${Date.now()}-${process.pid}-${Math.random().toString(36).slice(2, 8)}`\n\nexport const saveRun = (stateDir: string, run: VerificationRun): void => {\n persistRun(stateDir, run)\n const store = new FileEventStore(stateDir)\n const events = store.read(run.runId)\n if (!events.some((event) => event.type === 'run.created')) store.append({ runId: run.runId, sourceRevision: run.sourceRevision, configHash: run.configHash, type: 'run.created', payload: { project: run.project, baselineRevision: run.baseline.revision, baselineStatusHash: run.baseline.statusHash } })\n const loggedTransitions = new Set(events.filter((event) => event.type === 'state.transitioned').map((event) => event.payload.transitionIndex))\n run.transitions.forEach((transition, transitionIndex) => {\n if (loggedTransitions.has(transitionIndex)) return\n store.append({ runId: run.runId, sourceRevision: run.sourceRevision, configHash: run.configHash, type: 'state.transitioned', payload: { from: transition.from, to: transition.to, actor: transition.actor ?? 'harness', ...(transition.reason ? { reason: transition.reason } : {}), transitionIndex } })\n })\n const loggedSnapshots = new Set(events.filter((event) => event.type === 'context.attached').map((event) => event.payload.snapshotHash))\n for (const snapshot of run.contextSnapshots ?? []) {\n if (loggedSnapshots.has(snapshot.snapshotHash)) continue\n store.append({ runId: run.runId, sourceRevision: run.sourceRevision, configHash: run.configHash, type: 'context.attached', payload: { providerId: snapshot.providerId, sourceHash: snapshot.sourceHash, snapshotHash: snapshot.snapshotHash, query: snapshot.query } })\n }\n}\nexport { setLatest }\n\nexport const createRun = async ({ loaded, baseline, supersedes, dirtyBaselineAuthorized, contextSnapshots = [], planner = 'human' }: { readonly loaded: LoadedConfig; readonly baseline: SourceSnapshot; readonly supersedes?: string; readonly dirtyBaselineAuthorized?: boolean; readonly contextSnapshots?: readonly ContextSnapshot[]; readonly planner?: 'human' | 'ci' }): Promise<VerificationRun> => {\n const contractHash = hashJson(loaded.config.contract)\n const run: VerificationRun = {\n type: 'agentskit-harness-run', schemaVersion: 1, runId: newRunId(), project: loaded.config.project, state: 'PLANNED', configHash: loaded.configHash, contractHash, sourceRevision: baseline.revision, sourceStatusHash: baseline.statusHash, baseline,\n ...(planner === 'human' ? { contractApproval: { actor: 'human' as const, at: now(), contractHash } } : { contractPreparation: { actor: 'ci' as const, at: now(), contractHash } }),\n checks: loaded.config.checks.map(({ id, category }) => ({ id, category, status: 'pending' })), contextSnapshots, ...(contextSnapshots.length ? { contextHash: hashContextSnapshots(contextSnapshots) } : {}), ...(loaded.config.benchmark ? { benchmark: loaded.config.benchmark } : {}),\n outcomes: loaded.config.contract.outcomes.map(({ id, statement, checks }) => ({ id, statement, checks, status: 'pending' })),\n transitions: [{ from: null, to: 'PLANNED', at: now(), actor: planner }], evidenceReferences: [],\n ...(supersedes ? { supersedes } : {}), ...(dirtyBaselineAuthorized ? { dirtyBaselineAuthorized: true } : {}),\n }\n saveRun(loaded.stateDir, run); setLatest(loaded.stateDir, run); return run\n}\n","import { existsSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\nimport { sha256 } from './hash.js'\nimport { pathInside } from './files.js'\nimport type { EvidenceArtifact, StructuredEvidence, VerificationCheck } from './types.js'\n\nexport const parseStructuredEvidence = (stdout: string): StructuredEvidence | null => {\n for (const line of stdout.split(/\\r?\\n/).map((item) => item.trim()).filter(Boolean).reverse()) {\n try {\n const value: unknown = JSON.parse(line)\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && typeof (value as Record<string, unknown>)['status'] === 'string') return value as StructuredEvidence\n } catch {}\n }\n return null\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null && !Array.isArray(value)\nconst viewportValid = (viewport: unknown): boolean => typeof viewport === 'string' || (isRecord(viewport) && typeof viewport['width'] === 'number' && viewport['width'] > 0 && typeof viewport['height'] === 'number' && viewport['height'] > 0)\n\nexport const validateEvidence = (root: string, check: VerificationCheck, evidence: StructuredEvidence | null, outcomeIds: readonly string[]): string[] => {\n if (!evidence || evidence.status !== 'passed') return ['structured evidence did not pass']\n if (!Array.isArray(evidence.criteria) || !evidence.criteria.every((id): id is string => typeof id === 'string') || outcomeIds.some((id) => !evidence.criteria.includes(id))) return [`evidence must map criteria: ${outcomeIds.join(', ')}`]\n const failures: string[] = []\n if (check.category === 'ui') {\n if (evidence.capability !== 'real-browser') failures.push('UI evidence must declare capability real-browser')\n if (!Array.isArray(evidence.artifacts) || evidence.artifacts.length === 0) failures.push('UI evidence requires screenshot artifacts')\n }\n const artifacts = Array.isArray(evidence.artifacts) ? evidence.artifacts : []\n for (const artifactValue of artifacts) {\n if (!isRecord(artifactValue) || typeof artifactValue['path'] !== 'string' || typeof artifactValue['sha256'] !== 'string') {\n failures.push('artifact requires string path and sha256')\n continue\n }\n const artifact = artifactValue as unknown as EvidenceArtifact\n const artifactPath = join(root, artifact.path)\n if (!pathInside(root, artifactPath)) failures.push(`artifact path escapes project root: ${artifact.path}`)\n else if (!existsSync(artifactPath) || sha256(readFileSync(artifactPath)) !== artifact.sha256) failures.push(`artifact hash mismatch: ${artifact.path}`)\n if (check.category === 'ui' && (artifact.type !== 'screenshot' || !viewportValid(artifact.viewport))) failures.push(`UI artifact requires type=screenshot and viewport: ${artifact.path}`)\n }\n return failures\n}\n","import { execFile } from 'node:child_process'\nimport { lstatSync, readFileSync } from 'node:fs'\nimport { relative, resolve } from 'node:path'\nimport { promisify } from 'node:util'\nimport { hashJson, sha256 } from './hash.js'\nimport type { SourceSnapshot } from './types.js'\n\nconst execFileAsync = promisify(execFile)\nconst git = async (root: string, args: readonly string[]): Promise<string> => {\n try { return (await execFileAsync('git', ['-C', root, ...args], { encoding: 'utf8' })).stdout.trim() } catch { return '' }\n}\n\nexport const sourceSnapshot = async (root: string, stateDir: string): Promise<SourceSnapshot> => {\n const revision = await git(root, ['rev-parse', 'HEAD'])\n const stateRelative = relative(root, stateDir).replaceAll('\\\\', '/')\n const pathspec = ['--', '.']\n if (stateRelative && stateRelative !== '..' && !stateRelative.startsWith('../')) pathspec.push(`:(exclude)${stateRelative}`)\n const status = await git(root, ['status', '--porcelain=v1', '--untracked-files=all', ...pathspec])\n const diff = await git(root, ['diff', '--no-ext-diff', '--binary', 'HEAD', ...pathspec])\n const untrackedPaths = (await git(root, ['ls-files', '--others', '--exclude-standard', '-z'])).split('\\0').filter(Boolean).filter((path) => !stateRelative || (path !== stateRelative && !path.startsWith(`${stateRelative}/`)))\n const untracked = untrackedPaths.flatMap((path) => {\n const absolute = resolve(root, path)\n try { return lstatSync(absolute).isFile() ? [{ path, hash: sha256(readFileSync(absolute)) }] : [] } catch { return [] }\n })\n const fingerprint = { revision, status, diff, untracked }\n return { revision: revision || `content:${hashJson(fingerprint)}`, status, statusHash: hashJson(fingerprint) }\n}\n","import { spawn } from 'node:child_process'\nimport { mkdirSync, writeFileSync } from 'node:fs'\nimport { join, relative } from 'node:path'\nimport { createRun, saveRun, setLatest } from './runs.js'\nimport { loadConfig } from './config.js'\nimport { fail } from './errors.js'\nimport { parseStructuredEvidence, validateEvidence } from './evidence.js'\nimport { assertHuman, approvedDecision, transition } from './state-machine.js'\nimport { sourceSnapshot } from './source.js'\nimport { cleanConfiguredArtifacts, loadLatestRun, readRun } from './files.js'\nimport { validateContextSnapshots } from './context.js'\nimport { hashJson } from './hash.js'\nimport type { ContextSnapshot } from './context.js'\nimport type { CheckResult, LoadedConfig, VerificationCheck, VerificationRun } from './types.js'\nimport { FileEventStore } from './events.js'\n\nconst now = (): string => new Date().toISOString()\nconst requireRun = (run: VerificationRun | null): VerificationRun => run ?? fail('No verification run exists.', 'NO_RUN')\nconst verificationProjection = (run: Pick<VerificationRun, 'checks' | 'outcomes' | 'metrics'>): { readonly checks: VerificationRun['checks']; readonly outcomes: VerificationRun['outcomes']; readonly metrics: VerificationRun['metrics'] } => ({ checks: run.checks, outcomes: run.outcomes, metrics: run.metrics })\nconst verificationDigest = (run: Pick<VerificationRun, 'checks' | 'outcomes' | 'metrics'>): string => hashJson(verificationProjection(run))\n\ninterface CommandResult { readonly exitCode: number; readonly timedOut: boolean; readonly stdout: string; readonly stderr: string; readonly durationMs: number }\n\nconst runCommand = (check: VerificationCheck, cwd: string): Promise<CommandResult> => new Promise((resolveResult) => {\n const started = Date.now()\n const child = spawn(check.command, { cwd, shell: true, env: process.env })\n let stdout = ''\n let stderr = ''\n let timedOut = false\n const timer = setTimeout(() => { timedOut = true; child.kill('SIGTERM') }, check.timeoutMs)\n child.stdout.on('data', (chunk: Buffer) => { stdout += chunk.toString() })\n child.stderr.on('data', (chunk: Buffer) => { stderr += chunk.toString() })\n child.on('close', (exitCode) => { clearTimeout(timer); resolveResult({ exitCode: exitCode ?? 1, timedOut, stdout, stderr, durationMs: Date.now() - started }) })\n})\n\nconst currentBinding = async (loaded: LoadedConfig): Promise<{ readonly source: Awaited<ReturnType<typeof sourceSnapshot>>; readonly configHash: string }> => ({ source: await sourceSnapshot(loaded.root, loaded.stateDir), configHash: loaded.configHash })\n\nconst staleRun = (loaded: LoadedConfig, run: VerificationRun, reason: string): never => {\n const stale = transition(run, 'STALE', reason)\n saveRun(loaded.stateDir, stale as VerificationRun); setLatest(loaded.stateDir, stale as VerificationRun)\n return fail(reason, 'STALE')\n}\n\nconst isFresh = async (loaded: LoadedConfig, run: VerificationRun): Promise<boolean> => {\n const current = await currentBinding(loaded)\n return current.configHash === run.configHash && current.source.revision === run.sourceRevision && current.source.statusHash === run.sourceStatusHash\n}\n\nexport const planRun = async ({ configPath, decision, actor = 'human', allowDirty = false, contextSnapshots = [] }: { readonly configPath: string; readonly decision: string; readonly actor?: string; readonly allowDirty?: boolean; readonly contextSnapshots?: readonly ContextSnapshot[] }): Promise<VerificationRun> => {\n const automatedPreparation = actor === 'ci' && decision === 'prepared'\n if (!automatedPreparation) {\n assertHuman(actor)\n if (!approvedDecision(decision)) fail('Contract was not approved.', 'CLARIFYING')\n }\n const loaded = loadConfig(configPath)\n if (loaded.config.contract.ambiguities.length) fail(`Unresolved ambiguities remain: ${loaded.config.contract.ambiguities.join(' | ')}`, 'CLARIFYING')\n const validatedContextSnapshots = validateContextSnapshots(contextSnapshots)\n const baseline = await sourceSnapshot(loaded.root, loaded.stateDir)\n const configRelative = relative(loaded.root, loaded.absolute)\n const meaningful = baseline.status.split('\\n').filter(Boolean).filter((line) => !line.endsWith(` ${configRelative}`) && !line.endsWith(` ${configRelative.replaceAll('/', '\\\\')}`))\n if (meaningful.length && !allowDirty) fail(`Worktree is dirty before planning:\\n${meaningful.join('\\n')}\\nUse --allow-dirty only with explicit human authorization.`, 'WORKTREE_DIRTY')\n const previous = loadLatestRun(loaded.stateDir)\n if (previous && !['STALE', 'SUPERSEDED'].includes(previous.state)) fail(`An active run already exists: ${previous.runId} (${previous.state}).`, 'ACTIVE_RUN')\n return createRun({ loaded, baseline, supersedes: previous?.runId, dirtyBaselineAuthorized: allowDirty, contextSnapshots: validatedContextSnapshots, planner: automatedPreparation ? 'ci' : 'human' })\n}\n\nexport const startRun = (loaded: LoadedConfig): VerificationRun => {\n const run = requireRun(loadLatestRun(loaded.stateDir))\n const next = transition(run, 'IMPLEMENTING', 'Implementation started.', 'agent') as VerificationRun\n saveRun(loaded.stateDir, next); setLatest(loaded.stateDir, next); return next\n}\n\nexport const cancelRun = async ({ configPath, runId, reason = 'Run cancelled by a human.', actor = 'human' }: { readonly configPath: string; readonly runId?: string; readonly reason?: string; readonly actor?: string }): Promise<VerificationRun> => {\n assertHuman(actor)\n const loaded = loadConfig(configPath)\n const run = requireRun(runId ? readRun(loaded.stateDir, runId) : loadLatestRun(loaded.stateDir))\n const next = transition(run, 'CANCELLED', reason, 'human') as VerificationRun\n saveRun(loaded.stateDir, next); setLatest(loaded.stateDir, next); return next\n}\n\nexport const verifyRun = async ({ configPath }: { readonly configPath: string }): Promise<VerificationRun> => {\n const loaded = loadConfig(configPath)\n const run = requireRun(loadLatestRun(loaded.stateDir))\n if (!['IMPLEMENTING', 'VERIFYING'].includes(run.state)) {\n if (['AWAITING_HUMAN_APPROVAL', 'AWAITING_AUTHORIZATION', 'COMPLETE'].includes(run.state) && !(await isFresh(loaded, run))) staleRun(loaded, run, 'Run is stale because source or contract changed.')\n fail(`Cannot verify from ${run.state}.`, 'INVALID_STATE')\n }\n if (run.configHash !== loaded.configHash) staleRun(loaded, run, 'Run is stale because the verification contract changed.')\n const binding = await currentBinding(loaded)\n let current = { ...transition(run, 'VERIFYING', 'Verification started.', 'agent'), sourceRevision: binding.source.revision, sourceStatusHash: binding.source.statusHash } as VerificationRun\n saveRun(loaded.stateDir, current)\n const checkDir = join(loaded.stateDir, 'runs', current.runId, 'checks')\n mkdirSync(checkDir, { recursive: true })\n const outcomesByCheck = new Map(loaded.config.checks.map((check) => [check.id, loaded.config.contract.outcomes.filter((outcome) => outcome.checks.includes(check.id)).map((outcome) => outcome.id)]))\n let totalDurationMs = 0\n for (const check of loaded.config.checks) {\n const result = await runCommand(check, loaded.root)\n totalDurationMs += result.durationMs\n const stdoutPath = join(checkDir, `${check.id}.stdout`)\n const stderrPath = join(checkDir, `${check.id}.stderr`)\n writeFileSync(stdoutPath, result.stdout, 'utf8'); writeFileSync(stderrPath, result.stderr, 'utf8')\n const evidence = parseStructuredEvidence(result.stdout)\n const failures = result.exitCode === 0 && !result.timedOut && evidence ? validateEvidence(loaded.root, check, evidence, outcomesByCheck.get(check.id) ?? []) : [result.timedOut ? 'check timed out' : result.exitCode !== 0 ? `exit code ${result.exitCode}` : 'missing final structured evidence']\n const nextCheck: CheckResult = { id: check.id, category: check.category, status: failures.length ? 'failed' : 'passed', exitCode: result.exitCode, durationMs: result.durationMs, ...(evidence ? { evidence } : {}), ...(failures.length ? { failures } : {}) }\n current = { ...current, evidenceReferences: [...current.evidenceReferences, { checkId: check.id, stdout: relative(loaded.stateDir, stdoutPath), stderr: relative(loaded.stateDir, stderrPath) }], checks: current.checks.map((item) => item.id === check.id ? nextCheck : item) } as VerificationRun\n saveRun(loaded.stateDir, current)\n }\n const statuses = new Map(current.checks.map((check) => [check.id, check.status]))\n const budgetExceeded = loaded.config.budget?.maxDurationMs !== undefined && totalDurationMs > loaded.config.budget.maxDurationMs\n const allPassed = loaded.config.checks.every((check) => statuses.get(check.id) === 'passed') && !budgetExceeded\n current = { ...current, outcomes: current.outcomes.map((outcome) => ({ ...outcome, status: outcome.checks.every((id) => statuses.get(id) === 'passed') ? 'passed' : 'failed' })), metrics: { totalDurationMs, budgetExceeded } } as VerificationRun\n const digest = verificationDigest(current)\n current = { ...current, verificationDigest: digest }\n saveRun(loaded.stateDir, current)\n new FileEventStore(loaded.stateDir).append({ runId: current.runId, sourceRevision: current.sourceRevision, configHash: current.configHash, type: 'verification.completed', payload: { verificationDigest: digest, checkCount: current.checks.length, outcomeCount: current.outcomes.length, totalDurationMs, budgetExceeded } })\n const nextState = allPassed ? 'AWAITING_HUMAN_APPROVAL' : 'BLOCKED'\n current = { ...transition(current, nextState, allPassed ? 'All configured checks passed; human approval is required.' : budgetExceeded ? 'Verification budget was exceeded.' : 'A configured check failed or lacked structured evidence.', 'harness') } as VerificationRun\n saveRun(loaded.stateDir, current); setLatest(loaded.stateDir, current); return current\n}\n\nconst assertFresh = async (loaded: LoadedConfig, run: VerificationRun): Promise<void> => {\n if (!(await isFresh(loaded, run))) staleRun(loaded, run, 'Run is stale because source or worktree changed after verification.')\n}\n\nconst assertVerificationAttestation = (loaded: LoadedConfig, run: VerificationRun): void => {\n const expected = verificationDigest(run)\n if (run.verificationDigest !== expected) fail('Verification projection attestation does not match run.json.', 'HARNESS_ERROR')\n const event = new FileEventStore(loaded.stateDir).read(run.runId).filter((item) => item.type === 'verification.completed').at(-1)\n if (!event || event.payload.verificationDigest !== expected || event.sourceRevision !== run.sourceRevision || event.configHash !== run.configHash) fail('Verification projection attestation is missing from the event log.', 'HARNESS_ERROR')\n}\n\nconst plannerForRetry = (loaded: LoadedConfig, run: VerificationRun): 'human' | 'ci' => {\n if (run.contractPreparation) return 'ci'\n if (!run.supersedes) return 'human'\n return plannerForRetry(loaded, readRun(loaded.stateDir, run.supersedes))\n}\n\nconst recordDecision = (loaded: LoadedConfig, run: VerificationRun, type: 'approval.recorded' | 'authorization.recorded', payload: { readonly decision: 'approved' | 'rejected'; readonly resultingState: VerificationRun['state']; readonly verificationDigest: string; readonly actor: 'human'; readonly sourceRevision: string; readonly contractHash: string; readonly target?: string }): void => {\n new FileEventStore(loaded.stateDir).append({ runId: run.runId, sourceRevision: run.sourceRevision, configHash: run.configHash, type, payload: type === 'authorization.recorded' ? { ...payload, target: payload.target ?? fail('tracking.target is required when authorizing.', 'INVALID_CONFIG') } : payload })\n}\n\nconst assertDecisionProjection = (run: VerificationRun, decision: { readonly decision: 'approved' | 'rejected'; readonly resultingState: VerificationRun['state']; readonly verificationDigest: string; readonly sourceRevision: string; readonly contractHash: string }, expectedState: VerificationRun['state']): void => {\n if (decision.decision !== 'approved' || decision.resultingState !== expectedState || decision.verificationDigest !== run.verificationDigest || decision.sourceRevision !== run.sourceRevision || decision.contractHash !== run.contractHash) fail('Terminal decision attestation does not match the run projection.', 'HARNESS_ERROR')\n}\n\nexport const reconcileRun = async ({ configPath, runId }: { readonly configPath: string; readonly runId?: string }): Promise<import('./types.js').RunReconciliation> => {\n const loaded = loadConfig(configPath)\n const run = requireRun(runId ? readRun(loaded.stateDir, runId) : loadLatestRun(loaded.stateDir))\n await assertFresh(loaded, run)\n const store = new FileEventStore(loaded.stateDir)\n const eventLog = store.verify(run.runId)\n const events = store.read(run.runId)\n if (events.some((event) => event.runId !== run.runId || event.configHash !== run.configHash)) fail('Run event log is not bound to the current run projection.', 'HARNESS_ERROR')\n const requiresVerification = ['AWAITING_HUMAN_APPROVAL', 'AWAITING_AUTHORIZATION', 'COMPLETE'].includes(run.state)\n if (requiresVerification) {\n if (eventLog.status !== 'verified') fail('Terminal run requires a verified event log.', 'HARNESS_ERROR')\n assertVerificationAttestation(loaded, run)\n }\n if (run.state === 'AWAITING_AUTHORIZATION' || run.state === 'COMPLETE') {\n const approval = events.filter((event) => event.type === 'approval.recorded').at(-1) ?? fail('Terminal run is missing its human approval event.', 'HARNESS_ERROR')\n assertDecisionProjection(run, approval.payload, run.state === 'COMPLETE' && !loaded.config.tracking.required ? 'COMPLETE' : 'AWAITING_AUTHORIZATION')\n if (!run.humanApproval || run.humanApproval.actor !== 'human' || run.humanApproval.verificationDigest !== run.verificationDigest || run.humanApproval.sourceRevision !== run.sourceRevision || run.humanApproval.contractHash !== run.contractHash) fail('Human approval projection is inconsistent with its audit event.', 'HARNESS_ERROR')\n }\n if (run.state === 'COMPLETE' && loaded.config.tracking.required) {\n const authorization = events.filter((event) => event.type === 'authorization.recorded').at(-1) ?? fail('Complete tracked run is missing its authorization event.', 'HARNESS_ERROR')\n assertDecisionProjection(run, authorization.payload, 'COMPLETE')\n if (!run.authorization || run.authorization.actor !== 'human' || run.authorization.verificationDigest !== run.verificationDigest || run.authorization.target !== authorization.payload.target || run.authorization.sourceRevision !== run.sourceRevision || run.authorization.contractHash !== run.contractHash) fail('Authorization projection is inconsistent with its audit event.', 'HARNESS_ERROR')\n }\n return { status: 'verified', runId: run.runId, state: run.state, eventCount: eventLog.eventCount, ...(eventLog.headHash ? { headHash: eventLog.headHash } : {}), ...(run.verificationDigest ? { verificationDigest: run.verificationDigest } : {}) }\n}\n\nexport const approveRun = async ({ configPath, runId, decision, actor = 'human' }: { readonly configPath: string; readonly runId?: string; readonly decision: string; readonly actor?: string }): Promise<VerificationRun> => {\n assertHuman(actor); const loaded = loadConfig(configPath); const run = requireRun(runId ? readRun(loaded.stateDir, runId) : loadLatestRun(loaded.stateDir))\n if (run.state !== 'AWAITING_HUMAN_APPROVAL') fail(`Cannot approve from ${run.state}.`, 'INVALID_STATE')\n await assertFresh(loaded, run); assertVerificationAttestation(loaded, run)\n if (!approvedDecision(decision)) { const blocked = transition(run, 'BLOCKED', 'Human rejected the verification result.', 'human') as VerificationRun; saveRun(loaded.stateDir, blocked); recordDecision(loaded, run, 'approval.recorded', { decision: 'rejected', resultingState: blocked.state, verificationDigest: run.verificationDigest!, actor: 'human', sourceRevision: run.sourceRevision, contractHash: run.contractHash }); setLatest(loaded.stateDir, blocked); return blocked }\n const nextState = loaded.config.tracking.required ? 'AWAITING_AUTHORIZATION' : 'COMPLETE'\n const next = { ...transition(run, nextState, 'Human approved the verification result.', 'human'), humanApproval: { actor: 'human', at: now(), sourceRevision: run.sourceRevision, contractHash: run.contractHash, verificationDigest: run.verificationDigest } } as VerificationRun\n saveRun(loaded.stateDir, next); recordDecision(loaded, run, 'approval.recorded', { decision: 'approved', resultingState: nextState, verificationDigest: run.verificationDigest!, actor: 'human', sourceRevision: run.sourceRevision, contractHash: run.contractHash }); setLatest(loaded.stateDir, next); return next\n}\n\nexport const authorizeRun = async ({ configPath, runId, decision, actor = 'human' }: { readonly configPath: string; readonly runId?: string; readonly decision: string; readonly actor?: string }): Promise<VerificationRun> => {\n assertHuman(actor); const loaded = loadConfig(configPath); const run = requireRun(runId ? readRun(loaded.stateDir, runId) : loadLatestRun(loaded.stateDir))\n if (run.state !== 'AWAITING_AUTHORIZATION') fail(`Cannot authorize from ${run.state}.`, 'INVALID_STATE')\n await assertFresh(loaded, run); assertVerificationAttestation(loaded, run)\n if (!approvedDecision(decision)) { const blocked = transition(run, 'BLOCKED', 'Human rejected external tracking authorization.', 'human') as VerificationRun; saveRun(loaded.stateDir, blocked); recordDecision(loaded, run, 'authorization.recorded', { decision: 'rejected', resultingState: blocked.state, verificationDigest: run.verificationDigest!, actor: 'human', target: loaded.config.tracking.target ?? '', sourceRevision: run.sourceRevision, contractHash: run.contractHash }); setLatest(loaded.stateDir, blocked); return blocked }\n if (!loaded.config.tracking.target) fail('tracking.target is required when authorizing.', 'INVALID_CONFIG')\n const next = { ...transition(run, 'COMPLETE', 'External tracking was authorized.', 'human'), authorization: { actor: 'human', at: now(), target: loaded.config.tracking.target, sourceRevision: run.sourceRevision, contractHash: run.contractHash, verificationDigest: run.verificationDigest } } as VerificationRun\n saveRun(loaded.stateDir, next); recordDecision(loaded, run, 'authorization.recorded', { decision: 'approved', resultingState: 'COMPLETE', verificationDigest: run.verificationDigest!, actor: 'human', target: loaded.config.tracking.target, sourceRevision: run.sourceRevision, contractHash: run.contractHash }); setLatest(loaded.stateDir, next); return next\n}\n\nexport const retryRun = async ({ configPath }: { readonly configPath: string }): Promise<VerificationRun> => {\n const loaded = loadConfig(configPath); const previous = loadLatestRun(loaded.stateDir)\n const previousRun = requireRun(previous)\n if (!['BLOCKED', 'STALE', 'CANCELLED'].includes(previousRun.state)) fail(`Cannot retry from ${previousRun.state}.`, 'INVALID_STATE')\n const baseline = await sourceSnapshot(loaded.root, loaded.stateDir)\n const superseded = transition(previousRun, 'SUPERSEDED', 'Retry superseded the previous run.', 'harness') as VerificationRun\n saveRun(loaded.stateDir, superseded)\n const run = await createRun({ loaded, baseline, supersedes: previousRun.runId, dirtyBaselineAuthorized: previousRun.dirtyBaselineAuthorized, planner: plannerForRetry(loaded, previousRun) })\n const next = transition(run, 'IMPLEMENTING', 'Retry started after a previous attempt.', 'agent') as VerificationRun\n saveRun(loaded.stateDir, next); setLatest(loaded.stateDir, next); return next\n}\n\nexport const cleanTaskArtifacts = (configPath: string): { readonly cleaned: readonly string[] } => cleanConfiguredArtifacts(loadConfig(configPath))\n","import { readFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport { hashJson } from '../hash.js'\nimport { hashContextSnapshot } from '../context.js'\nimport type { ContextProvider, ContextQuery, ContextReference } from '../context.js'\n\ninterface IndexEntry { readonly id?: unknown; readonly type?: unknown; readonly title?: unknown; readonly path?: unknown; readonly description?: unknown; readonly body?: unknown; readonly tags?: unknown }\ninterface IndexDocument { readonly contentHash?: unknown; readonly knowledge?: unknown }\n\nconst index = (root: string, indexPath: string): IndexDocument => JSON.parse(readFileSync(resolve(root, indexPath), 'utf8')) as IndexDocument\nconst text = (entry: IndexEntry): string => [entry.id, entry.type, entry.title, entry.path, entry.description, entry.body, ...(Array.isArray(entry.tags) ? entry.tags : [])].filter((value): value is string => typeof value === 'string').join(' ').toLowerCase()\nconst sourceHash = (document: IndexDocument): string => typeof document.contentHash === 'string' && document.contentHash.length > 0 ? document.contentHash : hashJson(document)\nconst matches = (entry: IndexEntry, query: ContextQuery): boolean => {\n const needle = query.query.trim().toLowerCase()\n const scopes = query.scope?.map((scope) => scope.toLowerCase()) ?? []\n const value = text(entry)\n return Boolean(needle && value.includes(needle) && (scopes.length === 0 || scopes.some((scope) => value.includes(scope))))\n}\n\nexport interface DocBridgeContextProviderOptions {\n readonly root: string\n readonly indexPath?: string\n}\n\nexport const createDocBridgeContextProvider = ({ root, indexPath = '.doc-bridge/index.json' }: DocBridgeContextProviderOptions): ContextProvider => ({\n id: 'doc-bridge',\n version: '1.0.0',\n resolve: async (query) => {\n const document = index(root, indexPath)\n const contentHash = sourceHash(document)\n const entries = Array.isArray(document.knowledge) ? document.knowledge.filter((value): value is IndexEntry => typeof value === 'object' && value !== null && !Array.isArray(value)).filter((entry) => matches(entry, query)).sort((left, right) => String(left.id ?? '').localeCompare(String(right.id ?? ''))).slice(0, 8) : []\n const references: ContextReference[] = entries.flatMap((entry) => typeof entry.id === 'string' && typeof entry.path === 'string' ? [{ id: entry.id, uri: `doc-bridge://${entry.path}`, ...(typeof entry.title === 'string' ? { title: entry.title } : {}), contentHash }] : [])\n return { providerId: 'doc-bridge', query, references, sourceHash: contentHash, snapshotHash: hashContextSnapshot({ providerId: 'doc-bridge', query, references, sourceHash: contentHash }), resolvedAt: new Date().toISOString() }\n },\n})\n","import { existsSync, mkdtempSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from 'node:fs'\nimport { join } from 'node:path'\nimport { tmpdir } from 'node:os'\nimport { fail } from './errors.js'\nimport { readJson, readRun } from './files.js'\nimport { RUN_STATES, SURFACE_NAMES } from './types.js'\nimport type { BenchmarkBinding, RunState, SurfaceName, VerificationRun } from './types.js'\n\nexport const BENCHMARK_SCHEMA_VERSION = 1 as const\n\nexport type BenchmarkObservationStatus = 'passed' | 'failed' | 'blocked' | 'not-run'\nexport type BenchmarkImprovementDirection = 'improved' | 'regressed' | 'unchanged' | 'unavailable'\nexport type BenchmarkConfidence = 'insufficient' | 'directional' | 'reliable'\n\nexport interface BenchmarkPolicy {\n readonly minComparableTasks: number\n readonly maxDurationRegressionRate: number\n readonly minCompletedRunsPerTask: number\n readonly minBaselineSamplesPerTask: number\n readonly requireZeroEscapedIncomplete: boolean\n}\n\nexport interface BenchmarkQualityGate {\n readonly status: 'passed' | 'failed' | 'insufficient-data'\n readonly confidence: BenchmarkConfidence\n readonly comparableTaskCount: number\n readonly policy: BenchmarkPolicy\n readonly durationRegressionTaskIds: readonly string[]\n readonly escapedIncompleteTaskIds: readonly string[]\n readonly reasons: readonly string[]\n}\n\nexport interface BenchmarkTask {\n readonly id: string\n readonly title: string\n readonly acceptanceCriteria: readonly string[]\n /** Product/runtime surfaces exercised by the task. */\n readonly surfaces?: readonly SurfaceName[]\n readonly kind?: string\n readonly prompt?: BenchmarkTaskFile\n readonly source?: BenchmarkTaskSource\n readonly scope?: BenchmarkTaskScope\n}\n\nexport interface BenchmarkTaskFile {\n readonly path: string\n readonly sha256: string\n}\n\nexport interface BenchmarkTaskSource {\n readonly repository: string\n readonly path: string\n readonly revision: string\n}\n\nexport interface BenchmarkSuiteSource {\n readonly repository: string\n readonly revision: string\n readonly taskDefinition: string\n}\n\nexport interface BenchmarkTaskScope {\n readonly read: readonly string[]\n readonly write: readonly string[]\n}\n\nexport interface BenchmarkObservation {\n readonly taskId: string\n readonly mode: 'baseline'\n readonly status: BenchmarkObservationStatus\n readonly source: string\n readonly recordedAt: string\n readonly attempts?: number\n readonly durationMs?: number\n readonly durationSamplesMs?: readonly number[]\n /** Fraction of repeated samples whose task artifact passed acceptance validation. */\n readonly artifactAcceptanceRate?: number\n /** Fraction of repeated samples whose verification protocol completed. */\n readonly protocolCompletionRate?: number\n readonly reviewMinutes?: number\n readonly escapedIncomplete?: number\n readonly evidence?: readonly BenchmarkObservationEvidence[]\n readonly evidenceDigest?: string\n}\n\nexport interface BenchmarkObservationEvidence {\n readonly criterion: string\n readonly status: BenchmarkObservationStatus\n readonly source: string\n}\n\nexport interface BenchmarkManifest {\n readonly type: 'agentskit-harness-benchmark-manifest'\n readonly schemaVersion: typeof BENCHMARK_SCHEMA_VERSION\n readonly suiteId: string\n readonly name: string\n readonly provenance?: BenchmarkSuiteSource\n readonly tasks: readonly BenchmarkTask[]\n readonly observations: readonly BenchmarkObservation[]\n readonly policy?: BenchmarkPolicy\n}\n\nexport interface BenchmarkRun {\n readonly runId: string\n readonly state: RunState\n readonly sourceRevision: string\n readonly configHash: string\n readonly contractHash: string\n readonly supersedes?: string\n readonly durationMs?: number\n readonly checks: { readonly total: number; readonly passed: number; readonly failed: number }\n readonly outcomes: { readonly total: number; readonly passed: number; readonly failed: number }\n readonly evidence: { readonly total: number; readonly attached: number }\n /** Optional artifact outcome emitted by structured benchmark evidence. */\n readonly artifactAcceptanceRate?: number\n readonly escapedIncomplete?: number\n readonly humanApproved: boolean\n readonly humanReviewMinutes?: number\n readonly authorized: boolean\n readonly benchmark?: BenchmarkBinding\n}\n\nexport interface BenchmarkComparison {\n readonly taskId: string\n readonly title: string\n readonly comparability: 'comparable' | 'missing-baseline' | 'baseline-not-run' | 'baseline-evidence-missing' | 'baseline-incomplete' | 'baseline-samples-insufficient' | 'harness-not-run' | 'harness-not-complete'\n readonly comparable: boolean\n readonly baselineDeliveryComplete: boolean\n readonly baseline?: BenchmarkObservation\n readonly baselineEvidenceCoverageRate: number | null\n readonly baselineSampleCount: number\n readonly baselineArtifactAcceptanceRate: number | null\n readonly baselineProtocolCompletionRate: number | null\n readonly baselineMedianDurationMs?: number\n readonly improvement: {\n readonly durationRate: number | null\n readonly duration: BenchmarkImprovementDirection\n readonly attemptsRate: number | null\n readonly attempts: BenchmarkImprovementDirection\n readonly reviewRate: number | null\n readonly review: BenchmarkImprovementDirection\n readonly artifactAcceptanceRate: number | null\n readonly artifactAcceptance: BenchmarkImprovementDirection\n readonly artifactAcceptanceDelta: number | null\n readonly protocolCompletionRate: number | null\n readonly protocolCompletion: BenchmarkImprovementDirection\n readonly protocolCompletionDelta: number | null\n readonly escapedIncompleteRate: number | null\n readonly escapedIncomplete: BenchmarkImprovementDirection\n }\n readonly harness: {\n readonly attempts: number\n readonly retryCount: number\n readonly completedRuns: number\n readonly durationSamplesMs: readonly number[]\n readonly medianDurationMs?: number\n readonly latestState: RunState | 'NOT_RUN'\n readonly latestRunId?: string\n readonly latestDurationMs?: number\n readonly checkPassRate: number | null\n readonly outcomePassRate: number | null\n readonly evidenceCoverageRate: number | null\n readonly artifactAcceptanceRate?: number\n readonly artifactAcceptanceSampleCount: number\n readonly protocolCompletionRate: number | null\n readonly protocolCompletionSampleCount: number\n readonly humanApproved: boolean\n readonly escapedIncomplete?: number\n readonly humanReviewMinutes?: number\n }\n readonly confidence: BenchmarkConfidence\n readonly durationDeltaMs?: number\n readonly attemptDelta?: number\n readonly reviewDeltaMinutes?: number\n readonly escapedIncompleteDelta?: number\n}\n\nexport interface BenchmarkSummary {\n readonly totalRuns: number\n readonly stateCounts: Readonly<Record<RunState, number>>\n readonly completeRuns: number\n readonly retriedRuns: number\n readonly staleRuns: number\n readonly firstAttemptRuns: number\n readonly humanApprovedRuns: number\n readonly authorizedRuns: number\n readonly effectiveRunCount: number\n readonly effectiveCompleteRuns: number\n readonly effectiveCompletionRate: number | null\n readonly effectiveCheckPassRate: number | null\n readonly effectiveOutcomePassRate: number | null\n readonly effectiveEvidenceCoverageRate: number | null\n readonly checkPassRate: number | null\n readonly outcomePassRate: number | null\n readonly evidenceCoverageRate: number | null\n readonly firstAttemptApprovalRate: number | null\n readonly retryRate: number | null\n readonly staleRate: number | null\n readonly averageDurationMs: number | null\n readonly medianDurationMs: number | null\n}\n\nexport interface BenchmarkReport {\n readonly type: 'agentskit-harness-benchmark'\n readonly schemaVersion: typeof BENCHMARK_SCHEMA_VERSION\n readonly stateDir: string\n readonly generatedAt: string\n readonly runs: readonly BenchmarkRun[]\n readonly summary: BenchmarkSummary\n readonly manifest?: { readonly suiteId: string; readonly taskCount: number; readonly baselineCount: number; readonly comparableTaskCount: number }\n readonly comparisons: readonly BenchmarkComparison[]\n readonly qualityGate: BenchmarkQualityGate\n}\n\nexport interface BenchmarkObservationInput {\n readonly taskId: string\n readonly status: BenchmarkObservationStatus\n readonly source: string\n readonly recordedAt?: string\n readonly attempts?: number\n readonly durationMs?: number\n readonly durationSamplesMs?: readonly number[]\n readonly artifactAcceptanceRate?: number\n readonly protocolCompletionRate?: number\n readonly reviewMinutes?: number\n readonly escapedIncomplete?: number\n readonly evidence?: readonly BenchmarkObservationEvidence[]\n readonly evidenceDigest?: string\n}\n\nconst percentage = (part: number, total: number): number | null => total ? Number((part / total).toFixed(4)) : null\nconst DEFAULT_POLICY: BenchmarkPolicy = { minComparableTasks: 3, maxDurationRegressionRate: 0.2, minCompletedRunsPerTask: 3, minBaselineSamplesPerTask: 3, requireZeroEscapedIncomplete: true }\nconst improvementRate = (baseline: number | undefined, current: number | undefined): number | null => baseline === undefined || current === undefined || baseline === 0 ? null : Number(((baseline - current) / baseline).toFixed(4))\nconst increaseRate = (baseline: number | undefined, current: number | undefined): number | null => baseline === undefined || current === undefined || baseline === 0 ? null : Number(((current - baseline) / baseline).toFixed(4))\nconst increaseDelta = (baseline: number | undefined, current: number | null): number | null => baseline === undefined || current === null ? null : Number((current - baseline).toFixed(4))\nconst increaseDirection = (rate: number | null, delta: number | null): BenchmarkImprovementDirection => delta === null ? improvementDirection(rate) : delta > 0 ? 'improved' : delta < 0 ? 'regressed' : 'unchanged'\nconst improvementDirection = (rate: number | null): BenchmarkImprovementDirection => rate === null ? 'unavailable' : rate > 0 ? 'improved' : rate < 0 ? 'regressed' : 'unchanged'\nconst count = <T>(items: readonly T[], predicate: (item: T) => boolean): number => items.filter(predicate).length\nconst median = (values: readonly number[]): number | null => {\n if (!values.length) return null\n const sorted = [...values].sort((left, right) => left - right)\n const middle = Math.floor(sorted.length / 2)\n return sorted.length % 2 ? sorted[middle] ?? null : ((sorted[middle - 1] ?? 0) + (sorted[middle] ?? 0)) / 2\n}\nconst reviewMinutes = (run: VerificationRun): number | undefined => {\n if (!run.humanApproval) return undefined\n const reviewStart = run.transitions.find((transition) => transition.to === 'AWAITING_HUMAN_APPROVAL')?.at\n if (!reviewStart) return undefined\n const elapsed = Date.parse(run.humanApproval.at) - Date.parse(reviewStart)\n return Number.isFinite(elapsed) && elapsed >= 0 ? Number((elapsed / 60_000).toFixed(2)) : undefined\n}\nconst confidence = (comparable: boolean, completedRuns: number, policy: BenchmarkPolicy): BenchmarkConfidence => !comparable ? 'insufficient' : completedRuns >= policy.minCompletedRunsPerTask ? 'reliable' : 'directional'\n\nconst artifactAcceptanceRate = (run: VerificationRun): number | undefined => {\n const rates = run.checks.flatMap((check) => {\n const evidence = check.evidence\n if (!evidence) return []\n const direct = typeof evidence['artifactAcceptanceRate'] === 'number' ? [evidence['artifactAcceptanceRate']] : []\n const reports = Array.isArray(evidence['reports']) ? evidence['reports'].flatMap((report) => typeof report === 'object' && report !== null && typeof report['artifactAcceptanceRate'] === 'number' ? [report['artifactAcceptanceRate']] : []) : []\n return [...direct, ...reports].filter((rate) => Number.isFinite(rate) && rate >= 0 && rate <= 1)\n })\n return rates.length ? Number((rates.reduce((total, rate) => total + rate, 0) / rates.length).toFixed(4)) : undefined\n}\n\nconst projectRun = (run: VerificationRun): BenchmarkRun => {\n const checks = { total: run.checks.length, passed: count(run.checks, (check) => check.status === 'passed'), failed: count(run.checks, (check) => check.status === 'failed') }\n const outcomes = { total: run.outcomes.length, passed: count(run.outcomes, (outcome) => outcome.status === 'passed'), failed: count(run.outcomes, (outcome) => outcome.status === 'failed') }\n const evidence = { total: run.checks.length, attached: count(run.checks, (check) => check.evidence !== undefined) }\n const acceptanceRate = artifactAcceptanceRate(run)\n const humanReviewMinutes = reviewMinutes(run)\n const escapedIncomplete = run.state === 'COMPLETE' && checks.failed === 0 && outcomes.failed === 0 && evidence.attached === evidence.total ? 0 : undefined\n return { runId: run.runId, state: run.state, sourceRevision: run.sourceRevision, configHash: run.configHash, contractHash: run.contractHash, ...(run.supersedes ? { supersedes: run.supersedes } : {}), ...(run.metrics ? { durationMs: run.metrics.totalDurationMs } : {}), checks, outcomes, evidence, ...(acceptanceRate === undefined ? {} : { artifactAcceptanceRate: acceptanceRate }), ...(escapedIncomplete === undefined ? {} : { escapedIncomplete }), humanApproved: run.humanApproval !== undefined, ...(humanReviewMinutes === undefined ? {} : { humanReviewMinutes }), authorized: run.authorization !== undefined, ...(run.benchmark ? { benchmark: run.benchmark } : {}) }\n}\n\nconst summarize = (runs: readonly BenchmarkRun[]): BenchmarkSummary => {\n const stateCounts = Object.fromEntries(RUN_STATES.map((state) => [state, count(runs, (run) => run.state === state)])) as Record<RunState, number>\n const checksTotal = runs.reduce((total, run) => total + run.checks.total, 0)\n const checksPassed = runs.reduce((total, run) => total + run.checks.passed, 0)\n const outcomesTotal = runs.reduce((total, run) => total + run.outcomes.total, 0)\n const outcomesPassed = runs.reduce((total, run) => total + run.outcomes.passed, 0)\n const evidenceTotal = runs.reduce((total, run) => total + run.evidence.total, 0)\n const evidenceAttached = runs.reduce((total, run) => total + run.evidence.attached, 0)\n const firstAttempts = runs.filter((run) => !run.supersedes)\n const superseded = new Set(runs.flatMap((run) => run.supersedes ? [run.supersedes] : []))\n const effectiveRuns = runs.filter((run) => !superseded.has(run.runId))\n const effectiveChecksTotal = effectiveRuns.reduce((total, run) => total + run.checks.total, 0)\n const effectiveChecksPassed = effectiveRuns.reduce((total, run) => total + run.checks.passed, 0)\n const effectiveOutcomesTotal = effectiveRuns.reduce((total, run) => total + run.outcomes.total, 0)\n const effectiveOutcomesPassed = effectiveRuns.reduce((total, run) => total + run.outcomes.passed, 0)\n const effectiveEvidenceTotal = effectiveRuns.reduce((total, run) => total + run.evidence.total, 0)\n const effectiveEvidenceAttached = effectiveRuns.reduce((total, run) => total + run.evidence.attached, 0)\n const durations = runs.flatMap((run) => run.durationMs === undefined ? [] : [run.durationMs])\n return {\n totalRuns: runs.length,\n stateCounts,\n completeRuns: stateCounts.COMPLETE,\n retriedRuns: count(runs, (run) => run.supersedes !== undefined),\n staleRuns: stateCounts.STALE,\n firstAttemptRuns: firstAttempts.length,\n humanApprovedRuns: count(runs, (run) => run.humanApproved),\n authorizedRuns: count(runs, (run) => run.authorized),\n effectiveRunCount: effectiveRuns.length,\n effectiveCompleteRuns: count(effectiveRuns, (run) => run.state === 'COMPLETE'),\n effectiveCompletionRate: percentage(count(effectiveRuns, (run) => run.state === 'COMPLETE'), effectiveRuns.length),\n effectiveCheckPassRate: percentage(effectiveChecksPassed, effectiveChecksTotal),\n effectiveOutcomePassRate: percentage(effectiveOutcomesPassed, effectiveOutcomesTotal),\n effectiveEvidenceCoverageRate: percentage(effectiveEvidenceAttached, effectiveEvidenceTotal),\n checkPassRate: percentage(checksPassed, checksTotal),\n outcomePassRate: percentage(outcomesPassed, outcomesTotal),\n evidenceCoverageRate: percentage(evidenceAttached, evidenceTotal),\n firstAttemptApprovalRate: percentage(count(firstAttempts, (run) => run.humanApproved), firstAttempts.length),\n retryRate: percentage(count(runs, (run) => run.supersedes !== undefined), runs.length),\n staleRate: percentage(stateCounts.STALE, runs.length),\n averageDurationMs: durations.length ? Math.round(durations.reduce((total, duration) => total + duration, 0) / durations.length) : null,\n medianDurationMs: median(durations),\n }\n}\n\nconst readRuns = (stateDir: string): VerificationRun[] => {\n const runsDir = join(stateDir, 'runs')\n if (!existsSync(runsDir)) return []\n return readdirSync(runsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => {\n try {\n const candidate = readJson(join(runsDir, entry.name, 'run.json')) as { readonly type?: unknown }\n return candidate.type === 'agentskit-harness-run' ? readRun(stateDir, entry.name) : undefined\n } catch (error) { return fail(`Benchmark could not read run ${entry.name}: ${error instanceof Error ? error.message : String(error)}`, 'HARNESS_ERROR') }\n }).filter((run): run is VerificationRun => run !== undefined)\n}\n\nconst nonEmptyString = (value: unknown, label: string): string => {\n if (typeof value !== 'string') return fail(`${label} must be a non-empty string.`, 'INVALID_CONFIG')\n const result = value.trim()\n if (!result) return fail(`${label} must be a non-empty string.`, 'INVALID_CONFIG')\n return result\n}\n\nconst sha256 = (value: unknown, label: string): string | undefined => {\n if (value === undefined) return undefined\n const result = nonEmptyString(value, label)\n if (!/^[a-f0-9]{64}$/.test(result)) return fail(`${label} must be a lowercase SHA-256 digest.`, 'INVALID_CONFIG')\n return result\n}\n\nconst stringList = (value: unknown, label: string): string[] => {\n if (!Array.isArray(value)) return fail(`${label} must be a non-empty string array.`, 'INVALID_CONFIG')\n const items = value as unknown[]\n if (!items.length || !items.every((item: unknown) => typeof item === 'string' && Boolean(item.trim()))) return fail(`${label} must be a non-empty string array.`, 'INVALID_CONFIG')\n return items.map((item: unknown) => String(item).trim())\n}\n\nconst nonNegativeNumber = (value: unknown, label: string): number | undefined => {\n if (value === undefined) return undefined\n if (typeof value !== 'number') return fail(`${label} must be a non-negative number.`, 'INVALID_CONFIG')\n if (!Number.isFinite(value) || value < 0) return fail(`${label} must be a non-negative number.`, 'INVALID_CONFIG')\n const result = value\n return result\n}\n\nconst nonNegativeInteger = (value: unknown, label: string): number | undefined => {\n const result = nonNegativeNumber(value, label)\n if (result !== undefined && !Number.isInteger(result)) return fail(`${label} must be an integer.`, 'INVALID_CONFIG')\n return result\n}\n\nconst rate = (value: unknown, label: string): number | undefined => {\n const result = nonNegativeNumber(value, label)\n if (result !== undefined && result > 1) return fail(`${label} must be between 0 and 1.`, 'INVALID_CONFIG')\n return result\n}\n\nconst timestamp = (value: unknown, label: string): string => {\n const result = nonEmptyString(value, label)\n if (!Number.isFinite(Date.parse(result))) return fail(`${label} must be a valid timestamp.`, 'INVALID_CONFIG')\n return result\n}\n\nconst relativePath = (value: unknown, label: string): string => {\n const result = nonEmptyString(value, label)\n if (result.startsWith('/') || result.split('/').includes('..')) return fail(`${label} must be a repository-relative path.`, 'INVALID_CONFIG')\n return result\n}\n\nconst taskFile = (value: unknown, label: string): BenchmarkTaskFile | undefined => {\n if (value === undefined) return undefined\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return fail(`${label} must be an object.`, 'INVALID_CONFIG')\n const raw = value as Record<string, unknown>\n return { path: relativePath(raw['path'], `${label}.path`), sha256: sha256(raw['sha256'], `${label}.sha256`) ?? fail(`${label}.sha256 is required.`, 'INVALID_CONFIG') }\n}\n\nconst taskSource = (value: unknown, label: string): BenchmarkTaskSource | undefined => {\n if (value === undefined) return undefined\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return fail(`${label} must be an object.`, 'INVALID_CONFIG')\n const raw = value as Record<string, unknown>\n return { repository: nonEmptyString(raw['repository'], `${label}.repository`), path: relativePath(raw['path'], `${label}.path`), revision: nonEmptyString(raw['revision'], `${label}.revision`) }\n}\n\nconst suiteSource = (value: unknown, label: string): BenchmarkSuiteSource | undefined => {\n if (value === undefined) return undefined\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return fail(`${label} must be an object.`, 'INVALID_CONFIG')\n const raw = value as Record<string, unknown>\n return { repository: nonEmptyString(raw['repository'], `${label}.repository`), revision: nonEmptyString(raw['revision'], `${label}.revision`), taskDefinition: relativePath(raw['taskDefinition'], `${label}.taskDefinition`) }\n}\n\nconst taskScope = (value: unknown, label: string): BenchmarkTaskScope | undefined => {\n if (value === undefined) return undefined\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return fail(`${label} must be an object.`, 'INVALID_CONFIG')\n const raw = value as Record<string, unknown>\n return { read: stringList(raw['read'], `${label}.read`), write: stringList(raw['write'], `${label}.write`) }\n}\n\nconst taskSurfaces = (value: unknown, label: string): readonly SurfaceName[] | undefined => {\n if (value === undefined) return undefined\n if (!Array.isArray(value) || !value.length) return fail(`${label} must be a non-empty array.`, 'INVALID_CONFIG')\n const surfaces = value.map((item, index) => nonEmptyString(item, `${label}[${index}]`))\n if (surfaces.some((surface) => !(SURFACE_NAMES as readonly string[]).includes(surface))) fail(`${label} contains an unknown surface.`, 'INVALID_CONFIG')\n if (new Set(surfaces).size !== surfaces.length) fail(`${label} must contain unique surfaces.`, 'INVALID_CONFIG')\n return surfaces as SurfaceName[]\n}\n\nconst benchmarkPolicy = (value: unknown): BenchmarkPolicy | undefined => {\n if (value === undefined) return undefined\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return fail('benchmark.policy must be an object.', 'INVALID_CONFIG')\n const raw = value as Record<string, unknown>\n const minComparableTasks = nonNegativeInteger(raw['minComparableTasks'], 'benchmark.policy.minComparableTasks')\n const maxDurationRegressionRate = nonNegativeNumber(raw['maxDurationRegressionRate'], 'benchmark.policy.maxDurationRegressionRate')\n const minCompletedRunsPerTask = nonNegativeInteger(raw['minCompletedRunsPerTask'], 'benchmark.policy.minCompletedRunsPerTask')\n const minBaselineSamplesPerTask = nonNegativeInteger(raw['minBaselineSamplesPerTask'] ?? 1, 'benchmark.policy.minBaselineSamplesPerTask')\n if (minComparableTasks === undefined || minComparableTasks < 1) return fail('benchmark.policy.minComparableTasks must be at least 1.', 'INVALID_CONFIG')\n if (maxDurationRegressionRate === undefined || maxDurationRegressionRate > 1) return fail('benchmark.policy.maxDurationRegressionRate must be between 0 and 1.', 'INVALID_CONFIG')\n if (minCompletedRunsPerTask === undefined || minCompletedRunsPerTask < 1) return fail('benchmark.policy.minCompletedRunsPerTask must be at least 1.', 'INVALID_CONFIG')\n if (minBaselineSamplesPerTask === undefined || minBaselineSamplesPerTask < 1) return fail('benchmark.policy.minBaselineSamplesPerTask must be at least 1.', 'INVALID_CONFIG')\n if (typeof raw['requireZeroEscapedIncomplete'] !== 'boolean') return fail('benchmark.policy.requireZeroEscapedIncomplete must be boolean.', 'INVALID_CONFIG')\n return { minComparableTasks, maxDurationRegressionRate, minCompletedRunsPerTask, minBaselineSamplesPerTask, requireZeroEscapedIncomplete: raw['requireZeroEscapedIncomplete'] }\n}\n\nexport const validateBenchmarkManifest = (value: unknown): BenchmarkManifest => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) fail('benchmark manifest must be an object.', 'INVALID_CONFIG')\n const raw = value as Record<string, unknown>\n if (raw['type'] !== 'agentskit-harness-benchmark-manifest' || raw['schemaVersion'] !== BENCHMARK_SCHEMA_VERSION) fail('benchmark manifest type or schemaVersion is invalid.', 'INVALID_CONFIG')\n const rawTasks = Array.isArray(raw['tasks']) && raw['tasks'].length ? raw['tasks'] : fail('benchmark manifest tasks must be non-empty.', 'INVALID_CONFIG')\n const tasks = rawTasks.map((item, index) => {\n if (typeof item !== 'object' || item === null || Array.isArray(item)) fail(`benchmark.tasks[${index}] must be an object.`, 'INVALID_CONFIG')\n const task = item as Record<string, unknown>\n const kind = task['kind'] === undefined ? undefined : nonEmptyString(task['kind'], `benchmark.tasks[${index}].kind`)\n const prompt = taskFile(task['prompt'], `benchmark.tasks[${index}].prompt`)\n const source = taskSource(task['source'], `benchmark.tasks[${index}].source`)\n const scope = taskScope(task['scope'], `benchmark.tasks[${index}].scope`)\n const surfaces = taskSurfaces(task['surfaces'], `benchmark.tasks[${index}].surfaces`)\n return { id: nonEmptyString(task['id'], `benchmark.tasks[${index}].id`), title: nonEmptyString(task['title'], `benchmark.tasks[${index}].title`), acceptanceCriteria: stringList(task['acceptanceCriteria'], `benchmark.tasks[${index}].acceptanceCriteria`), ...(surfaces === undefined ? {} : { surfaces }), ...(kind === undefined ? {} : { kind }), ...(prompt === undefined ? {} : { prompt }), ...(source === undefined ? {} : { source }), ...(scope === undefined ? {} : { scope }) }\n })\n if (new Set(tasks.map((task) => task.id)).size !== tasks.length) fail('benchmark task ids must be unique.', 'INVALID_CONFIG')\n const taskIds = new Set(tasks.map((task) => task.id))\n const rawObservations = raw['observations'] === undefined ? [] : Array.isArray(raw['observations']) ? raw['observations'] : fail('benchmark.observations must be an array.', 'INVALID_CONFIG')\n const observations = rawObservations.map((item, index) => {\n if (typeof item !== 'object' || item === null || Array.isArray(item)) fail(`benchmark.observations[${index}] must be an object.`, 'INVALID_CONFIG')\n const observation = item as Record<string, unknown>\n const status = observation['status']\n if (!['passed', 'failed', 'blocked', 'not-run'].includes(String(status))) fail(`benchmark.observations[${index}].status is invalid.`, 'INVALID_CONFIG')\n const taskId = nonEmptyString(observation['taskId'], `benchmark.observations[${index}].taskId`)\n if (!taskIds.has(taskId)) fail(`benchmark observation references unknown task: ${taskId}.`, 'INVALID_CONFIG')\n const task = tasks.find((candidate) => candidate.id === taskId) ?? fail(`benchmark observation references unknown task: ${taskId}.`, 'INVALID_CONFIG')\n const attempts = nonNegativeInteger(observation['attempts'], `benchmark.observations[${index}].attempts`)\n const durationMs = nonNegativeNumber(observation['durationMs'], `benchmark.observations[${index}].durationMs`)\n const durationSamplesMs = observation['durationSamplesMs'] === undefined ? undefined : Array.isArray(observation['durationSamplesMs']) ? observation['durationSamplesMs'].map((sample, sampleIndex) => nonNegativeNumber(sample, `benchmark.observations[${index}].durationSamplesMs[${sampleIndex}]`) ?? fail(`benchmark.observations[${index}].durationSamplesMs must contain numbers.`, 'INVALID_CONFIG')) : fail(`benchmark.observations[${index}].durationSamplesMs must be an array.`, 'INVALID_CONFIG')\n if (durationSamplesMs && !durationSamplesMs.length) fail(`benchmark.observations[${index}].durationSamplesMs must not be empty.`, 'INVALID_CONFIG')\n const artifactAcceptanceRate = rate(observation['artifactAcceptanceRate'], `benchmark.observations[${index}].artifactAcceptanceRate`)\n const protocolCompletionRate = rate(observation['protocolCompletionRate'], `benchmark.observations[${index}].protocolCompletionRate`)\n const reviewMinutes = nonNegativeNumber(observation['reviewMinutes'], `benchmark.observations[${index}].reviewMinutes`)\n const escapedIncomplete = nonNegativeInteger(observation['escapedIncomplete'], `benchmark.observations[${index}].escapedIncomplete`)\n const evidenceDigest = sha256(observation['evidenceDigest'], `benchmark.observations[${index}].evidenceDigest`)\n const rawEvidence = observation['evidence'] === undefined ? undefined : Array.isArray(observation['evidence']) ? observation['evidence'] : fail(`benchmark.observations[${index}].evidence must be an array.`, 'INVALID_CONFIG')\n const evidence = rawEvidence?.map((item, evidenceIndex) => {\n if (typeof item !== 'object' || item === null || Array.isArray(item)) fail(`benchmark.observations[${index}].evidence[${evidenceIndex}] must be an object.`, 'INVALID_CONFIG')\n const entry = item as Record<string, unknown>\n const criterion = nonEmptyString(entry['criterion'], `benchmark.observations[${index}].evidence[${evidenceIndex}].criterion`)\n if (!task.acceptanceCriteria.includes(criterion)) fail(`benchmark evidence references unknown criterion: ${criterion}.`, 'INVALID_CONFIG')\n const evidenceStatus = entry['status']\n if (!['passed', 'failed', 'blocked', 'not-run'].includes(String(evidenceStatus))) fail(`benchmark.observations[${index}].evidence[${evidenceIndex}].status is invalid.`, 'INVALID_CONFIG')\n return { criterion, status: evidenceStatus as BenchmarkObservationStatus, source: nonEmptyString(entry['source'], `benchmark.observations[${index}].evidence[${evidenceIndex}].source`) }\n })\n if (evidence && new Set(evidence.map((entry) => entry.criterion)).size !== evidence.length) fail(`benchmark.observations[${index}].evidence criteria must be unique.`, 'INVALID_CONFIG')\n return { taskId, mode: 'baseline' as const, status: status as BenchmarkObservationStatus, source: nonEmptyString(observation['source'], `benchmark.observations[${index}].source`), recordedAt: timestamp(observation['recordedAt'], `benchmark.observations[${index}].recordedAt`), ...(attempts === undefined ? {} : { attempts }), ...(durationMs === undefined ? {} : { durationMs }), ...(durationSamplesMs === undefined ? {} : { durationSamplesMs }), ...(artifactAcceptanceRate === undefined ? {} : { artifactAcceptanceRate }), ...(protocolCompletionRate === undefined ? {} : { protocolCompletionRate }), ...(reviewMinutes === undefined ? {} : { reviewMinutes }), ...(escapedIncomplete === undefined ? {} : { escapedIncomplete }), ...(evidence === undefined ? {} : { evidence }), ...(evidenceDigest === undefined ? {} : { evidenceDigest }) }\n })\n if (new Set(observations.map((observation) => observation.taskId)).size !== observations.length) fail('benchmark allows at most one baseline observation per task.', 'INVALID_CONFIG')\n const provenance = suiteSource(raw['provenance'], 'benchmark.provenance')\n const policy = benchmarkPolicy(raw['policy'])\n return { type: 'agentskit-harness-benchmark-manifest', schemaVersion: BENCHMARK_SCHEMA_VERSION, suiteId: nonEmptyString(raw['suiteId'], 'benchmark.suiteId'), name: nonEmptyString(raw['name'], 'benchmark.name'), ...(provenance === undefined ? {} : { provenance }), tasks, observations, ...(policy === undefined ? {} : { policy }) }\n}\n\nexport const loadBenchmarkManifest = (path: string): BenchmarkManifest => {\n try { return validateBenchmarkManifest(JSON.parse(readFileSync(path, 'utf8')) as unknown) } catch (error) { if (error instanceof SyntaxError) return fail(`Invalid benchmark manifest JSON: ${error.message}`, 'INVALID_CONFIG'); throw error }\n}\n\nexport const recordBenchmarkObservation = (path: string, input: BenchmarkObservationInput): BenchmarkManifest => {\n const originalContent = readFileSync(path, 'utf8')\n const manifest = loadBenchmarkManifest(path)\n const taskId = nonEmptyString(input.taskId, 'benchmark observation.taskId')\n if (!manifest.tasks.some((task) => task.id === taskId)) fail(`benchmark observation references unknown task: ${taskId}.`, 'INVALID_INPUT')\n if (manifest.observations.some((observation) => observation.taskId === taskId)) fail(`benchmark already has an observation for task: ${taskId}.`, 'INVALID_INPUT')\n const observation = validateBenchmarkManifest({\n ...manifest,\n observations: [...manifest.observations, {\n taskId,\n mode: 'baseline',\n status: input.status,\n source: input.source,\n recordedAt: input.recordedAt ?? new Date().toISOString(),\n ...(input.attempts === undefined ? {} : { attempts: input.attempts }),\n ...(input.durationMs === undefined ? {} : { durationMs: input.durationMs }),\n ...(input.durationSamplesMs === undefined ? {} : { durationSamplesMs: input.durationSamplesMs }),\n ...(input.artifactAcceptanceRate === undefined ? {} : { artifactAcceptanceRate: input.artifactAcceptanceRate }),\n ...(input.protocolCompletionRate === undefined ? {} : { protocolCompletionRate: input.protocolCompletionRate }),\n ...(input.reviewMinutes === undefined ? {} : { reviewMinutes: input.reviewMinutes }),\n ...(input.escapedIncomplete === undefined ? {} : { escapedIncomplete: input.escapedIncomplete }),\n ...(input.evidence === undefined ? {} : { evidence: input.evidence }),\n ...(input.evidenceDigest === undefined ? {} : { evidenceDigest: input.evidenceDigest }),\n }],\n })\n const temporaryRoot = mkdtempSync(join(tmpdir(), 'agentskit-harness-baseline-'))\n const temporaryPath = join(temporaryRoot, 'manifest.json')\n try {\n writeFileSync(temporaryPath, `${JSON.stringify(observation, null, 2)}\\n`, 'utf8')\n if (readFileSync(path, 'utf8') !== originalContent) fail('benchmark manifest changed while recording an observation.', 'STALE')\n renameSync(temporaryPath, path)\n } finally {\n rmSync(temporaryRoot, { recursive: true, force: true })\n }\n return observation\n}\n\nconst comparisons = (runs: readonly BenchmarkRun[], manifest: BenchmarkManifest, policy: BenchmarkPolicy): readonly BenchmarkComparison[] => manifest.tasks.map((task) => {\n const taskRuns = runs.filter((run) => run.benchmark?.suiteId === manifest.suiteId && run.benchmark.taskId === task.id)\n const latest = taskRuns.at(-1)\n const baseline = manifest.observations.find((observation) => observation.taskId === task.id)\n const coveredCriteria = new Set((baseline?.evidence ?? []).map((entry) => entry.criterion))\n const baselineEvidenceCoverageRate = baseline ? percentage(coveredCriteria.size, task.acceptanceCriteria.length) : null\n const baselineEvidenceComplete = baselineEvidenceCoverageRate === 1\n const baselineEvidencePassed = baselineEvidenceComplete && (baseline?.evidence?.every((entry) => entry.status === 'passed') ?? false)\n const baselineDeliveryComplete = baseline?.status === 'passed' && baselineEvidencePassed\n const baselineDurationSamples = baseline?.durationSamplesMs ?? (baseline?.durationMs === undefined ? [] : [baseline.durationMs])\n const baselineMedianDurationMs = median(baselineDurationSamples)\n const baselineSamplesSufficient = baselineDurationSamples.length >= policy.minBaselineSamplesPerTask\n const comparable = baseline !== undefined && baseline.status !== 'not-run' && baselineEvidenceComplete && baselineDeliveryComplete && baselineSamplesSufficient && latest?.state === 'COMPLETE'\n const comparability = comparable ? 'comparable' : baseline === undefined ? 'missing-baseline' : baseline.status === 'not-run' ? 'baseline-not-run' : !baselineEvidenceComplete ? 'baseline-evidence-missing' : latest === undefined ? 'harness-not-run' : latest.state !== 'COMPLETE' ? 'harness-not-complete' : !baselineDeliveryComplete ? 'baseline-incomplete' : 'baseline-samples-insufficient'\n const completedTaskRuns = taskRuns.filter((run) => run.state === 'COMPLETE')\n const durationSamplesMs = completedTaskRuns.flatMap((run) => run.durationMs === undefined ? [] : [run.durationMs])\n const medianDurationMs = median(durationSamplesMs)\n const retryCount = count(taskRuns, (run) => run.supersedes !== undefined)\n const attempts = retryCount + (taskRuns.length ? 1 : 0)\n const durationRate = comparable ? improvementRate(baselineMedianDurationMs ?? undefined, medianDurationMs ?? undefined) : null\n const attemptsRate = comparable ? improvementRate(baseline?.attempts, attempts) : null\n const reviewRate = comparable ? improvementRate(baseline?.reviewMinutes, latest?.humanReviewMinutes) : null\n const acceptanceSamples = taskRuns.flatMap((run) => run.artifactAcceptanceRate === undefined ? [] : [run.artifactAcceptanceRate])\n const harnessArtifactAcceptanceRate = acceptanceSamples.length ? Number((acceptanceSamples.reduce((total, rate) => total + rate, 0) / acceptanceSamples.length).toFixed(4)) : null\n const artifactAcceptanceImprovementRate = increaseRate(baseline?.artifactAcceptanceRate, harnessArtifactAcceptanceRate ?? undefined)\n const artifactAcceptanceDelta = increaseDelta(baseline?.artifactAcceptanceRate, harnessArtifactAcceptanceRate)\n const completedRuns = completedTaskRuns.length\n const harnessProtocolCompletionRate = taskRuns.length ? percentage(completedRuns, taskRuns.length) : null\n const protocolCompletionImprovementRate = increaseRate(baseline?.protocolCompletionRate, harnessProtocolCompletionRate ?? undefined)\n const protocolCompletionDelta = increaseDelta(baseline?.protocolCompletionRate, harnessProtocolCompletionRate)\n const escapedIncompleteRate = improvementRate(baseline?.escapedIncomplete, latest?.escapedIncomplete)\n return { taskId: task.id, title: task.title, comparability, comparable, baselineDeliveryComplete, baselineEvidenceCoverageRate, baselineSampleCount: baselineDurationSamples.length, baselineArtifactAcceptanceRate: baseline?.artifactAcceptanceRate ?? null, baselineProtocolCompletionRate: baseline?.protocolCompletionRate ?? null, ...(baselineMedianDurationMs === null ? {} : { baselineMedianDurationMs }), improvement: { durationRate, duration: improvementDirection(durationRate), attemptsRate, attempts: improvementDirection(attemptsRate), reviewRate, review: improvementDirection(reviewRate), artifactAcceptanceRate: artifactAcceptanceImprovementRate, artifactAcceptance: increaseDirection(artifactAcceptanceImprovementRate, artifactAcceptanceDelta), artifactAcceptanceDelta, protocolCompletionRate: protocolCompletionImprovementRate, protocolCompletion: increaseDirection(protocolCompletionImprovementRate, protocolCompletionDelta), protocolCompletionDelta, escapedIncompleteRate, escapedIncomplete: improvementDirection(escapedIncompleteRate) }, ...(baseline ? { baseline } : {}), harness: { attempts, retryCount, completedRuns, durationSamplesMs, ...(medianDurationMs === null ? {} : { medianDurationMs }), ...(harnessArtifactAcceptanceRate === null ? {} : { artifactAcceptanceRate: harnessArtifactAcceptanceRate }), artifactAcceptanceSampleCount: acceptanceSamples.length, protocolCompletionRate: harnessProtocolCompletionRate, protocolCompletionSampleCount: taskRuns.length, latestState: latest?.state ?? 'NOT_RUN', ...(latest ? { latestRunId: latest.runId } : {}), ...(latest?.durationMs === undefined ? {} : { latestDurationMs: latest.durationMs }), checkPassRate: latest ? percentage(latest.checks.passed, latest.checks.total) : null, outcomePassRate: latest ? percentage(latest.outcomes.passed, latest.outcomes.total) : null, evidenceCoverageRate: latest ? percentage(latest.evidence.attached, latest.evidence.total) : null, ...(latest?.escapedIncomplete === undefined ? {} : { escapedIncomplete: latest.escapedIncomplete }), ...(latest?.humanReviewMinutes === undefined ? {} : { humanReviewMinutes: latest.humanReviewMinutes }), humanApproved: latest?.humanApproved ?? false }, confidence: confidence(comparable, completedRuns, policy), ...(comparable && baselineMedianDurationMs !== null && medianDurationMs !== null ? { durationDeltaMs: medianDurationMs - baselineMedianDurationMs } : {}), ...(comparable && baseline?.attempts !== undefined ? { attemptDelta: attempts - baseline.attempts } : {}), ...(comparable && baseline?.reviewMinutes !== undefined && latest?.humanReviewMinutes !== undefined ? { reviewDeltaMinutes: latest.humanReviewMinutes - baseline.reviewMinutes } : {}), ...(baseline?.escapedIncomplete !== undefined && latest?.escapedIncomplete !== undefined ? { escapedIncompleteDelta: latest.escapedIncomplete - baseline.escapedIncomplete } : {}) }\n})\n\nexport const benchmarkRuns = (stateDir: string, manifest?: BenchmarkManifest): BenchmarkReport => {\n const runs = readRuns(stateDir).map(projectRun).sort((left, right) => left.runId.localeCompare(right.runId))\n const policy = manifest?.policy ?? DEFAULT_POLICY\n const reportComparisons = manifest ? comparisons(runs, manifest, policy) : []\n const comparable = reportComparisons.filter((comparison) => comparison.comparable)\n const durationRegressionTaskIds = comparable.filter((comparison) => (comparison.improvement.durationRate ?? 0) < -policy.maxDurationRegressionRate).map((comparison) => comparison.taskId)\n const escapedIncompleteTaskIds = comparable.filter((comparison) => comparison.harness.escapedIncomplete !== 0).map((comparison) => comparison.taskId)\n const reasons = []\n if (comparable.length < policy.minComparableTasks) reasons.push(`requires at least ${policy.minComparableTasks} comparable tasks`)\n const incompleteBaselineTaskIds = reportComparisons.filter((comparison) => comparison.comparability === 'baseline-incomplete').map((comparison) => comparison.taskId)\n if (incompleteBaselineTaskIds.length) reasons.push(`baseline delivery incomplete: ${incompleteBaselineTaskIds.join(', ')}`)\n const baselineSampleGaps = reportComparisons.filter((comparison) => comparison.baselineSampleCount < policy.minBaselineSamplesPerTask).map((comparison) => `${comparison.taskId} (${comparison.baselineSampleCount}/${policy.minBaselineSamplesPerTask})`)\n if (baselineSampleGaps.length) reasons.push(`requires ${policy.minBaselineSamplesPerTask} baseline samples per task: ${baselineSampleGaps.join(', ')}`)\n if (durationRegressionTaskIds.length) reasons.push(`duration regression exceeds ${policy.maxDurationRegressionRate * 100}%: ${durationRegressionTaskIds.join(', ')}`)\n if (policy.requireZeroEscapedIncomplete && escapedIncompleteTaskIds.length) reasons.push(`escaped incomplete delivery: ${escapedIncompleteTaskIds.join(', ')}`)\n const confidenceLevel: BenchmarkConfidence = comparable.length < policy.minComparableTasks ? 'insufficient' : comparable.every((comparison) => comparison.confidence === 'reliable') ? 'reliable' : 'directional'\n const qualityGate: BenchmarkQualityGate = { status: comparable.length < policy.minComparableTasks ? 'insufficient-data' : reasons.length ? 'failed' : 'passed', confidence: confidenceLevel, comparableTaskCount: comparable.length, policy, durationRegressionTaskIds, escapedIncompleteTaskIds, reasons }\n return { type: 'agentskit-harness-benchmark', schemaVersion: BENCHMARK_SCHEMA_VERSION, stateDir, generatedAt: new Date().toISOString(), runs, summary: summarize(runs), comparisons: reportComparisons, qualityGate, ...(manifest ? { manifest: { suiteId: manifest.suiteId, taskCount: manifest.tasks.length, baselineCount: manifest.observations.length, comparableTaskCount: comparable.length } } : {}) }\n}\n","import { createPrivateKey, createPublicKey, sign, verify } from 'node:crypto'\nimport { existsSync, readFileSync, writeFileSync } from 'node:fs'\nimport { join, relative, resolve, sep } from 'node:path'\nimport { fail } from './errors.js'\nimport { fileContents, loadLatestRun, pathInside, readJson } from './files.js'\nimport { sha256 } from './hash.js'\nimport { reconcileRun } from './verification.js'\nimport { FileEventStore } from './events.js'\nimport type { EventLogVerification } from './events.js'\nimport { loadConfig } from './config.js'\nimport type { VerificationRun } from './types.js'\n\nexport const EVIDENCE_BUNDLE_SCHEMA_VERSION = 1 as const\n\nexport interface EvidenceBundleFile {\n readonly path: string\n readonly sha256: string\n readonly contentBase64: string\n}\n\nexport interface EvidenceBundleSignature {\n readonly algorithm: 'ed25519'\n readonly keyId: string\n readonly publicKeyPem: string\n readonly signatureBase64: string\n}\n\nexport interface TrustedEvidenceKey {\n readonly keyId: string\n readonly publicKeyPem: string\n readonly status: 'active' | 'revoked'\n}\n\nexport interface EvidenceBundle {\n readonly type: 'agentskit-harness-evidence-bundle'\n readonly schemaVersion: typeof EVIDENCE_BUNDLE_SCHEMA_VERSION\n readonly runId: string\n readonly signerKeyId: string\n readonly sourceRevision: string\n readonly configHash: string\n readonly contractHash: string\n readonly verificationDigest: string\n readonly eventLog: EventLogVerification\n readonly files: readonly EvidenceBundleFile[]\n readonly payloadHash: string\n readonly signature: EvidenceBundleSignature\n}\n\nexport interface EvidenceBundleVerification {\n readonly status: 'verified'\n readonly runId: string\n readonly payloadHash: string\n readonly fileCount: number\n readonly signed: true\n}\n\nconst body = (bundle: EvidenceBundle): Omit<EvidenceBundle, 'payloadHash' | 'signature'> => {\n const { payloadHash: _payloadHash, signature: _signature, ...unsigned } = bundle\n return unsigned\n}\nconst parseBundle = (path: string): EvidenceBundle => {\n try { return JSON.parse(fileContents(path)) as EvidenceBundle } catch (error) { return fail(`Invalid evidence bundle JSON: ${error instanceof Error ? error.message : String(error)}`, 'INVALID_INPUT') }\n}\nconst validDigest = (value: unknown): value is string => typeof value === 'string' && /^[a-f0-9]{64}$/.test(value)\nconst validKeyId = (value: unknown): value is string => typeof value === 'string' && /^[A-Za-z0-9._:-]{1,128}$/.test(value)\nconst requireRun = (run: VerificationRun | null): VerificationRun => run ?? fail('No verification run exists.', 'NO_RUN')\nconst bundleFile = (stateDir: string, path: string): EvidenceBundleFile => {\n const absolute = resolve(stateDir, path)\n if (!pathInside(stateDir, absolute)) fail(`Evidence path escapes state directory: ${path}`, 'HARNESS_ERROR')\n const content = readFileSync(absolute)\n return { path: relative(stateDir, absolute).split(sep).join('/'), sha256: sha256(content), contentBase64: content.toString('base64') }\n}\n\nexport const exportEvidenceBundle = async ({ configPath, runId, outputPath, privateKeyPath, keyId }: { readonly configPath: string; readonly runId?: string; readonly outputPath: string; readonly privateKeyPath: string; readonly keyId: string }): Promise<EvidenceBundle> => {\n if (!validKeyId(keyId)) fail('keyId must contain only letters, numbers, dot, underscore, colon, or hyphen.', 'INVALID_INPUT')\n const loaded = loadConfig(configPath)\n const run = requireRun((runId ? readJson(join(loaded.stateDir, 'runs', runId, 'run.json')) : loadLatestRun(loaded.stateDir)) as VerificationRun | null)\n const reconciliation = await reconcileRun({ configPath, runId: run.runId })\n const digest = run.verificationDigest ?? fail('Only a reconciled COMPLETE run can be exported.', 'INVALID_STATE')\n if (reconciliation.state !== 'COMPLETE') fail('Only a reconciled COMPLETE run can be exported.', 'INVALID_STATE')\n const eventLog = new FileEventStore(loaded.stateDir)\n eventLog.read(run.runId)\n const eventVerification = eventLog.verify(run.runId)\n const paths = new Set(['runs/' + run.runId + '/run.json', 'runs/' + run.runId + '/events.ndjson'])\n for (const reference of run.evidenceReferences) { paths.add(reference.stdout); paths.add(reference.stderr) }\n const files = [...paths].map((path) => {\n if (!existsSync(resolve(loaded.stateDir, path))) fail(`Evidence file is missing: ${path}`, 'HARNESS_ERROR')\n return bundleFile(loaded.stateDir, path)\n })\n const privateKey = createPrivateKey(readFileSync(privateKeyPath))\n const unsigned = { type: 'agentskit-harness-evidence-bundle' as const, schemaVersion: EVIDENCE_BUNDLE_SCHEMA_VERSION, runId: run.runId, signerKeyId: keyId, sourceRevision: run.sourceRevision, configHash: run.configHash, contractHash: run.contractHash, verificationDigest: digest, eventLog: eventVerification, files }\n const payloadHash = sha256(JSON.stringify(unsigned))\n const publicKeyPem = createPublicKey(privateKey).export({ type: 'spki', format: 'pem' }).toString()\n const bundle = { ...unsigned, payloadHash, signature: { algorithm: 'ed25519' as const, keyId, publicKeyPem, signatureBase64: sign(null, Buffer.from(payloadHash), privateKey).toString('base64') } }\n writeFileSync(outputPath, `${JSON.stringify(bundle, null, 2)}\\n`, 'utf8')\n return bundle\n}\n\nexport const verifyEvidenceBundle = (path: string, { trustedKeys = [] }: { readonly trustedKeys?: readonly TrustedEvidenceKey[] } = {}): EvidenceBundleVerification => {\n const bundle = parseBundle(path)\n if (bundle.type !== 'agentskit-harness-evidence-bundle' || bundle.schemaVersion !== EVIDENCE_BUNDLE_SCHEMA_VERSION || !bundle.runId || !validKeyId(bundle.signerKeyId) || !validDigest(bundle.payloadHash) || bundle.signature?.algorithm !== 'ed25519' || bundle.signature.keyId !== bundle.signerKeyId || typeof bundle.signature.publicKeyPem !== 'string' || typeof bundle.signature.signatureBase64 !== 'string' || !Array.isArray(bundle.files)) fail('Evidence bundle metadata is invalid.', 'HARNESS_ERROR')\n if (trustedKeys.length) {\n const trusted = trustedKeys.find((key) => key.keyId === bundle.signerKeyId)\n if (!trusted) return fail(`Evidence bundle key is not trusted: ${bundle.signerKeyId}`, 'HARNESS_ERROR')\n if (trusted.status === 'revoked') fail(`Evidence bundle key is revoked: ${bundle.signerKeyId}`, 'HARNESS_ERROR')\n if (trusted.publicKeyPem !== bundle.signature.publicKeyPem) fail(`Evidence bundle key does not match trust store: ${bundle.signerKeyId}`, 'HARNESS_ERROR')\n }\n const paths = new Set<string>()\n for (const file of bundle.files) {\n if (!file || typeof file.path !== 'string' || paths.has(file.path) || !validDigest(file.sha256) || typeof file.contentBase64 !== 'string') fail('Evidence bundle file metadata is invalid.', 'HARNESS_ERROR')\n paths.add(file.path)\n const content = Buffer.from(file.contentBase64, 'base64')\n if (sha256(content) !== file.sha256) fail(`Evidence bundle file hash mismatch: ${file.path}`, 'HARNESS_ERROR')\n }\n if (!paths.has(`runs/${bundle.runId}/run.json`) || !paths.has(`runs/${bundle.runId}/events.ndjson`)) fail('Evidence bundle is missing the run projection or event log.', 'HARNESS_ERROR')\n if (sha256(JSON.stringify(body(bundle))) !== bundle.payloadHash) fail('Evidence bundle payload hash mismatch.', 'HARNESS_ERROR')\n let valid = false\n try { valid = verify(null, Buffer.from(bundle.payloadHash), createPublicKey(bundle.signature.publicKeyPem), Buffer.from(bundle.signature.signatureBase64, 'base64')) } catch { valid = false }\n if (!valid) fail('Evidence bundle signature is invalid.', 'HARNESS_ERROR')\n return { status: 'verified', runId: bundle.runId, payloadHash: bundle.payloadHash, fileCount: bundle.files.length, signed: true }\n}\n\nexport const readEvidenceTrustStore = (path: string): readonly TrustedEvidenceKey[] => {\n const value = readJson(path) as { readonly schemaVersion?: unknown; readonly keys?: unknown }\n if (value.schemaVersion !== 1 || !Array.isArray(value.keys)) fail('Evidence trust store must contain schemaVersion 1 and a keys array.', 'INVALID_INPUT')\n return (value.keys as readonly unknown[]).map((key: unknown, index: number) => {\n if (typeof key !== 'object' || key === null || Array.isArray(key) || !validKeyId((key as Record<string, unknown>)['keyId']) || typeof (key as Record<string, unknown>)['publicKeyPem'] !== 'string' || ((key as Record<string, unknown>)['status'] !== 'active' && (key as Record<string, unknown>)['status'] !== 'revoked')) fail(`Invalid evidence trust store key at index ${index}.`, 'INVALID_INPUT')\n return key as TrustedEvidenceKey\n })\n}\n","#!/usr/bin/env node\nimport { createHash } from 'node:crypto'\nimport { readFileSync } from 'node:fs'\nimport { Command } from 'commander'\nimport { approveRun, authorizeRun, benchmarkRuns, cancelRun, cleanTaskArtifacts, createDocBridgeContextProvider, exportEvidenceBundle, loadBenchmarkManifest, loadConfig, loadLatestRun, planRun, readContextSnapshots, readEvidenceTrustStore, reconcileRun, recordBenchmarkObservation, retryRun, startRun, verifyEvidenceBundle, verifyRun } from './index.js'\nimport type { BenchmarkObservationEvidence } from './metrics.js'\nimport { fail } from './errors.js'\nimport { FileEventStore, inspectEventLogLock, recoverEventLogLock } from './events.js'\n\ninterface CliOptions { readonly config: string; readonly json: boolean }\nconst packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) as { readonly version: string }\nconst program = new Command()\nprogram.name('ak-harness').description('Portable, evidence-backed development harness for coding agents.').version(packageJson.version).option('-c, --config <path>', 'verification contract path', '.codex/verification.json').option('--json', 'emit machine-readable output')\nconst options = (): CliOptions => program.opts<CliOptions>()\nconst print = (value: unknown): void => { if (options().json) console.log(JSON.stringify(value)); else console.log(typeof value === 'string' ? value : JSON.stringify(value, null, 2)) }\nconst readBenchmarkEvidence = (path: string): { readonly evidence: readonly BenchmarkObservationEvidence[]; readonly digest: string } => {\n try {\n const content = readFileSync(path, 'utf8')\n const raw = JSON.parse(content) as unknown\n const evidence = Array.isArray(raw) ? raw : typeof raw === 'object' && raw !== null ? (raw as { readonly evidence?: unknown }).evidence : undefined\n if (Array.isArray(evidence)) return { evidence: evidence as BenchmarkObservationEvidence[], digest: createHash('sha256').update(content).digest('hex') }\n } catch (error) {\n fail(`Invalid benchmark evidence JSON: ${error instanceof Error ? error.message : String(error)}`, 'INVALID_INPUT')\n }\n return fail('benchmark evidence file must contain an array or an object with an evidence array.', 'INVALID_INPUT')\n}\nconst decisionArgs = (first: string, second: string | undefined): { readonly decision: string; readonly runId?: string } => {\n const decisions = new Set(['approved', 'approve', 'yes', 'ok', 'rejected', 'reject', 'no'])\n return decisions.has(first) ? { decision: first, ...(second ? { runId: second } : {}) } : { decision: second ?? '', runId: first }\n}\nprogram.command('doctor').description('Validate the contract without starting a run.').action(() => print({ status: 'passed', criteria: ['package'], config: loadConfig(options().config).config }))\nprogram.command('plan <decision>').description('Prepare or approve the frozen task contract and create a planned run.').option('--by <actor>', 'planner: human approval or ci preparation', 'human').option('--allow-dirty', 'allow a human-authorized dirty worktree').option('--context-file <path>', 'attach a context snapshot JSON file').action(async (decision: string, command: { readonly by: string; readonly allowDirty?: boolean; readonly contextFile?: string }) => print(await planRun({ configPath: options().config, decision, actor: command.by, allowDirty: command.allowDirty ?? false, contextSnapshots: command.contextFile ? readContextSnapshots(command.contextFile) : [] })))\nconst context = program.command('context').description('Resolve portable, provenance-bearing context snapshots.')\ncontext.command('resolve <query>').description('Resolve a Doc Bridge snapshot from the local index.').option('--provider <provider>', 'context provider', 'doc-bridge').option('--scope <scope...>', 'optional search scopes').option('--index <path>', 'Doc Bridge index path', '.doc-bridge/index.json').action(async (query: string, command: { readonly provider: string; readonly scope?: readonly string[]; readonly index: string }) => {\n if (command.provider !== 'doc-bridge') fail(`Unsupported context provider: ${command.provider}`, 'INVALID_INPUT')\n const loaded = loadConfig(options().config)\n print(await createDocBridgeContextProvider({ root: loaded.root, indexPath: command.index }).resolve({ query, ...(command.scope?.length ? { scope: command.scope } : {}) }))\n})\nprogram.command('start').description('Move a planned run into implementation.').action(() => print(startRun(loadConfig(options().config))))\nprogram.command('verify').description('Execute every configured check and record evidence.').action(async () => print(await verifyRun({ configPath: options().config })))\nprogram.command('run').description('Alias for verify, compatible with the common protocol.').action(async () => print(await verifyRun({ configPath: options().config })))\nprogram.command('approve <run-id-or-decision> [decision-or-run-id]').description('Record human approval or rejection. Accepts <run-id> <decision> or <decision> <run-id>.').option('--by <actor>', 'approval actor', 'human').action(async (first: string, second: string | undefined, command: { readonly by: string }) => { const args = decisionArgs(first, second); print(await approveRun({ configPath: options().config, ...args, actor: command.by })) })\nprogram.command('authorize <run-id-or-decision> [decision-or-run-id]').description('Authorize or reject declared external tracking. Accepts <run-id> <decision> or <decision> <run-id>.').option('--by <actor>', 'approval actor', 'human').action(async (first: string, second: string | undefined, command: { readonly by: string }) => { const args = decisionArgs(first, second); print(await authorizeRun({ configPath: options().config, ...args, actor: command.by })) })\nprogram.command('retry').description('Create a new implementation attempt after a blocked or stale run.').action(async () => print(await retryRun({ configPath: options().config })))\nprogram.command('cancel [run-id]').description('Cancel an active run.').option('--by <actor>', 'cancellation actor', 'human').option('--reason <reason>', 'cancellation reason', 'Run cancelled by a human.').action(async (runId: string | undefined, command: { readonly by: string; readonly reason: string }) => print(await cancelRun({ configPath: options().config, runId, reason: command.reason, actor: command.by })))\nprogram.command('status').description('Show the latest run after reconciling its audit evidence.').action(async () => { const loaded = loadConfig(options().config); print(loadLatestRun(loaded.stateDir) ? await reconcileRun({ configPath: options().config }) : { state: 'CLARIFYING', message: 'No run exists.' }) })\nprogram.command('audit [run-id]').description('Reconcile a run projection with its verified lifecycle decisions.').action(async (runId?: string) => print(await reconcileRun({ configPath: options().config, runId })))\nconst events = program.command('events').description('Inspect the lifecycle audit log.')\nevents.command('verify [run-id]').description('Verify the latest or selected event log hash chain.').action((runId?: string) => { const loaded = loadConfig(options().config); const run = runId ? { runId } : loadLatestRun(loaded.stateDir); const selectedRunId = run?.runId ?? fail('No verification run exists.', 'NO_RUN'); print(new FileEventStore(loaded.stateDir).verify(selectedRunId)) })\nevents.command('lock [run-id]').description('Inspect the latest or selected event-log lock.').action((runId?: string) => { const loaded = loadConfig(options().config); const run = runId ? { runId } : loadLatestRun(loaded.stateDir); const selectedRunId = run?.runId ?? fail('No verification run exists.', 'NO_RUN'); print(inspectEventLogLock(loaded.stateDir, selectedRunId)) })\nevents.command('unlock [run-id]').description('Recover an old event-log lock after confirming its owner is dead.').option('--by <actor>', 'recovery actor', 'human').option('--max-age-ms <milliseconds>', 'minimum lock age', (value) => Number(value), 300_000).action((runId: string | undefined, command: { readonly by: string; readonly maxAgeMs: number }) => { const loaded = loadConfig(options().config); const run = runId ? { runId } : loadLatestRun(loaded.stateDir); const selectedRunId = run?.runId ?? fail('No verification run exists.', 'NO_RUN'); print(recoverEventLogLock({ stateDir: loaded.stateDir, runId: selectedRunId, actor: command.by, maxAgeMs: command.maxAgeMs })) })\nevents.command('export [run-id]').description('Export a reconciled COMPLETE run as a signed evidence bundle.').requiredOption('--output <path>', 'bundle output path').requiredOption('--private-key <path>', 'Ed25519 private key path').requiredOption('--key-id <id>', 'stable signing key identity').action(async (runId: string | undefined, command: { readonly output: string; readonly privateKey: string; readonly keyId: string }) => print(await exportEvidenceBundle({ configPath: options().config, runId, outputPath: command.output, privateKeyPath: command.privateKey, keyId: command.keyId })))\nevents.command('verify-bundle <path>').description('Verify an exported signed evidence bundle independently.').option('--trusted-key-store <path>', 'JSON trust store with active or revoked public keys').action((path: string, command: { readonly trustedKeyStore?: string }) => print(verifyEvidenceBundle(path, { trustedKeys: command.trustedKeyStore ? readEvidenceTrustStore(command.trustedKeyStore) : [] })))\nconst benchmark = program.command('benchmark').description('Aggregate reproducible metrics from historical runs.').option('--manifest <path>', 'benchmark manifest for baseline comparison').action((command: { readonly manifest?: string }) => { const loaded = loadConfig(options().config); print(benchmarkRuns(loaded.stateDir, command.manifest ? loadBenchmarkManifest(command.manifest) : undefined)) })\nbenchmark.command('baseline <taskId>').description('Record one controlled baseline observation in a benchmark manifest.').option('--manifest <path>', 'benchmark manifest path').requiredOption('--status <status>', 'passed, failed, blocked, or not-run').requiredOption('--source <source>', 'baseline source or run reference').option('--evidence-file <path>', 'JSON file with criterion-level baseline evidence').option('--recorded-at <timestamp>', 'ISO-8601 timestamp').option('--attempts <count>', 'attempt count', (value) => Number(value)).option('--duration-ms <milliseconds>', 'duration in milliseconds', (value) => Number(value)).option('--review-minutes <minutes>', 'human review time in minutes', (value) => Number(value)).option('--escaped-incomplete <count>', 'incomplete deliveries discovered after handoff', (value) => Number(value)).action((taskId: string, command: { readonly manifest?: string; readonly status: string; readonly source: string; readonly evidenceFile?: string; readonly recordedAt?: string; readonly attempts?: number; readonly durationMs?: number; readonly reviewMinutes?: number; readonly escapedIncomplete?: number }, cliCommand: Command) => {\n const manifest = command.manifest ?? cliCommand.parent?.opts<{ readonly manifest?: string }>().manifest\n const manifestPath = manifest ?? fail('baseline requires --manifest <path>.', 'INVALID_INPUT')\n const status = ['passed', 'failed', 'blocked', 'not-run'].includes(command.status) ? command.status as 'passed' | 'failed' | 'blocked' | 'not-run' : fail('status must be passed, failed, blocked, or not-run.', 'INVALID_INPUT')\n const evidence = command.evidenceFile ? readBenchmarkEvidence(command.evidenceFile) : undefined\n print(recordBenchmarkObservation(manifestPath, { taskId, status, source: command.source, ...(evidence ? { evidence: evidence.evidence, evidenceDigest: evidence.digest } : {}), ...(command.recordedAt ? { recordedAt: command.recordedAt } : {}), ...(command.attempts === undefined ? {} : { attempts: command.attempts }), ...(command.durationMs === undefined ? {} : { durationMs: command.durationMs }), ...(command.reviewMinutes === undefined ? {} : { reviewMinutes: command.reviewMinutes }), ...(command.escapedIncomplete === undefined ? {} : { escapedIncomplete: command.escapedIncomplete }) }))\n})\nprogram.command('clean').description('Remove only configured task-owned temporary artifacts.').action(() => print(cleanTaskArtifacts(options().config)))\nprocess.on('SIGINT', () => { process.stderr.write('Cancelled.\\n'); process.exitCode = 130 })\ntry { await program.parseAsync(process.argv) } catch (error) { const value = error instanceof Error ? error : new Error(String(error)); process.stderr.write(`${'code' in value ? String(value.code) : 'HARNESS_ERROR'}: ${value.message}\\n`); process.exitCode = 'code' in value && value.code === 'INVALID_INPUT' ? 2 : 1 }\n"]}
|