@tangle-network/agent-eval 0.119.0 → 0.120.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +25 -3
  2. package/README.md +0 -26
  3. package/dist/analyst/index.d.ts +30 -39
  4. package/dist/analyst/index.js +9 -5
  5. package/dist/analyst/index.js.map +1 -1
  6. package/dist/benchmarks/index.d.ts +11 -5
  7. package/dist/benchmarks/index.js +7 -7
  8. package/dist/campaign/index.d.ts +121 -66
  9. package/dist/campaign/index.js +26 -10
  10. package/dist/{chunk-RLCJQ6VZ.js → chunk-32BZXMSO.js} +385 -120
  11. package/dist/chunk-32BZXMSO.js.map +1 -0
  12. package/dist/{chunk-XJ7JVCHB.js → chunk-3A246TSA.js} +2 -2
  13. package/dist/{chunk-LMJ2TGWJ.js → chunk-JM2SKQMS.js} +2 -2
  14. package/dist/{chunk-F6YUH3L4.js → chunk-JN2FCO5W.js} +14 -168
  15. package/dist/chunk-JN2FCO5W.js.map +1 -0
  16. package/dist/{chunk-D7AEXSM5.js → chunk-PICTDURQ.js} +2 -2
  17. package/dist/{chunk-6QIM2EAP.js → chunk-PXD6ZFNY.js} +99 -1
  18. package/dist/chunk-PXD6ZFNY.js.map +1 -0
  19. package/dist/{chunk-GERDAIAL.js → chunk-QWMPPZ3X.js} +3 -3
  20. package/dist/{chunk-7A4LIMMY.js → chunk-S5TT5R3L.js} +229 -97
  21. package/dist/chunk-S5TT5R3L.js.map +1 -0
  22. package/dist/{chunk-ZYHJNKI3.js → chunk-ULOKLHIQ.js} +42 -5
  23. package/dist/chunk-ULOKLHIQ.js.map +1 -0
  24. package/dist/{chunk-FIUFRXP3.js → chunk-WW2A73HW.js} +49 -91
  25. package/dist/chunk-WW2A73HW.js.map +1 -0
  26. package/dist/{chunk-PAHNGS65.js → chunk-XDIRG3TO.js} +175 -11
  27. package/dist/chunk-XDIRG3TO.js.map +1 -0
  28. package/dist/contract/index.d.ts +76 -43
  29. package/dist/contract/index.js +596 -32
  30. package/dist/contract/index.js.map +1 -1
  31. package/dist/index.d.ts +92 -75
  32. package/dist/index.js +38 -35
  33. package/dist/index.js.map +1 -1
  34. package/dist/openapi.json +1 -1
  35. package/dist/rl.d.ts +11 -5
  36. package/dist/{run-campaign-OBXSN5WK.js → run-campaign-HNFPJET4.js} +2 -2
  37. package/dist/traces.d.ts +39 -25
  38. package/dist/traces.js +3 -5
  39. package/docs/trace-analysis.md +6 -2
  40. package/package.json +2 -7
  41. package/dist/chunk-6QIM2EAP.js.map +0 -1
  42. package/dist/chunk-7A4LIMMY.js.map +0 -1
  43. package/dist/chunk-F6YUH3L4.js.map +0 -1
  44. package/dist/chunk-FIUFRXP3.js.map +0 -1
  45. package/dist/chunk-PAHNGS65.js.map +0 -1
  46. package/dist/chunk-RLCJQ6VZ.js.map +0 -1
  47. package/dist/chunk-ZYHJNKI3.js.map +0 -1
  48. package/dist/primeintellect/index.d.ts +0 -311
  49. package/dist/primeintellect/index.js +0 -348
  50. package/dist/primeintellect/index.js.map +0 -1
  51. /package/dist/{chunk-XJ7JVCHB.js.map → chunk-3A246TSA.js.map} +0 -0
  52. /package/dist/{chunk-LMJ2TGWJ.js.map → chunk-JM2SKQMS.js.map} +0 -0
  53. /package/dist/{chunk-D7AEXSM5.js.map → chunk-PICTDURQ.js.map} +0 -0
  54. /package/dist/{chunk-GERDAIAL.js.map → chunk-QWMPPZ3X.js.map} +0 -0
  55. /package/dist/{run-campaign-OBXSN5WK.js.map → run-campaign-HNFPJET4.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { AxAIService, AxFunction } from '@ax-llm/ax';
2
+ import { AxAIService, AxAgentActorTurnCallbackArgs, AxFunction, AxAIArgs } from '@ax-llm/ax';
3
3
  import { AgentProfile } from '@tangle-network/agent-interface';
4
4
 
5
5
  /**
@@ -1279,12 +1279,14 @@ interface AnalystCost {
1279
1279
  est_usd_per_run?: number;
1280
1280
  /** Models the analyst expects to use (informational). */
1281
1281
  models?: string[];
1282
+ /** Maximum post-cancellation wait for provider usage. Model analysts default to 5 seconds. */
1283
+ settlement_timeout_ms?: number;
1282
1284
  }
1283
1285
  interface AnalystContext {
1284
1286
  runId: string;
1285
1287
  /** Stable correlation id so logs from a single registry.run() share a tag. */
1286
1288
  correlationId: string;
1287
- /** Wall-clock deadline (epoch ms). Analysts SHOULD honor for graceful cancel. */
1289
+ /** Enforced wall-clock deadline (epoch ms). */
1288
1290
  deadlineMs?: number;
1289
1291
  /** Per-analyst USD budget. Analysts MAY check before issuing LLM calls. */
1290
1292
  budgetUsd?: number;
@@ -1453,6 +1455,10 @@ interface Scenario {
1453
1455
  kind: string;
1454
1456
  tags?: string[];
1455
1457
  }
1458
+ /** Redacted identity of a complete scenario payload retained in campaign results. */
1459
+ interface CampaignScenarioIdentity extends Pick<Scenario, 'id' | 'kind'> {
1460
+ scenarioDigest: `sha256:${string}`;
1461
+ }
1456
1462
  /** Context handed to every dispatch invocation. Scoped — every
1457
1463
  * trace/span carries the cellId, every artifact write lands under the cell's
1458
1464
  * artifact root, the cost meter accumulates per cell. */
@@ -2035,7 +2041,11 @@ interface CampaignAggregates {
2035
2041
  interface CampaignResult<TArtifact = unknown, TScenario extends Scenario = Scenario> {
2036
2042
  /** sha256(scenarios, judges, dispatch source ref, optimizer config, seed). Stable identity for reruns. */
2037
2043
  manifestHash: string;
2044
+ /** Canonical identity of the exact scenario payloads and replicate count. */
2045
+ splitDigest: `sha256:${string}`;
2038
2046
  seed: number;
2047
+ /** Replicates designed for every scenario in this campaign. */
2048
+ reps: number;
2039
2049
  startedAt: string;
2040
2050
  endedAt: string;
2041
2051
  durationMs: number;
@@ -2049,11 +2059,9 @@ interface CampaignResult<TArtifact = unknown, TScenario extends Scenario = Scena
2049
2059
  prUrl?: string;
2050
2060
  runDir: string;
2051
2061
  artifactsByPath: Record<string, string>;
2052
- /** Substrate strips the input scenarios to id+kind for the result manifest;
2053
- * consumers needing full payload look it up via the original input. The
2054
- * type parameter `TScenario` is propagated for downstream consumers that
2055
- * want narrowed types when extending `CampaignResult`. */
2056
- scenarios: Array<Pick<TScenario, 'id' | 'kind'>>;
2062
+ /** Redacted identities that let consumers verify the exact scenario payloads
2063
+ * without retaining customer task content in the result. */
2064
+ scenarios: Array<CampaignScenarioIdentity & Pick<TScenario, 'id' | 'kind'>>;
2057
2065
  }
2058
2066
 
2059
2067
  /**
@@ -2157,11 +2165,11 @@ interface AnalyzeTracesInput {
2157
2165
  question: string;
2158
2166
  }
2159
2167
  interface AnalyzeTracesResult {
2160
- /** The responder's prose answer. */
2168
+ /** The actor's submitted prose answer. */
2161
2169
  answer: string;
2162
- /** Bulleted findings extracted from the responder's structured output. */
2170
+ /** Bulleted findings from the actor's structured completion. */
2163
2171
  findings: string[];
2164
- /** Per-actor-turn snapshots captured via `actorTurnCallback`. */
2172
+ /** Per-turn snapshots captured via `actorTurnCallback`. */
2165
2173
  turns: AnalyzeTracesTurnSnapshot[];
2166
2174
  /** Total turns the actor took. */
2167
2175
  turnCount: number;
@@ -2187,13 +2195,14 @@ interface TraceAnalystChatMessage {
2187
2195
  [key: string]: unknown;
2188
2196
  }
2189
2197
  interface AnalyzeTracesTurnSnapshot {
2198
+ stage: AxAgentActorTurnCallbackArgs['stage'];
2190
2199
  turn: number;
2191
2200
  isError: boolean;
2192
2201
  /** The JS code the actor produced for this turn. */
2193
2202
  code: string;
2194
2203
  /** The formatted action-log entry the actor sees on the next turn. */
2195
2204
  output: string;
2196
- /** Provider thought (when `actorOptions.showThoughts` is true and the
2205
+ /** Provider thought (when `executorOptions.showThoughts` is true and the
2197
2206
  * provider returns it). */
2198
2207
  thought?: string;
2199
2208
  }
@@ -2202,18 +2211,18 @@ interface AnalyzeTracesOptions {
2202
2211
  source: string | TraceAnalysisStore;
2203
2212
  /** Caller-provided AxAIService. */
2204
2213
  ai: AxAIService;
2205
- /** Model id forwarded to actor + responder. */
2214
+ /** Model id forwarded to the actor. */
2206
2215
  model?: string;
2207
- /** Recursion depth. 0 = no sub-agent dispatch. Default 1. */
2208
- maxDepth?: number;
2216
+ /** Maximum model subqueries. 0 disables model fan-out. Default 4. */
2217
+ maxSubqueries?: number;
2209
2218
  /** Maximum actor turns. Default 12. */
2210
2219
  maxTurns?: number;
2211
- /** Maximum parallel sub-agent calls in batched llmQuery. Default 2. */
2212
- maxParallelSubagents?: number;
2220
+ /** Maximum parallel model subqueries. Default 2. */
2221
+ maxParallelSubqueries?: number;
2222
+ /** Cancels in-flight model and tool work. */
2223
+ signal?: AbortSignal;
2213
2224
  /** Override the actor description. */
2214
2225
  actorDescription?: string;
2215
- /** Override the subagent description. */
2216
- subagentDescription?: string;
2217
2226
  /** Per-turn observability hook. */
2218
2227
  onTurn?: (turn: AnalyzeTracesTurnSnapshot) => void | Promise<void>;
2219
2228
  /** Override max runtime characters per turn. Default 6000. */
@@ -2221,8 +2230,7 @@ interface AnalyzeTracesOptions {
2221
2230
  /** When set, every turn's snapshot is appended to this JSONL file
2222
2231
  * immediately. If the analyst crashes mid-loop (provider 503,
2223
2232
  * network error, validator reject) the partial reasoning is still
2224
- * on disk. Replay the file with the responder afterward to recover
2225
- * evidence. */
2233
+ * on disk for diagnosis and recovery. */
2226
2234
  progressLogPath?: string;
2227
2235
  }
2228
2236
 
@@ -2382,6 +2390,17 @@ interface OpenAutoPrResult {
2382
2390
  */
2383
2391
  declare function openAutoPr<TArtifact, TScenario extends Scenario>(options: OpenAutoPrOptions<TArtifact, TScenario>): OpenAutoPrResult;
2384
2392
 
2393
+ /** Reject campaign designs whose denominator cannot be identified exactly. */
2394
+ declare function assertCampaignDesign<TScenario extends Scenario>(scenarios: readonly TScenario[], reps: number): void;
2395
+ /** Redacted but independently verifiable identity of one complete scenario. */
2396
+ declare function campaignScenarioIdentity<TScenario extends Scenario>(scenario: TScenario): CampaignScenarioIdentity & Pick<TScenario, 'id' | 'kind'>;
2397
+ /** Canonical split identity reconstructed from redacted scenario identities. */
2398
+ declare function campaignSplitDigestFromIdentities(scenarios: readonly CampaignScenarioIdentity[], reps: number): `sha256:${string}`;
2399
+ /** Canonical identity of the exact scenario payloads and replicate count. */
2400
+ declare function campaignSplitDigest<TScenario extends Scenario>(scenarios: readonly TScenario[], reps: number): `sha256:${string}`;
2401
+ /** Refuse a campaign whose retained task identities contradict its split digest. */
2402
+ declare function assertCampaignSplitIdentity(scenarios: readonly CampaignScenarioIdentity[], reps: number, splitDigest: string): void;
2403
+
2385
2404
  interface ContinuousAgreement {
2386
2405
  /** Cohen's κ_w with quadratic weights, computed on raw [0,1] scores. */
2387
2406
  weightedKappa: number;
@@ -2975,6 +2994,7 @@ interface CampaignRunPlanCell {
2975
2994
  }
2976
2995
  interface CampaignRunPlan {
2977
2996
  manifestHash: string;
2997
+ splitDigest: `sha256:${string}`;
2978
2998
  totalCells: number;
2979
2999
  cellsCached: number;
2980
3000
  cellsToRun: number;
@@ -4084,17 +4104,6 @@ interface ParameterSweepProposerOptions {
4084
4104
  /** Config/parameter-level proposer for FAPO's middle escalation level. */
4085
4105
  declare function parameterSweepProposer(opts: ParameterSweepProposerOptions): SurfaceProposer;
4086
4106
 
4087
- /** Fail when a code surface does not carry a complete immutable identity. */
4088
- declare function assertCodeSurfaceIdentity(surface: unknown): asserts surface is CodeSurface;
4089
- /** Canonical, location-independent identity of a finalized code candidate.
4090
- * Commit metadata is excluded: two commits with the same base, final tree,
4091
- * and patch bytes are the same executable candidate. */
4092
- declare function codeSurfaceIdentityMaterial(surface: CodeSurface): string;
4093
- /** Full SHA-256 content identity for a prompt or finalized code surface. */
4094
- declare function surfaceContentHash(surface: MutableSurface): `sha256:${string}`;
4095
- /** Short loop key derived from the same content identity as provenance. */
4096
- declare function surfaceHash(surface: MutableSurface): string;
4097
-
4098
4107
  /**
4099
4108
  * `runOptimization` — the improvement loop body. Runs N generations: the
4100
4109
  * `SurfaceProposer` proposes K candidate surfaces per generation, each
@@ -4219,8 +4228,8 @@ declare function runOptimization<TScenario extends Scenario, TArtifact>(opts: Ru
4219
4228
  *
4220
4229
  * Hard-refuses unsafe configurations:
4221
4230
  * - `tracing: 'off'` when a proposer is wired (improvement is unattributable)
4222
- * - `autoOnPromote: 'config'` — DEFERRED to Pass B; v0.40 only ships
4223
- * `'pr'` and `'none'`.
4231
+ * - `autoOnPromote: 'config'` — live mutation is unsupported without
4232
+ * isolated deployment, rollback, and independent validation.
4224
4233
  */
4225
4234
 
4226
4235
  type RunImprovementLoopOptions<TScenario extends Scenario, TArtifact> = RunOptimizationOptions<TScenario, TArtifact> & {
@@ -4234,15 +4243,11 @@ type RunImprovementLoopOptions<TScenario extends Scenario, TArtifact> = RunOptim
4234
4243
  /** What to do when the gate ships:
4235
4244
  * - `'pr'`: open a PR via `openAutoPr`
4236
4245
  * - `'none'`: just report — caller decides what to do with the winner
4237
- * v0.40 does NOT support `'config'` (live-runtime self-mutation)
4238
- * deferred to Pass B behind safety stack. */
4246
+ * Live-runtime self-mutation is intentionally unsupported. */
4239
4247
  autoOnPromote: 'pr' | 'none';
4240
4248
  /** GH owner / repo for the auto-PR. Required when autoOnPromote === 'pr'. */
4241
4249
  ghOwner?: string;
4242
4250
  ghRepo?: string;
4243
- /** Optional render override — substrate writes a diff-shaped surface; pass
4244
- * a function to format the promoted surface differently. */
4245
- renderPromotedDiff?: (winnerSurface: MutableSurface, baselineSurface: MutableSurface) => string;
4246
4251
  /** Placebo control. When supplied AND the winner differs from baseline, the
4247
4252
  * loop scores a THIRD holdout arm: the winner surface with its content
4248
4253
  * footprint-matched-blanked by this function (typically via `neutralizeText`).
@@ -4255,6 +4260,8 @@ type RunImprovementLoopOptions<TScenario extends Scenario, TArtifact> = RunOptim
4255
4260
  interface RunImprovementLoopResult<TArtifact, TScenario extends Scenario> extends RunOptimizationResult<TArtifact, TScenario> {
4256
4261
  baselineOnHoldout: CampaignResult<TArtifact, TScenario>;
4257
4262
  winnerOnHoldout: CampaignResult<TArtifact, TScenario>;
4263
+ neutralizedOnHoldout?: CampaignResult<TArtifact, TScenario>;
4264
+ neutralizedSurface?: MutableSurface;
4258
4265
  gateResult: Awaited<ReturnType<Gate<TArtifact, TScenario>['decide']>>;
4259
4266
  /** Unified baseline→winner surface diff. Computed UNCONDITIONALLY (not only
4260
4267
  * when `autoOnPromote === 'pr'`) so the diff that the gate decided on is
@@ -4267,10 +4274,6 @@ interface RunImprovementLoopResult<TArtifact, TScenario extends Scenario> extend
4267
4274
  * Gated-promotion shell over `runOptimization`: scores the winner against the baseline on a holdout set, runs the release gate, and optionally opens a PR.
4268
4275
  */
4269
4276
  declare function runImprovementLoop<TScenario extends Scenario, TArtifact>(opts: RunImprovementLoopOptions<TScenario, TArtifact>): Promise<RunImprovementLoopResult<TArtifact, TScenario>>;
4270
- /**
4271
- * Default surface diff renderer: produces a unified baseline/winner text diff for prompt surfaces or a worktree-ref summary for code surfaces.
4272
- */
4273
- declare function defaultRenderDiff(winnerSurface: MutableSurface, baselineSurface: MutableSurface): string;
4274
4277
 
4275
4278
  /**
4276
4279
  * `compareProposers` — a head-to-head lift benchmark across surface proposers
@@ -5912,8 +5915,8 @@ type CanonicalRawAnalystFinding = z.infer<typeof CanonicalRawAnalystFindingSchem
5912
5915
  * Analyst-kind factory — the typed way to define trace analysts.
5913
5916
  *
5914
5917
  * A "kind" is a specialized analyst whose actor prompt, tool subset,
5915
- * and Ax recursion config target one failure-mode lens (failure-mode
5916
- * classification, knowledge gap discovery, knowledge poisoning, recursive
5918
+ * and bounded Ax subqueries target one failure-mode lens (failure-mode
5919
+ * classification, knowledge gap discovery, knowledge poisoning,
5917
5920
  * self-improvement, ...). Kinds emit findings in the typed
5918
5921
  * `CanonicalRawAnalystFinding` shape via a JSON-array Ax output; the factory
5919
5922
  * validates each row with Zod and lifts it into `AnalystFinding[]`.
@@ -5924,12 +5927,11 @@ type CanonicalRawAnalystFinding = z.infer<typeof CanonicalRawAnalystFindingSchem
5924
5927
  * - Each kind picks a narrow tool subset from `ANALYST_TOOL_GROUPS`.
5925
5928
  * A kind that never needs full-trace dumps can drop `viewTrace` /
5926
5929
  * `viewSpans` and stay cheap.
5927
- * - Each kind declares its recursion + parallelism budget. Discovery-
5928
- * heavy kinds (failure-mode) get higher `maxDepth`; lens kinds
5929
- * (poisoning) usually stay at 0 since they have a tighter brief.
5930
+ * - Each kind declares its subquery + parallelism budget. Discovery-heavy
5931
+ * kinds can fan out more bounded semantic questions than narrow lenses.
5930
5932
  *
5931
5933
  * Optimizer hook: kinds may declare `goldens` — labeled examples used
5932
- * by `AxMiPRO` / `AxBootstrapFewShot` / `AxGEPA` to fit the actor
5934
+ * by `AxBootstrapFewShot` / `AxGEPA` to fit the actor
5933
5935
  * description programmatically. Stored on the kind, not the registry,
5934
5936
  * because the right metric is kind-specific.
5935
5937
  */
@@ -5949,20 +5951,18 @@ interface TraceAnalystKindSpec {
5949
5951
  version: string;
5950
5952
  /** Actor system prompt. Must instruct the LLM to emit `findings` per the schema. */
5951
5953
  actorDescription: string;
5952
- /** Responder system prompt; falls back to a minimal "format the findings" instruction. */
5953
- responderDescription?: string;
5954
5954
  /** Tool functions the actor may call. Pick narrow subsets via `ANALYST_TOOL_GROUPS`. */
5955
5955
  buildTools: (store: TraceAnalysisStore) => AxFunction[];
5956
- /** Recursion budget. `maxDepth: 0` disables subagents. */
5957
- recursion?: {
5958
- maxDepth: number;
5959
- maxParallelSubagents?: number;
5956
+ /** Bounded semantic subqueries. `maxCalls: 0` disables model fan-out. */
5957
+ subqueries?: {
5958
+ maxCalls: number;
5959
+ maxParallel?: number;
5960
5960
  };
5961
5961
  /** Actor turn cap. Default 12. */
5962
5962
  maxTurns?: number;
5963
5963
  /** Runtime char cap. Default 6000. */
5964
5964
  maxRuntimeChars?: number;
5965
- /** Maximum output tokens for every actor, responder, and recursive model call. Default 4096. */
5965
+ /** Maximum output tokens for every actor and subquery model call. Default 4096. */
5966
5966
  maxOutputTokens?: number;
5967
5967
  /** Cost classification surfaced in `registry.list()` and budget enforcement. */
5968
5968
  cost: AnalystCost;
@@ -6019,7 +6019,7 @@ interface TraceAnalystProposerOptions {
6019
6019
  applyMaxTokens?: number;
6020
6020
  /** Ax provider name. Default 'openai' — works for any OpenAI-compatible base
6021
6021
  * via `apiURL`. Use 'deepseek' to hit DeepSeek's native provider. */
6022
- provider?: string;
6022
+ provider?: AxAIArgs<unknown>['name'];
6023
6023
  /** Which analyst kinds to run. Default = the full shipped suite. */
6024
6024
  kinds?: readonly TraceAnalystKindSpec[];
6025
6025
  /** Resolve the OTLP traces (JSONL string) the analyst should read for THIS
@@ -6654,9 +6654,8 @@ interface HostedClient {
6654
6654
  * reads). The hosted `/v1/ingest/traces` endpoint receives the FULL loop,
6655
6655
  * not just the `cost.*` spans `runCampaign` already emits per cell.
6656
6656
  *
6657
- * The record is built from the substrate's own loop result + the per-call
6658
- * `RunRecord`s the worker emitted no new measurement, no recomputation that
6659
- * could drift from what the gate actually saw.
6657
+ * The record is built from the loop result and its settled cost receipts — no
6658
+ * second usage collector can contradict what the measured cells recorded.
6660
6659
  */
6661
6660
 
6662
6661
  interface LoopProvenanceCandidate {
@@ -6666,6 +6665,8 @@ interface LoopProvenanceCandidate {
6666
6665
  surfaceHash: string;
6667
6666
  /** Full sha256 content hash — byte-identical-verifiable. */
6668
6667
  contentHash: string;
6668
+ /** Exact scored rows that produced this candidate's search result. */
6669
+ campaignDigest: `sha256:${string}`;
6669
6670
  /** Proposer label, when the proposer returned a `ProposedCandidate`. */
6670
6671
  label?: string;
6671
6672
  /** Proposer rationale — the "because Z". When the proposer returned a bare
@@ -6699,13 +6700,33 @@ interface LoopProvenanceBackend {
6699
6700
  totalOutputTokens: number;
6700
6701
  totalCostUsd: number;
6701
6702
  }
6703
+ interface LoopProvenanceEvidence {
6704
+ search: {
6705
+ splitDigest: `sha256:${string}`;
6706
+ baselineCampaignDigest: `sha256:${string}`;
6707
+ };
6708
+ holdout: {
6709
+ splitDigest: `sha256:${string}`;
6710
+ baselineCampaignDigest: `sha256:${string}`;
6711
+ winnerCampaignDigest: `sha256:${string}`;
6712
+ neutralized?: {
6713
+ contentHash: `sha256:${string}`;
6714
+ campaignDigest: `sha256:${string}`;
6715
+ composite: number;
6716
+ lift: number;
6717
+ };
6718
+ };
6719
+ costReceiptsDigest: `sha256:${string}`;
6720
+ }
6702
6721
  /**
6703
6722
  * The durable provenance record. Aligns to the hosted `EvalRunEvent` path but
6704
6723
  * ADDS the rationale + the explicit baseline→candidate diff (both omitted from
6705
6724
  * the bare hosted event) + backend provenance.
6706
6725
  */
6707
6726
  interface LoopProvenanceRecord {
6708
- schema: 'tangle.loop-provenance.v3';
6727
+ schema: 'tangle.loop-provenance';
6728
+ /** SHA-256 over the canonical record with this field omitted. */
6729
+ recordDigest: `sha256:${string}`;
6709
6730
  runId: string;
6710
6731
  runDir: string;
6711
6732
  timestamp: string;
@@ -6719,6 +6740,8 @@ interface LoopProvenanceRecord {
6719
6740
  diff: string;
6720
6741
  /** Every candidate across every generation, with its rationale and structured cause. */
6721
6742
  candidates: LoopProvenanceCandidate[];
6743
+ /** Exact campaign, split, surface, and receipt identities behind every summary. */
6744
+ evidence: LoopProvenanceEvidence;
6722
6745
  /** Baseline composite on the search split that generated the candidates. */
6723
6746
  baselineSearchComposite: number;
6724
6747
  /** The gate verdict — decision + reasons + contributing gates + delta. */
@@ -6729,6 +6752,7 @@ interface LoopProvenanceRecord {
6729
6752
  contributingGates: Array<{
6730
6753
  name: string;
6731
6754
  passed: boolean;
6755
+ detail: unknown;
6732
6756
  }>;
6733
6757
  };
6734
6758
  /** baseline-on-holdout composite mean. */
@@ -6750,9 +6774,8 @@ interface BuildLoopProvenanceArgs<TArtifact, TScenario extends Scenario> {
6750
6774
  winnerSurface: MutableSurface;
6751
6775
  winnerLabel?: string;
6752
6776
  winnerRationale?: string;
6753
- diff: string;
6754
- /** Baseline composite on the search split, distinct from holdout scoring. */
6755
- baselineSearchComposite: number;
6777
+ /** Exact baseline campaign on the search split. */
6778
+ baselineSearchCampaign: CampaignResult<TArtifact, TScenario>;
6756
6779
  /** Per-generation candidate records straight off the loop result. */
6757
6780
  generations: Array<{
6758
6781
  generationIndex: number;
@@ -6763,18 +6786,37 @@ interface BuildLoopProvenanceArgs<TArtifact, TScenario extends Scenario> {
6763
6786
  surfaces: Array<{
6764
6787
  surfaceHash: string;
6765
6788
  surface: MutableSurface;
6789
+ campaign: CampaignResult<TArtifact, TScenario>;
6766
6790
  }>;
6767
6791
  }>;
6768
6792
  gate: GateResult;
6769
6793
  baselineOnHoldout: CampaignResult<TArtifact, TScenario>;
6770
6794
  winnerOnHoldout: CampaignResult<TArtifact, TScenario>;
6771
- /** Worker call records — the source for backend provenance. */
6772
- workerRecords: ReadonlyArray<RunRecord>;
6795
+ neutralizedSurface?: MutableSurface;
6796
+ neutralizedOnHoldout?: CampaignResult<TArtifact, TScenario>;
6797
+ /** Settled run-wide receipts — agent calls are the source for backend provenance. */
6798
+ costReceipts: ReadonlyArray<CostReceipt>;
6799
+ totalCostUsd: number;
6800
+ totalDurationMs: number;
6801
+ }
6802
+ interface LoopProvenanceArgsFromResult<TArtifact, TScenario extends Scenario> {
6803
+ runId: string;
6804
+ runDir: string;
6805
+ timestamp: string;
6806
+ baselineSurface: MutableSurface;
6807
+ result: RunImprovementLoopResult<TArtifact, TScenario>;
6808
+ costReceipts: ReadonlyArray<CostReceipt>;
6773
6809
  totalCostUsd: number;
6774
6810
  totalDurationMs: number;
6775
6811
  }
6812
+ /** One translation from a completed improvement loop into durable evidence. */
6813
+ declare function loopProvenanceArgsFromResult<TArtifact, TScenario extends Scenario>(input: LoopProvenanceArgsFromResult<TArtifact, TScenario>): BuildLoopProvenanceArgs<TArtifact, TScenario>;
6776
6814
  /** Build the durable provenance record from a completed loop result. */
6777
6815
  declare function buildLoopProvenanceRecord<TArtifact, TScenario extends Scenario>(args: BuildLoopProvenanceArgs<TArtifact, TScenario>): LoopProvenanceRecord;
6816
+ /** Digest the exact campaign fields that can affect a measured comparison. */
6817
+ declare function campaignMeasurementDigest<TArtifact, TScenario extends Scenario>(campaign: CampaignResult<TArtifact, TScenario>): `sha256:${string}`;
6818
+ /** Recompute and validate the self-addressed durable record. */
6819
+ declare function verifyLoopProvenanceRecord(record: LoopProvenanceRecord): LoopProvenanceRecord;
6778
6820
  /**
6779
6821
  * Build the loop's OTLP-ingestable spans from a provenance record. One root
6780
6822
  * span per loop (`tangle.runId`), one span per generation, one span per
@@ -7282,6 +7324,19 @@ interface SingleRunLock {
7282
7324
  */
7283
7325
  declare function acquireSingleRunLock(opts: SingleRunLockOptions): SingleRunLock;
7284
7326
 
7327
+ /** Validate the immutable identity shape; the owning executor verifies the Git objects and patch. */
7328
+ declare function assertCodeSurfaceIdentity(surface: unknown): asserts surface is CodeSurface;
7329
+ /** Canonical, location-independent identity of a finalized code candidate.
7330
+ * Commit metadata is excluded: two commits with the same base, final tree,
7331
+ * and patch bytes are the same executable candidate. */
7332
+ declare function codeSurfaceIdentityMaterial(surface: CodeSurface): string;
7333
+ /** Full SHA-256 content identity for a prompt or finalized code surface. */
7334
+ declare function surfaceContentHash(surface: MutableSurface): `sha256:${string}`;
7335
+ /** Short loop key derived from the same content identity as provenance. */
7336
+ declare function surfaceHash(surface: MutableSurface): string;
7337
+ /** Canonical customer-visible description of the exact before/after surfaces. */
7338
+ declare function renderSurfaceDiff(winnerSurface: MutableSurface, baselineSurface: MutableSurface): string;
7339
+
7285
7340
  /**
7286
7341
  * Transient-transport-failure classification for dispatch retry policies.
7287
7342
  *
@@ -7396,4 +7451,4 @@ declare function verifyCodeSurface(surface: CodeSurface, worktreeDir?: string):
7396
7451
  * identity against the checkout at `worktreeRef`. */
7397
7452
  declare function resolveWorktreePath(surface: CodeSurface, worktreeDir?: string): string;
7398
7453
 
7399
- export { type AcceptedEdit, type AceProposerOptions, type AnalystArtifact, type AnalystScenario, type AnalyzeCrossSurfaceInteractionsInput, type ApplySkillPatchResult, type AxisEvidence, type AxisVerdict, type BuildAnalystSurfaceDispatchOptions, type BuildEvidenceVectorOptions, type BuildLoopProvenanceArgs, type CampaignAggregates, type CampaignArtifactWriter, type CampaignBreakdown, type CampaignCellResult, type CampaignCostMeter, type CampaignResult, type CampaignRunPlan, type CampaignRunPlanCell, type CampaignStorage, type CampaignTokenUsage, type CampaignTraceWriter, type CodeSurface, type CodeSurfaceVerification, type CompareProposersOptions, type CompositeProposerOptions, type CostLedgerHandle, type CrossSurfaceAdditionDecision, type CrossSurfaceAdditionRejectionReason, type CrossSurfaceAttemptCompleteness, type CrossSurfaceBestSingleSelection, type CrossSurfaceBootstrapPolicy, type CrossSurfaceCandidate, type CrossSurfaceCandidateComparison, type CrossSurfaceCandidateEvidence, type CrossSurfaceCandidateOutcome, type CrossSurfaceCandidateSummary, type CrossSurfaceComponent, type CrossSurfaceComponentEvidence, type CrossSurfaceCompositionStep, type CrossSurfaceDistribution, type CrossSurfaceEligibility, type CrossSurfaceEvidenceBreakdown, type CrossSurfaceIneligibilityReason, type CrossSurfaceInteractionAwareSelection, type CrossSurfaceInteractionEffect, type CrossSurfaceInteractionPath, type CrossSurfaceInteractionReport, type CrossSurfaceInteractionTask, type CrossSurfaceNaiveStackSelection, type CrossSurfacePairCompatibility, type CrossSurfacePairEvidence, type CrossSurfacePairIncompatibilityReason, type CrossSurfacePairwiseEntry, type CrossSurfaceRankedSingle, type CrossSurfaceRelativeCost, type CrossSurfaceSelectionPolicy, type CrossSurfaceSelections, type CrossSurfaceTaskRow, DEFAULT_POLICY_EDIT_HISTORY_LIMITS, type DefaultProductionGateOptions, type DimensionRegression, type DiscriminationScore, type DispatchContext, type DispatchFn, type EmitLoopProvenanceArgs, type EmitLoopProvenanceResult, type EvalFixture, type EvalFixtureFile, type EvalFixtureLoadOptions, type EvalFixtureRunPlan, type EvalFixtureScenario, type EvalFixtureValidationMode, type EvidenceVector, type EvolutionaryProposerOptions, type FailureModeRecallJudgeOptions, type FapoAttributionSignals, type FapoEntryConfig, type FapoFailureCluster, type FapoOptimizationLevel, type FapoProposerOptions, type FapoReviewInput, type FapoReviewIssue, type FapoReviewResult, type FapoScopeContract, FileSearchLedger, FsLabeledScenarioStore, type FsLabeledScenarioStoreOptions, type Gate, type GateContext, type GateDecision, type GateResult, type GenerationCandidate, type GenerationRecord, type GepaProposerConstraints, type GepaProposerOptions, type GitWorktreeAdapterOptions, type Governor, type GovernorContext, type GovernorOp, type HaloProposerOptions, type HeldOutGateOptions, type HeldoutSignificance, type HeldoutSignificanceOptions, type HeuristicGovernorOptions, type JsonPolicyEditTargetSurface, type JsonPrimitive, type JsonValue, type JudgeAggregate, type JudgeConfig, type JudgeDimension, type JudgeScore, type LabelTrust, type LabeledScenarioRecord, type LabeledScenarioSampleArgs, type LabeledScenarioSource, type LabeledScenarioStore, LabeledScenarioStoreError, type LabeledScenarioWrite, Lineage, type LineageEdge, type LineageGraph, type LineageNode, type LineageNodeInput, type LineageStore, type LlmJudgeDimension, type LlmJudgeOptions, type LlmPolicyEditProposerOptions, type LoadEvalFixtureScenariosOptions, type LoopProvenanceBackend, type LoopProvenanceCandidate, type LoopProvenanceRecord, type MemoryCurationProposerOptions, type MutableSurface, type Mutator, type NeutralizationGateOptions, type ObjectiveSource, type OpenAutoPrOptions, type OpenAutoPrResult, type OpenSearchLedgerOptions, type OptimizationProposer, type OptimizerConfig, type OptimizerEntryConfig, POLICY_EDIT_CANDIDATE_RECORD_SCHEMA, type PairedHoldout, type ParameterCandidate, type ParameterChange, type ParameterSweepProposerOptions, type ParetoParent, type ParetoSignificanceGateOptions, type PlanCampaignRunOptions, type PlanEvalFixtureRunOptions, type PlaybackContext, type PlaybackDriver, type PlaybackStep, type PolicyEditAuthorScenarioRow, type PolicyEditCandidateRecord, type PolicyEditCandidateSummary, type PolicyEditFindingInput, type PolicyEditFindingSource, type PolicyEditHistoryCandidateContext, type PolicyEditHistoryGenerationContext, type PolicyEditHistoryProjectionOptions, type PolicyEditObjective, type PolicyEditOutcomeContext, type PolicyEditProposerOptions, type PowerPreflight, type PowerPreflightOptions, type ProfileDispatchFn, ProfileMatrixError, type ProfileSummary, type PromotionObjective, type PromotionPolicy, type ProposeContext, type ProposePatchesArgs, type ProposedCandidate, type ProposerComparison, type ProposerEntry, type ProposerPairwise, type ProposerScore, type RedactionStatus, type ReferenceEquivalenceJudgeOptions, type ReferenceEquivalenceScenario, type RejectedEdit, type RolloutArgumentDiff, type RolloutArgumentDiffOptions, type RolloutCall, type RunCampaignOptions, type RunEvalOptions, type RunImprovementLoopOptions, type RunImprovementLoopResult, type RunLineageLoopOptions, type RunLineageLoopResult, type RunLineageLoopSeed, type RunLineageOptions, type RunLineageResult, type RunLineageSeed, type RunLineageStepResult, type RunOptimizationOptions, type RunOptimizationResult, type RunProfileMatrixOptions, type RunProfileMatrixResult, type RunSkillOptOptions, type RunSkillOptResult, SEARCH_LEDGER_SCHEMA, type Scenario, type ScenarioAggregate, type ScenarioRollup, type ScenarioSignal, type ScoreboardRenderOptions, type ScoreboardRow, type ScoreboardSummary, type ScoredRollout, type ScoredSurfaceOutcome, type SearchAccountingAudit, type SearchArtifactRef, type SearchAttemptAccounting, type SearchCandidateDecidedEvent, type SearchCandidateLineage, type SearchCandidateRegisteredEvent, type SearchCandidateSlot, type SearchCandidateSlotClosedEvent, type SearchCandidateSurface, type SearchCompletedEvent, type SearchCostAccounting, type SearchFailureReason, type SearchLedger, type SearchLedgerAppendResult, SearchLedgerConflictError, type SearchLedgerEntry, SearchLedgerError, type SearchLedgerEvent, type SearchLedgerHash, SearchLedgerIntegrityError, type SearchLedgerReplay, type SearchModelIdentity, type SearchOperationKind, type SearchOperationRecordedEvent, type SearchPlan, type SearchPlannedEvent, type SearchPlannedOperation, type SearchPlannedTask, type SearchSourceRef, type SearchSurfaceEffect, type SearchSurfaceEvidence, type SearchSurfaceKind, type SearchTaskAttemptedEvent, type SearchTaskOutcome, type SearchTokenAccounting, type SelectPolicyEditAuthorRowsOptions, type SequentialDecideFn, type SequentialDecideOptions, type SequentialDecision, type SequentialObservation, type SequentialPairedGate, type SequentialPairedGateOptions, type SerializedJsonBudget, type SessionScript, type SingleRunLock, type SingleRunLockOptions, type SkillOptEpochRecord, type SkillOptEvidence, type SkillOptProposer, type SkillOptProposerOptions, type SkillPatch, type SkillPatchOp, SkillPatchParseError, type SkillPatchRejection, type SurfaceProposer, type SurfaceScore, type TraceAnalystProposerOptions, type TraceSpan, type TransientFailureOptions, type UngroundedLiteralReport, type UserStory, type UserStoryVerdict, type Worktree, type WorktreeAdapter, WorktreeAdapterError, aceProposer, acquireSingleRunLock, analyzeCrossSurfaceInteractions, applySkillPatch, assertCodeSurfaceIdentity, assertPolicyEditAuthorContextBudget, buildAnalystSurfaceDispatch, buildEvidenceVector, buildLoopProvenanceRecord, callbackGovernor, campaignBreakdown, campaignMeanComposite, classifyUngroundedLiterals, codeSurfaceIdentityMaterial, compareProposers, composeGate, compositeProposer, countSentenceEdits, createReferenceEquivalenceJudge, createRunCostLedger, defaultProductionGate, defaultRenderDiff, detectScale, dimensionRegressions, discoverEvalFixtures, emitLoopProvenance, evolutionaryProposer, extractFapoAttributionSignals, extractH2Sections, failureModeRecallJudge, fapoEscalationEntry, fapoProposer, fsCampaignStorage, fsLineageStore, gepaParetoEntry, gepaProposer, gepaReflectionEntry, gitWorktreeAdapter, haloProposer, heldOutGate, heldoutSignificance, heuristicGovernor, inMemoryCampaignStorage, isProposedCandidate, isTransientTransportFailure, labelTrustRank, lineageNodeId, llmJudge, llmPolicyEditProposer, loadEvalFixture, loadEvalFixtureScenarios, loopProvenanceSpans, makePlaybackDispatch, memLineageStore, memoryCurationProposer, neutralizationGate, neutralizeText, openAutoPr, openSearchLedger, pairHoldout, parameterSweepProposer, paretoPolicy, paretoSignificanceGate, parseSkillPatchResponse, patchEditCount, planCampaignRun, planEvalFixtureRun, policyEditProposer, powerPreflight, projectPolicyEditHistory, provenanceRecordPath, provenanceSpansPath, renderScoreboardMarkdown, resolveRunDir, resolveWorktreePath, rolloutArgumentDiff, runCampaign, runEval, runImprovementLoop, runLineage, runLineageLoop, runOptimization, runProfileMatrix, runSkillOpt, scoreDiscrimination, scoreUserStory, scoreboardSummary, selectDiscriminative, selectPolicyEditAuthorRows, sequentialDecide, sequentialPairedGate, skillOptEntry, skillOptProposer, surfaceContentHash, surfaceHash, tangleTracesRoot, traceAnalystProposer, userStoryScoreboard, validatePolicyEditCandidateRecord, validateSearchLedgerEvent, verifyCodeSurface };
7454
+ export { type AcceptedEdit, type AceProposerOptions, type AnalystArtifact, type AnalystScenario, type AnalyzeCrossSurfaceInteractionsInput, type ApplySkillPatchResult, type AxisEvidence, type AxisVerdict, type BuildAnalystSurfaceDispatchOptions, type BuildEvidenceVectorOptions, type BuildLoopProvenanceArgs, type CampaignAggregates, type CampaignArtifactWriter, type CampaignBreakdown, type CampaignCellResult, type CampaignCostMeter, type CampaignResult, type CampaignRunPlan, type CampaignRunPlanCell, type CampaignScenarioIdentity, type CampaignStorage, type CampaignTokenUsage, type CampaignTraceWriter, type CodeSurface, type CodeSurfaceVerification, type CompareProposersOptions, type CompositeProposerOptions, type CostLedgerHandle, type CrossSurfaceAdditionDecision, type CrossSurfaceAdditionRejectionReason, type CrossSurfaceAttemptCompleteness, type CrossSurfaceBestSingleSelection, type CrossSurfaceBootstrapPolicy, type CrossSurfaceCandidate, type CrossSurfaceCandidateComparison, type CrossSurfaceCandidateEvidence, type CrossSurfaceCandidateOutcome, type CrossSurfaceCandidateSummary, type CrossSurfaceComponent, type CrossSurfaceComponentEvidence, type CrossSurfaceCompositionStep, type CrossSurfaceDistribution, type CrossSurfaceEligibility, type CrossSurfaceEvidenceBreakdown, type CrossSurfaceIneligibilityReason, type CrossSurfaceInteractionAwareSelection, type CrossSurfaceInteractionEffect, type CrossSurfaceInteractionPath, type CrossSurfaceInteractionReport, type CrossSurfaceInteractionTask, type CrossSurfaceNaiveStackSelection, type CrossSurfacePairCompatibility, type CrossSurfacePairEvidence, type CrossSurfacePairIncompatibilityReason, type CrossSurfacePairwiseEntry, type CrossSurfaceRankedSingle, type CrossSurfaceRelativeCost, type CrossSurfaceSelectionPolicy, type CrossSurfaceSelections, type CrossSurfaceTaskRow, DEFAULT_POLICY_EDIT_HISTORY_LIMITS, type DefaultProductionGateOptions, type DimensionRegression, type DiscriminationScore, type DispatchContext, type DispatchFn, type EmitLoopProvenanceArgs, type EmitLoopProvenanceResult, type EvalFixture, type EvalFixtureFile, type EvalFixtureLoadOptions, type EvalFixtureRunPlan, type EvalFixtureScenario, type EvalFixtureValidationMode, type EvidenceVector, type EvolutionaryProposerOptions, type FailureModeRecallJudgeOptions, type FapoAttributionSignals, type FapoEntryConfig, type FapoFailureCluster, type FapoOptimizationLevel, type FapoProposerOptions, type FapoReviewInput, type FapoReviewIssue, type FapoReviewResult, type FapoScopeContract, FileSearchLedger, FsLabeledScenarioStore, type FsLabeledScenarioStoreOptions, type Gate, type GateContext, type GateDecision, type GateResult, type GenerationCandidate, type GenerationRecord, type GepaProposerConstraints, type GepaProposerOptions, type GitWorktreeAdapterOptions, type Governor, type GovernorContext, type GovernorOp, type HaloProposerOptions, type HeldOutGateOptions, type HeldoutSignificance, type HeldoutSignificanceOptions, type HeuristicGovernorOptions, type JsonPolicyEditTargetSurface, type JsonPrimitive, type JsonValue, type JudgeAggregate, type JudgeConfig, type JudgeDimension, type JudgeScore, type LabelTrust, type LabeledScenarioRecord, type LabeledScenarioSampleArgs, type LabeledScenarioSource, type LabeledScenarioStore, LabeledScenarioStoreError, type LabeledScenarioWrite, Lineage, type LineageEdge, type LineageGraph, type LineageNode, type LineageNodeInput, type LineageStore, type LlmJudgeDimension, type LlmJudgeOptions, type LlmPolicyEditProposerOptions, type LoadEvalFixtureScenariosOptions, type LoopProvenanceArgsFromResult, type LoopProvenanceBackend, type LoopProvenanceCandidate, type LoopProvenanceEvidence, type LoopProvenanceRecord, type MemoryCurationProposerOptions, type MutableSurface, type Mutator, type NeutralizationGateOptions, type ObjectiveSource, type OpenAutoPrOptions, type OpenAutoPrResult, type OpenSearchLedgerOptions, type OptimizationProposer, type OptimizerConfig, type OptimizerEntryConfig, POLICY_EDIT_CANDIDATE_RECORD_SCHEMA, type PairedHoldout, type ParameterCandidate, type ParameterChange, type ParameterSweepProposerOptions, type ParetoParent, type ParetoSignificanceGateOptions, type PlanCampaignRunOptions, type PlanEvalFixtureRunOptions, type PlaybackContext, type PlaybackDriver, type PlaybackStep, type PolicyEditAuthorScenarioRow, type PolicyEditCandidateRecord, type PolicyEditCandidateSummary, type PolicyEditFindingInput, type PolicyEditFindingSource, type PolicyEditHistoryCandidateContext, type PolicyEditHistoryGenerationContext, type PolicyEditHistoryProjectionOptions, type PolicyEditObjective, type PolicyEditOutcomeContext, type PolicyEditProposerOptions, type PowerPreflight, type PowerPreflightOptions, type ProfileDispatchFn, ProfileMatrixError, type ProfileSummary, type PromotionObjective, type PromotionPolicy, type ProposeContext, type ProposePatchesArgs, type ProposedCandidate, type ProposerComparison, type ProposerEntry, type ProposerPairwise, type ProposerScore, type RedactionStatus, type ReferenceEquivalenceJudgeOptions, type ReferenceEquivalenceScenario, type RejectedEdit, type RolloutArgumentDiff, type RolloutArgumentDiffOptions, type RolloutCall, type RunCampaignOptions, type RunEvalOptions, type RunImprovementLoopOptions, type RunImprovementLoopResult, type RunLineageLoopOptions, type RunLineageLoopResult, type RunLineageLoopSeed, type RunLineageOptions, type RunLineageResult, type RunLineageSeed, type RunLineageStepResult, type RunOptimizationOptions, type RunOptimizationResult, type RunProfileMatrixOptions, type RunProfileMatrixResult, type RunSkillOptOptions, type RunSkillOptResult, SEARCH_LEDGER_SCHEMA, type Scenario, type ScenarioAggregate, type ScenarioRollup, type ScenarioSignal, type ScoreboardRenderOptions, type ScoreboardRow, type ScoreboardSummary, type ScoredRollout, type ScoredSurfaceOutcome, type SearchAccountingAudit, type SearchArtifactRef, type SearchAttemptAccounting, type SearchCandidateDecidedEvent, type SearchCandidateLineage, type SearchCandidateRegisteredEvent, type SearchCandidateSlot, type SearchCandidateSlotClosedEvent, type SearchCandidateSurface, type SearchCompletedEvent, type SearchCostAccounting, type SearchFailureReason, type SearchLedger, type SearchLedgerAppendResult, SearchLedgerConflictError, type SearchLedgerEntry, SearchLedgerError, type SearchLedgerEvent, type SearchLedgerHash, SearchLedgerIntegrityError, type SearchLedgerReplay, type SearchModelIdentity, type SearchOperationKind, type SearchOperationRecordedEvent, type SearchPlan, type SearchPlannedEvent, type SearchPlannedOperation, type SearchPlannedTask, type SearchSourceRef, type SearchSurfaceEffect, type SearchSurfaceEvidence, type SearchSurfaceKind, type SearchTaskAttemptedEvent, type SearchTaskOutcome, type SearchTokenAccounting, type SelectPolicyEditAuthorRowsOptions, type SequentialDecideFn, type SequentialDecideOptions, type SequentialDecision, type SequentialObservation, type SequentialPairedGate, type SequentialPairedGateOptions, type SerializedJsonBudget, type SessionScript, type SingleRunLock, type SingleRunLockOptions, type SkillOptEpochRecord, type SkillOptEvidence, type SkillOptProposer, type SkillOptProposerOptions, type SkillPatch, type SkillPatchOp, SkillPatchParseError, type SkillPatchRejection, type SurfaceProposer, type SurfaceScore, type TraceAnalystProposerOptions, type TraceSpan, type TransientFailureOptions, type UngroundedLiteralReport, type UserStory, type UserStoryVerdict, type Worktree, type WorktreeAdapter, WorktreeAdapterError, aceProposer, acquireSingleRunLock, analyzeCrossSurfaceInteractions, applySkillPatch, assertCampaignDesign, assertCampaignSplitIdentity, assertCodeSurfaceIdentity, assertPolicyEditAuthorContextBudget, buildAnalystSurfaceDispatch, buildEvidenceVector, buildLoopProvenanceRecord, callbackGovernor, campaignBreakdown, campaignMeanComposite, campaignMeasurementDigest, campaignScenarioIdentity, campaignSplitDigest, campaignSplitDigestFromIdentities, classifyUngroundedLiterals, codeSurfaceIdentityMaterial, compareProposers, composeGate, compositeProposer, countSentenceEdits, createReferenceEquivalenceJudge, createRunCostLedger, defaultProductionGate, detectScale, dimensionRegressions, discoverEvalFixtures, emitLoopProvenance, evolutionaryProposer, extractFapoAttributionSignals, extractH2Sections, failureModeRecallJudge, fapoEscalationEntry, fapoProposer, fsCampaignStorage, fsLineageStore, gepaParetoEntry, gepaProposer, gepaReflectionEntry, gitWorktreeAdapter, haloProposer, heldOutGate, heldoutSignificance, heuristicGovernor, inMemoryCampaignStorage, isProposedCandidate, isTransientTransportFailure, labelTrustRank, lineageNodeId, llmJudge, llmPolicyEditProposer, loadEvalFixture, loadEvalFixtureScenarios, loopProvenanceArgsFromResult, loopProvenanceSpans, makePlaybackDispatch, memLineageStore, memoryCurationProposer, neutralizationGate, neutralizeText, openAutoPr, openSearchLedger, pairHoldout, parameterSweepProposer, paretoPolicy, paretoSignificanceGate, parseSkillPatchResponse, patchEditCount, planCampaignRun, planEvalFixtureRun, policyEditProposer, powerPreflight, projectPolicyEditHistory, provenanceRecordPath, provenanceSpansPath, renderScoreboardMarkdown, renderSurfaceDiff, resolveRunDir, resolveWorktreePath, rolloutArgumentDiff, runCampaign, runEval, runImprovementLoop, runLineage, runLineageLoop, runOptimization, runProfileMatrix, runSkillOpt, scoreDiscrimination, scoreUserStory, scoreboardSummary, selectDiscriminative, selectPolicyEditAuthorRows, sequentialDecide, sequentialPairedGate, skillOptEntry, skillOptProposer, surfaceContentHash, surfaceHash, tangleTracesRoot, traceAnalystProposer, userStoryScoreboard, validatePolicyEditCandidateRecord, validateSearchLedgerEvent, verifyCodeSurface, verifyLoopProvenanceRecord };
@@ -66,19 +66,19 @@ import {
66
66
  userStoryScoreboard,
67
67
  validateSearchLedgerEvent,
68
68
  verifyCodeSurface
69
- } from "../chunk-F6YUH3L4.js";
69
+ } from "../chunk-JN2FCO5W.js";
70
70
  import {
71
71
  assertCodeSurfaceIdentity,
72
72
  buildEvidenceVector,
73
73
  buildLoopProvenanceRecord,
74
74
  campaignBreakdown,
75
75
  campaignMeanComposite,
76
+ campaignMeasurementDigest,
76
77
  codeSurfaceIdentityMaterial,
77
78
  composeGate,
78
79
  countSentenceEdits,
79
80
  createReferenceEquivalenceJudge,
80
81
  defaultProductionGate,
81
- defaultRenderDiff,
82
82
  detectScale,
83
83
  dimensionRegressions,
84
84
  emitLoopProvenance,
@@ -90,6 +90,7 @@ import {
90
90
  isProposedCandidate,
91
91
  labelTrustRank,
92
92
  llmJudge,
93
+ loopProvenanceArgsFromResult,
93
94
  loopProvenanceSpans,
94
95
  openAutoPr,
95
96
  pairHoldout,
@@ -98,16 +99,23 @@ import {
98
99
  powerPreflight,
99
100
  provenanceRecordPath,
100
101
  provenanceSpansPath,
102
+ renderSurfaceDiff,
101
103
  runEval,
102
104
  runImprovementLoop,
103
105
  runOptimization,
104
106
  surfaceContentHash,
105
- surfaceHash
106
- } from "../chunk-RLCJQ6VZ.js";
107
+ surfaceHash,
108
+ verifyLoopProvenanceRecord
109
+ } from "../chunk-32BZXMSO.js";
107
110
  import {
108
111
  SearchLedgerConflictError,
109
112
  SearchLedgerError,
110
113
  SearchLedgerIntegrityError,
114
+ assertCampaignDesign,
115
+ assertCampaignSplitIdentity,
116
+ campaignScenarioIdentity,
117
+ campaignSplitDigest,
118
+ campaignSplitDigestFromIdentities,
111
119
  createRunCostLedger,
112
120
  fsCampaignStorage,
113
121
  inMemoryCampaignStorage,
@@ -115,20 +123,20 @@ import {
115
123
  resolveRunDir,
116
124
  runCampaign,
117
125
  tangleTracesRoot
118
- } from "../chunk-PAHNGS65.js";
126
+ } from "../chunk-XDIRG3TO.js";
119
127
  import "../chunk-3YYRZDON.js";
120
128
  import {
121
129
  POLICY_EDIT_CANDIDATE_RECORD_SCHEMA,
122
130
  validatePolicyEditCandidateRecord
123
- } from "../chunk-7A4LIMMY.js";
131
+ } from "../chunk-S5TT5R3L.js";
124
132
  import "../chunk-ARU2PZFM.js";
125
133
  import "../chunk-NJC7U437.js";
126
134
  import "../chunk-PJQFMIOX.js";
127
135
  import "../chunk-JHOJHHU7.js";
128
136
  import "../chunk-VI2UW6B6.js";
129
- import "../chunk-FIUFRXP3.js";
137
+ import "../chunk-WW2A73HW.js";
130
138
  import "../chunk-GGE4NNQT.js";
131
- import "../chunk-6QIM2EAP.js";
139
+ import "../chunk-PXD6ZFNY.js";
132
140
  import "../chunk-PC4UYEBM.js";
133
141
  import "../chunk-S3UZOQ5Y.js";
134
142
  import "../chunk-MA6HLL3S.js";
@@ -155,6 +163,8 @@ export {
155
163
  acquireSingleRunLock,
156
164
  analyzeCrossSurfaceInteractions,
157
165
  applySkillPatch,
166
+ assertCampaignDesign,
167
+ assertCampaignSplitIdentity,
158
168
  assertCodeSurfaceIdentity,
159
169
  assertPolicyEditAuthorContextBudget,
160
170
  buildAnalystSurfaceDispatch,
@@ -163,6 +173,10 @@ export {
163
173
  callbackGovernor,
164
174
  campaignBreakdown,
165
175
  campaignMeanComposite,
176
+ campaignMeasurementDigest,
177
+ campaignScenarioIdentity,
178
+ campaignSplitDigest,
179
+ campaignSplitDigestFromIdentities,
166
180
  classifyUngroundedLiterals,
167
181
  codeSurfaceIdentityMaterial,
168
182
  compareProposers,
@@ -172,7 +186,6 @@ export {
172
186
  createReferenceEquivalenceJudge,
173
187
  createRunCostLedger,
174
188
  defaultProductionGate,
175
- defaultRenderDiff,
176
189
  detectScale,
177
190
  dimensionRegressions,
178
191
  discoverEvalFixtures,
@@ -202,6 +215,7 @@ export {
202
215
  llmPolicyEditProposer,
203
216
  loadEvalFixture,
204
217
  loadEvalFixtureScenarios,
218
+ loopProvenanceArgsFromResult,
205
219
  loopProvenanceSpans,
206
220
  makePlaybackDispatch,
207
221
  memLineageStore,
@@ -224,6 +238,7 @@ export {
224
238
  provenanceRecordPath,
225
239
  provenanceSpansPath,
226
240
  renderScoreboardMarkdown,
241
+ renderSurfaceDiff,
227
242
  resolveRunDir,
228
243
  resolveWorktreePath,
229
244
  rolloutArgumentDiff,
@@ -251,6 +266,7 @@ export {
251
266
  userStoryScoreboard,
252
267
  validatePolicyEditCandidateRecord,
253
268
  validateSearchLedgerEvent,
254
- verifyCodeSurface
269
+ verifyCodeSurface,
270
+ verifyLoopProvenanceRecord
255
271
  };
256
272
  //# sourceMappingURL=index.js.map