@tangle-network/agent-eval 0.205.1 → 0.206.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 (59) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/analyst/index.d.ts +1 -1
  3. package/dist/analyst/index.js +1 -1
  4. package/dist/{benchmark-command-DuDTN5ID.js → benchmark-command-DtP94cOB.js} +2 -2
  5. package/dist/{benchmark-command-DuDTN5ID.js.map → benchmark-command-DtP94cOB.js.map} +1 -1
  6. package/dist/{claude-jsonl-DoQJBCVR.js → claude-jsonl-CG3JUbTJ.js} +8 -4
  7. package/dist/claude-jsonl-CG3JUbTJ.js.map +1 -0
  8. package/dist/cli.js +1 -1
  9. package/dist/{index-BoVEyQwH.d.ts → index-CbBfavbT.d.ts} +5 -3
  10. package/dist/{index-BoVEyQwH.d.ts.map → index-CbBfavbT.d.ts.map} +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/meta-eval/index.d.ts +6 -0
  14. package/dist/meta-eval/index.d.ts.map +1 -1
  15. package/dist/meta-eval/index.js +15 -1
  16. package/dist/meta-eval/index.js.map +1 -1
  17. package/dist/openapi.json +1 -1
  18. package/dist/rl.d.ts +12 -12
  19. package/dist/rl.d.ts.map +1 -1
  20. package/dist/rl.js +17 -17
  21. package/dist/rl.js.map +1 -1
  22. package/dist/rollout/index.d.ts +2 -2
  23. package/dist/rollout/index.js +3 -3
  24. package/dist/{rollout-BdCoWV9n.js → rollout-l9w3Gdvh.js} +2 -2
  25. package/dist/{rollout-BdCoWV9n.js.map → rollout-l9w3Gdvh.js.map} +1 -1
  26. package/dist/supervisor-run/index.js +1 -1
  27. package/dist/systemone-protocol-DKoi1NdK.d.ts +132 -0
  28. package/dist/systemone-protocol-DKoi1NdK.d.ts.map +1 -0
  29. package/dist/systemone-protocol.d.ts +2 -0
  30. package/dist/systemone-protocol.js +214 -0
  31. package/dist/systemone-protocol.js.map +1 -0
  32. package/dist/{jev-review-Cw06AKuF.d.ts → systemone-review-DGTKkLMG.d.ts} +16 -16
  33. package/dist/systemone-review-DGTKkLMG.d.ts.map +1 -0
  34. package/dist/{jev-review-DZEjDzlF.js → systemone-review-DTClwgmE.js} +11 -11
  35. package/dist/systemone-review-DTClwgmE.js.map +1 -0
  36. package/dist/systemone.d.ts +60 -0
  37. package/dist/systemone.d.ts.map +1 -0
  38. package/dist/{jev.js → systemone.js} +16 -16
  39. package/dist/systemone.js.map +1 -0
  40. package/docs/changes/jev-evidence-review.md +1 -1
  41. package/docs/changes/systemone-provider-neutral.md +36 -0
  42. package/docs/public-api.md +93 -68
  43. package/docs/rollout.md +9 -1
  44. package/docs/{jev-behavior-review.md → systemone-behavior-review.md} +17 -17
  45. package/docs/{jev-integrations.md → systemone-integrations.md} +4 -4
  46. package/docs/{jev-replay.md → systemone-replay.md} +6 -6
  47. package/docs/{jev.md → systemone.md} +84 -33
  48. package/package.json +9 -9
  49. package/dist/claude-jsonl-DoQJBCVR.js.map +0 -1
  50. package/dist/jev-protocol-BQLxwbqD.d.ts +0 -99
  51. package/dist/jev-protocol-BQLxwbqD.d.ts.map +0 -1
  52. package/dist/jev-protocol.d.ts +0 -2
  53. package/dist/jev-protocol.js +0 -114
  54. package/dist/jev-protocol.js.map +0 -1
  55. package/dist/jev-review-Cw06AKuF.d.ts.map +0 -1
  56. package/dist/jev-review-DZEjDzlF.js.map +0 -1
  57. package/dist/jev.d.ts +0 -60
  58. package/dist/jev.d.ts.map +0 -1
  59. package/dist/jev.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemone.js","names":[],"sources":["../src/systemone.ts"],"sourcesContent":["import type { Analyst, AnalystContext, AnalystFinding } from './analyst/types'\nimport type { JudgeConfig, JudgeScore, Scenario } from './campaign/types'\nimport type { CostReceiptInput, CustomTokenPricing } from './cost-ledger'\nimport type { EvaluationContext, EvaluationResult, EvaluatorOptions } from './evaluation'\nimport { asAnalyst, asJudge, createEvaluator } from './evaluation'\nimport { jsonDocument } from './ledger-core/canonical'\nimport { weightedComposite } from './statistics'\nimport type {\n SystemOneQuestions,\n SystemOneRequest,\n SystemOneResult,\n SystemOneState,\n} from './systemone-protocol'\nimport {\n parseSystemOneQuestions,\n parseSystemOneRequest,\n parseSystemOneResult,\n systemOneUsage,\n} from './systemone-protocol'\nimport { contentHash } from './verdict-cache'\n\nexport * from './evaluation'\nexport * from './systemone-protocol'\nexport * from './systemone-review'\n\nexport type SystemOneEvaluate = EvaluatorOptions<SystemOneRequest, unknown>['execute']\nexport interface SystemOneEvaluatorOptions {\n evaluate: SystemOneEvaluate\n costLedger?: EvaluatorOptions<SystemOneRequest, unknown>['costLedger']\n maximumCharge?: EvaluatorOptions<SystemOneRequest, unknown>['maximumCharge']\n pricing?: CustomTokenPricing\n receipt?: (response: unknown) => CostReceiptInput\n receiptFromError?: (error: Error) => CostReceiptInput | undefined\n /** Optional deployment policy; the protocol adapter does not hardcode model aliases. */\n acceptModel?: (requested: string, served: string) => boolean\n}\n\n/** Configure transport once; supply native state, questions, and model on every invocation. */\nexport function systemOneEvaluator(options: SystemOneEvaluatorOptions) {\n const config = { ...options, pricing: options.pricing && { ...options.pricing } }\n const run = createEvaluator<SystemOneRequest, unknown>({\n execute: (request, context) => config.evaluate(structuredClone(request), context),\n model: (request) => request.model,\n costLedger: config.costLedger,\n maximumCharge: config.maximumCharge,\n receiptFromError: config.receiptFromError,\n receipt:\n config.receipt ??\n ((raw) => {\n const usage = systemOneUsage(raw)\n const { model } = raw as SystemOneResult\n return {\n model,\n inputTokens: usage.input_tokens,\n outputTokens: usage.output_tokens,\n customTokenPricing: config.pricing,\n }\n }),\n validate: (raw, request) => {\n const result = parseSystemOneResult(raw, request)\n if (config.acceptModel && !config.acceptModel(request.model, result.model)) {\n throw new Error('Evaluation served a model rejected by the caller policy')\n }\n },\n })\n return async <const Q extends SystemOneQuestions>(\n request: SystemOneRequest<Q>,\n context?: EvaluationContext,\n ): Promise<EvaluationResult<SystemOneResult<Q>>> => {\n context?.signal?.throwIfAborted()\n parseSystemOneRequest(request)\n const snapshot = structuredClone(request)\n const result = await run(snapshot, context)\n // The validator checked these exact questions after recording the paid work.\n return { ...result, value: result.value as SystemOneResult<Q> }\n }\n}\n\ntype Input<A, S extends Scenario> = { artifact: A; scenario: S }\ntype QuestionSource<I, Q extends SystemOneQuestions> = Q | ((input: I) => Q | Promise<Q>)\nexport interface SystemOneOptions extends SystemOneEvaluatorOptions {\n model: string\n version: string\n questions: SystemOneQuestions\n}\nexport interface SystemOneJudgeOptions<\n A,\n S extends Scenario = Scenario,\n Q extends SystemOneQuestions = SystemOneQuestions,\n> extends SystemOneEvaluatorOptions {\n model: string\n version: string\n questions: QuestionSource<Input<A, S>, Q>\n renderState: (\n input: Input<A, S>,\n context: EvaluationContext,\n ) => SystemOneState | Promise<SystemOneState>\n dimensions?: JudgeConfig<A, S>['dimensions']\n weights?: Record<string, number>\n map?: (value: SystemOneResult<Q>, input: Input<A, S>) => JudgeScore | Promise<JudgeScore>\n record?: (\n result: EvaluationResult<SystemOneResult<Q>>,\n input: Input<A, S>,\n ) => void | Promise<void>\n appliesTo?: (scenario: S) => boolean\n}\n\n/** Canonical identity also retains native question/alternative order; dispatch stays untouched. */\nfunction questionIdentity(questions: SystemOneQuestions) {\n return {\n document: jsonDocument(questions),\n order: Object.entries(questions).map(([name, question]) => [\n name,\n question.type === 'choice' ? Object.keys(question.criteria) : null,\n ]),\n }\n}\n\nfunction validateWeights(weights: Record<string, number>, keys: string[]): void {\n if (\n Object.entries(weights).some(\n ([key, weight]) => !keys.includes(key) || !Number.isFinite(weight) || weight < 0,\n ) ||\n Object.values(weights).reduce((sum, weight) => sum + weight, 0) <= 0\n ) {\n throw new TypeError('Invalid judge weights')\n }\n}\n\n/** Optional convention. Choice utilities and non-uniform scales belong in an explicit map. */\nexport function normalizedSystemOneScore(\n result: SystemOneResult,\n weights?: Record<string, number>,\n): JudgeScore {\n const dimensions: Record<string, number> = Object.create(null)\n const distribution: NonNullable<JudgeScore['distribution']> = Object.create(null)\n for (const [key, answer] of Object.entries(result.answers)) {\n if (answer.type === 'choice') throw new TypeError('Choice scoring requires an explicit map')\n if (answer.type === 'noul') {\n dimensions[key] = answer.noul\n distribution[key] = [\n { score: 0, probability: 1 - answer.noul },\n { score: 1, probability: answer.noul },\n ]\n } else {\n const scale = Object.keys(answer.legend).length - 1\n dimensions[key] = answer.score / scale\n distribution[key] = Object.entries(answer.probabilities).map(([level, probability]) => ({\n score: Number(level) / scale,\n probability,\n }))\n }\n }\n const effective = weights ?? Object.fromEntries(Object.keys(dimensions).map((key) => [key, 1]))\n validateWeights(effective, Object.keys(dimensions))\n return {\n dimensions,\n composite: weightedComposite({ dims: dimensions, weights: effective }).composite,\n notes: '',\n scoringMethod: 'expectation',\n distribution,\n }\n}\n\n/** Convenience around the public evaluator. No domain questions, thresholds, or prose. */\nexport function systemOneJudge<\n A,\n S extends Scenario = Scenario,\n Q extends SystemOneQuestions = SystemOneQuestions,\n>(name: string, options: SystemOneJudgeOptions<A, S, Q>): JudgeConfig<A, S> {\n const config = { ...options }\n const source =\n typeof options.questions === 'function' ? options.questions : structuredClone(options.questions)\n const weights = options.weights && { ...options.weights }\n if (!name.trim() || !options.version.trim()) {\n throw new TypeError('Judge name and version are required')\n }\n if ((typeof source === 'function' || config.map) && !config.dimensions) {\n throw new TypeError('Dynamic questions and custom mappings require stable judge dimensions')\n }\n if (!config.map && typeof source !== 'function') {\n parseSystemOneQuestions(source)\n if (Object.values(source).some((question) => question.type === 'choice')) {\n throw new TypeError(\n 'Choice scoring requires an explicit map; labels have no numeric ordering',\n )\n }\n if (weights) validateWeights(weights, Object.keys(source))\n }\n const dimensions =\n config.dimensions ??\n Object.entries(source).map(([key, question]) => ({\n key,\n description: typeof question.instructions === 'string' ? question.instructions : key,\n }))\n const evaluate = systemOneEvaluator(config)\n return asJudge<A, S, SystemOneResult<Q>>({\n name,\n version: contentHash({\n model: config.model,\n version: config.version,\n questions: typeof source === 'function' ? 'dynamic' : questionIdentity(source),\n dimensions,\n // Hash the JSON document: optional undefined fields are absent on the wire.\n ...(weights ? { weights } : {}),\n }),\n dimensions,\n appliesTo: config.appliesTo,\n evaluate: async (input, context = {}) =>\n evaluate(\n {\n model: config.model,\n state: await config.renderState(input, context),\n questions: typeof source === 'function' ? await source(input) : source,\n },\n context,\n ),\n map: config.map ?? ((value) => normalizedSystemOneScore(value, weights)),\n record: config.record,\n })\n}\n\nexport interface SystemOneAnalystOptions<I, Q extends SystemOneQuestions = SystemOneQuestions>\n extends SystemOneEvaluatorOptions {\n id: string\n description: string\n inputKind: Analyst<I>['inputKind']\n model: string\n version: string\n questions: Q | ((input: I, context: AnalystContext) => Q | Promise<Q>)\n renderState: (input: I, context: AnalystContext) => SystemOneState | Promise<SystemOneState>\n findings: (\n value: SystemOneResult<Q>,\n input: I,\n context: AnalystContext,\n ) => AnalystFinding[] | Promise<AnalystFinding[]>\n record?: (\n result: EvaluationResult<SystemOneResult<Q>>,\n input: I,\n context: AnalystContext,\n ) => void | Promise<void>\n}\n\nexport function systemOneAnalyst<I, Q extends SystemOneQuestions = SystemOneQuestions>(\n options: SystemOneAnalystOptions<I, Q>,\n): Analyst<I> {\n const config = { ...options }\n const source =\n typeof options.questions === 'function' ? options.questions : structuredClone(options.questions)\n if (!config.id.trim() || !config.version.trim() || !config.description.trim()) {\n throw new TypeError('Analyst id, version, and description are required')\n }\n const evaluate = systemOneEvaluator(config)\n return asAnalyst<I, SystemOneResult<Q>>({\n id: config.id,\n description: config.description,\n inputKind: config.inputKind,\n version: contentHash({\n model: config.model,\n version: config.version,\n questions: typeof source === 'function' ? 'dynamic' : questionIdentity(source),\n }),\n cost: { kind: 'llm', models: [config.model] },\n evaluate: async (input, context, analystContext) =>\n evaluate(\n {\n model: config.model,\n state: await config.renderState(input, analystContext),\n questions: typeof source === 'function' ? await source(input, analystContext) : source,\n },\n context,\n ),\n map: config.findings,\n record: config.record,\n })\n}\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ The optional `examples/jev-behavior-review.ts` recipe covers reward gaming, eval
9
9
  policy/authorization/data-boundary breaches, injection-following, contradicted completion,
10
10
  oversight bypass, matched-baseline anomalies and cross-run behavior. It composes the existing
11
11
  `jevAnalyst`; the taxonomy is not installed in the generic evaluator and is not a calibrated
12
- safety detector. See [behavioral reviews](../jev-behavior-review.md) for evidence and limits.
12
+ safety detector. See [behavioral reviews](../systemone-behavior-review.md) for evidence and limits.
13
13
 
14
14
  No dependency, transport, scheduler, package entrypoint, default model, production action or
15
15
  spending policy changes. Existing evaluator, judge, analyst and protocol APIs remain unchanged.
@@ -0,0 +1,36 @@
1
+ # System One is provider-neutral
2
+
3
+ The Jev surface is renamed to System One, because the same typed decision protocol is now served by
4
+ TypeSafe (Jev), Cloudflare Workers AI (Clef, Clef-flash) and Perplexity (pplx-decider). The wire
5
+ format does not change, so recorded requests and answers stay readable. There are no aliases: each
6
+ consumer renames in the pull request that bumps its pin.
7
+
8
+ | Before | After |
9
+ | --- | --- |
10
+ | `@tangle-network/agent-eval/jev`, `/jev/protocol` | `/systemone`, `/systemone/protocol` |
11
+ | `Jev*` types (`JevRequest`, `JevResult`, `JevQuestions`, `JevRecordedRequest`, ...) | `SystemOne*` |
12
+ | `parseJev{Request,RecordedRequest,Questions,Result}`, `jevUsage` | `parseSystemOne*`, `systemOneUsage` |
13
+ | `JevResponseError` (message prefix `Jev:`) | `SystemOneResponseError` (prefix `System One:`) |
14
+ | `jevEvaluator`, `jevJudge`, `jevAnalyst`, `normalizedJevScore` | `systemOneEvaluator`, `systemOneJudge`, `systemOneAnalyst`, `normalizedSystemOneScore` |
15
+ | `prepareJevReview`, `assessJevReview`, `jevReviewFindings` | `prepareSystemOneReview`, `assessSystemOneReview`, `systemOneReviewFindings` |
16
+ | `claimIntegrityJev{Questions,Review}`, `jevSignal`, signal id `jev`, version prefix `claim-integrity-jev-` | `claimIntegritySystemOne*`, `systemOneSignal`, id `systemone`, prefix `claim-integrity-systemone-` |
17
+
18
+ Historical records keep their old signal ids and versions; a reader that filters on `jev` must also
19
+ accept `systemone`.
20
+
21
+ New in `/systemone/protocol`:
22
+
23
+ - `normalizeSystemOneResult(raw, request, profile)` removes a provider's declared rounding before
24
+ the strict parser and gives every provider the same `confidence`. The route owner supplies the
25
+ profile (`{ decimals?, confidence: canonical | provider-defined }`). Answers that already pass
26
+ the strict checks are unchanged.
27
+ - `systemOneConfidence(answer)` is that one definition, TypeSafe's published formulas.
28
+
29
+ New in `/meta-eval`: `brierScore(pairs)`. Equal-mass ECE and the reliability table already come from
30
+ `calibrationFromPairs(pairs, ..., { binning: equal-frequency, range: { lo: 0, hi: 1 } })`.
31
+
32
+ Without normalization the strict parser refuses a recorded TypeSafe score answer whose rounded score
33
+ is not the expectation of its rounded probabilities (8.79 against 8.86), so a transport that passes
34
+ TypeSafe bytes straight to `parseSystemOneResult` should normalize with `{ decimals: 2, confidence:
35
+ canonical }`. See [System One evaluations](../systemone.md#providers-rounding-and-confidence) for
36
+ the recorded provider profiles.
@@ -7,11 +7,11 @@ Generated by `pnpm api:census` on demand — this is a dated reading, not a gate
7
7
  | measure | count |
8
8
  | --- | --- |
9
9
  | export subpaths | 33 |
10
- | published value exports (subpath x symbol) | 1589 |
11
- | distinct symbols | 1401 |
12
- | production | 1048 |
13
- | planned | 278 |
14
- | none | 263 |
10
+ | published value exports (subpath x symbol) | 1614 |
11
+ | distinct symbols | 1422 |
12
+ | production | 1052 |
13
+ | planned | 296 |
14
+ | none | 266 |
15
15
 
16
16
  Type-only exports are not listed: a type binds no runtime surface, and removing one cannot break a caller at run time.
17
17
 
@@ -84,7 +84,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
84
84
 
85
85
  ### `.`
86
86
 
87
- 360 value exports — 279 production, 40 planned, 41 none.
87
+ 371 value exports — 281 production, 44 planned, 46 none.
88
88
 
89
89
  | symbol | consumer | evidence |
90
90
  | --- | --- | --- |
@@ -150,6 +150,8 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
150
150
  | `checkCanaries` | production | blueprint-agent:scripts/experiments/lib/contamination-preflight.ts |
151
151
  | `checkServedModel` | production | this package: src/integrity/preflight.ts:33 |
152
152
  | `checkTraceContracts` | production | creative-agent:eval/lib/trace-contracts.ts |
153
+ | `chiSquared` | none | only this package's tests: src/statistics/inference.test.ts:2 |
154
+ | `chiSquaredPValue` | none | only this package's tests: src/statistics/inference.test.ts:2 |
153
155
  | `clamp01` | production | agent-dev-container:products/intelligence/api/src/lib/consultant/executor.ts |
154
156
  | `classifyFailure` | production | phony:products/builder/api/src/eval/autoresearch/trace-analyst.ts |
155
157
  | `classifyFailureReason` | production | this package: src/diagnosis/first-failure.ts:39 |
@@ -246,6 +248,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
246
248
  | `FileSystemTraceStore` | production | agent-builder:scripts/eval.ts |
247
249
  | `fileVerdictCache` | production | blueprint-agent:scripts/experiments/calibrate-instrument.ts |
248
250
  | `FindingsStore` | production | agent-builder:scripts/run-canonical-analyst-loop.ts |
251
+ | `fisherExactTwoSided` | none | only this package's tests: src/statistics/inference.test.ts:2 |
249
252
  | `formatScorecardDiff` | production | ai-trading-blueprint:evals/src/trading/scorecard-integration.ts |
250
253
  | `gainHistogram` | production | blueprint-agent:scripts/experiments/vb-runrecord-analysis.ts |
251
254
  | `gateTreatmentApplied` | production | blueprint-agent:scripts/experiments/lib/validity-gates.ts |
@@ -286,6 +289,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
286
289
  | `judgeSpans` | production | this package: src/builder-eval/three-layer-eval.ts:25 |
287
290
  | `knowledgeReadinessTracePayload` | production | agent-dev-container:products/intelligence/api/src/routes/project-engines.ts |
288
291
  | `leaderboard` | production | blueprint-agent:scripts/experiments/lib/cross-harness-leaderboard.ts |
292
+ | `linearRegressionSlope` | none | only this package's tests: src/statistics/inference.test.ts:2 |
289
293
  | `lintTraceContractSpec` | planned | doc: docs/trace-contracts.md |
290
294
  | `LlmCallError` | production | agent-dev-container:products/intelligence/api/src/lib/router-model-owner.ts |
291
295
  | `llmJudge` | production | agent-runtime:examples/agentic-data-creation/offline-fixtures.ts |
@@ -314,6 +318,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
314
318
  | `mulberry32` | production | agent-knowledge:src/memory/holdout.ts |
315
319
  | `MultiLayerVerifier` | production | agent-builder:src/lib/.server/eval/loops/forge-refinement.ts |
316
320
  | `NoopRawProviderSink` | production | agent-dev-container:products/intelligence/api/src/lib/eval-engine.ts |
321
+ | `normalTwoSidedPValue` | none | only this package's tests: src/statistics/inference.test.ts:2 |
317
322
  | `notBlocked` | none | only this package's tests: src/oracle.test.ts:2 |
318
323
  | `NotFoundError` | production | agent-runtime:src/errors.ts |
319
324
  | `objectiveEval` | production | agent-knowledge:src/research-loop.ts |
@@ -398,6 +403,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
398
403
  | `runSemanticConceptJudge` | production | agent-dev-container:products/intelligence/api/src/lib/optimization-engine.ts |
399
404
  | `runsForScenario` | production | phony:products/builder/api/src/eval/gate.ts |
400
405
  | `runTaskScore` | production | discovery-lab:tools/strict-screen.mjs |
406
+ | `sampleMedian` | planned | doc: docs/concepts.md |
401
407
  | `scoreKnowledgeReadiness` | production | agent-builder:src/lib/.server/runtime/agent-task-readiness.ts |
402
408
  | `scorePolicyEditReadiness` | none | — |
403
409
  | `scoreRedTeamOutput` | production | agent-dev-container:products/intelligence/api/src/lib/optimization-gate.ts |
@@ -409,12 +415,15 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
409
415
  | `ServedCrossFamilyError` | none | only this package's tests: src/integrity/served-model.test.ts:2 |
410
416
  | `servedModelAcceptable` | production | this package: src/integrity/preflight.ts:33 |
411
417
  | `shareAllowed` | planned | doc: docs/redaction.md |
418
+ | `spanRecordsToTraceAnalysisStore` | planned | doc: docs/trace-analysis.md |
412
419
  | `spearmanR` | production | blueprint-agent:scripts/experiments/lib/benchmark-validity-report.mjs |
413
420
  | `stripFencedJson` | production | blueprint-agent:scripts/experiments/compare-analysis-reports.ts |
421
+ | `studentTTwoSidedPValue` | production | this package: src/baseline.ts:19 |
414
422
  | `subjectiveEval` | production | creative-agent:eval/control/creative-onboarding.ts |
415
423
  | `summarizeBackendIntegrity` | production | agent-dev-container:products/intelligence/api/src/lib/run-provenance.ts |
416
424
  | `summarizeNumberSeries` | production | this package: src/campaign/cell-aggregates.ts:12 |
417
425
  | `summarizePreferenceMemory` | production | agent-builder:src/lib/.server/eval/loops/auto-research-runner.ts |
426
+ | `summarizeSample` | planned | doc: docs/concepts.md |
418
427
  | `summaryTable` | production | blueprint-agent:scripts/experiments/vb-runrecord-analysis.ts |
419
428
  | `textInSnapshot` | none | only this package's tests: src/oracle.test.ts:2 |
420
429
  | `toAgentProfileJson` | production | blueprint-agent:scripts/experiments/lib/agent-profile-cell.ts |
@@ -425,6 +434,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
425
434
  | `traceContract` | production | creative-agent:eval/lib/trace-contracts.ts |
426
435
  | `TraceEmitter` | production | agent-builder:src/lib/.server/runtime/trace-runtime.ts |
427
436
  | `transientDispatchFailure` | planned | doc: docs/eval-surface-map.md |
437
+ | `twoByTwoPValue` | planned | doc: docs/concepts.md |
428
438
  | `UNKNOWN_MODEL` | production | this package: src/campaign/presets/run-profile-matrix.ts:54 |
429
439
  | `urlContains` | none | only this package's tests: src/oracle.test.ts:2 |
430
440
  | `userQuestionsForKnowledgeGaps` | production | agent-dev-container:products/intelligence/api/src/routes/project-engines.ts |
@@ -441,6 +451,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
441
451
  | `viteDeployRunner` | production | blueprint-agent:scripts/experiments/lib/deploy-runner.ts |
442
452
  | `weightedComposite` | production | agent-app:src/eval/index.ts |
443
453
  | `weightedMean` | production | blueprint-agent:scripts/experiments/lib/synthesis-quality-judge.ts |
454
+ | `welchsTTest` | production | this package: src/contract/analyze-runs.ts:25 |
444
455
  | `WILCOXON_EXACT_MAX_N` | none | — |
445
456
  | `wilcoxonSignedRank` | production | agent-builder:src/lib/.server/eval/loops/differential-eval.ts |
446
457
  | `wilson` | production | agent-dev-container:products/intelligence/api/src/lib/project-analysis-coverage-recommendations.ts |
@@ -489,7 +500,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
489
500
  | `AnalystRegistry` | production | blueprint-agent:scripts/experiments/vb-multi-analyst.ts |
490
501
  | `analystUsageReceiptFromPrimeUsage` | production | this package: src/analyst/benchmark-runner-prime.ts:19 |
491
502
  | `appendVerificationArtifactsToOtlp` | production | this package: src/analyst/benchmark-public-data.ts:32 |
492
- | `askTraceQuestions` | planned | doc: docs/jev-behavior-review.md |
503
+ | `askTraceQuestions` | planned | doc: docs/systemone-behavior-review.md |
493
504
  | `assertProposalFindings` | production | agent-runtime:src/improvement/code-execution.ts |
494
505
  | `behavioralAnalyst` | production | agent-dev-container:products/intelligence/api/src/lib/deep-trace-analyst.ts |
495
506
  | `bindAnalyst` | planned | doc: docs/trace-analysis.md |
@@ -644,7 +655,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
644
655
 
645
656
  ### `./campaign`
646
657
 
647
- 166 value exports — 117 production, 22 planned, 27 none.
658
+ 168 value exports — 119 production, 22 planned, 27 none.
648
659
 
649
660
  | symbol | consumer | evidence |
650
661
  | --- | --- | --- |
@@ -665,6 +676,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
665
676
  | `buildTraceAnalystSurfaceDispatch` | none | only this package's tests: src/campaign/analyst-surface.test.ts:4 |
666
677
  | `campaignBreakdown` | production | this package: src/campaign/external-text-evaluation.ts:11 |
667
678
  | `campaignCellSearchResult` | production | this package: src/campaign/presets/run-optimization.ts:51 |
679
+ | `campaignCoverage` | production | this package: src/campaign/presets/run-optimization.ts:32 |
668
680
  | `campaignMeanComposite` | production | agent-dev-container:products/intelligence/api/src/lib/optimization-engine.ts |
669
681
  | `campaignMeasurementDigest` | production | this package: src/contract/self-improve-method.ts:14 |
670
682
  | `campaignScenarioIdentity` | production | agent-runtime:src/improvement/method-identity.ts |
@@ -681,6 +693,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
681
693
  | `costFromLedgerSummary` | production | supervisor-lab:bench/drain/seat.ts |
682
694
  | `createProfileMatrixPlan` | production | discovery-lab:tools/run-profile-confirmation.mjs |
683
695
  | `createReferenceEquivalenceJudge` | none | only this package's tests: src/reference-equivalence-judge.test.ts:13 |
696
+ | `createRetainedDispatch` | production | this package: scripts/prove-retained-dispatch-integrity.ts:9 |
684
697
  | `createRunCostLedger` | production | agent-dev-container:products/intelligence/api/src/lib/eval-engine.ts |
685
698
  | `createSearchHistoryReceipt` | production | this package: src/campaign/search-ledger-recording.ts:27 |
686
699
  | `crowdedFrontierParent` | production | this package: scripts/search-sim.ts:146 |
@@ -713,13 +726,13 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
713
726
  | `inMemoryCampaignStorage` | production | agent-dev-container:products/sandbox/evals/src/auto-optimization.ts |
714
727
  | `isProposedCandidate` | production | supervisor-lab:bench/sequential-arena.ts |
715
728
  | `isTransientTransportFailure` | production | gtm-agent:eval/suites/persona.ts |
716
- | `LabeledScenarioStoreError` | none | only this package's tests: tests/campaign/run-campaign.test.ts:6 |
729
+ | `LabeledScenarioStoreError` | none | only this package's tests: tests/campaign/run-campaign.test.ts:7 |
717
730
  | `labelTrustRank` | production | this package: src/campaign/labeled-store/fs-adapter.ts:40 |
718
731
  | `llmJudge` | production | agent-runtime:examples/agentic-data-creation/offline-fixtures.ts |
719
732
  | `loadEvalFixture` | planned | doc: docs/eval-fixtures.md |
720
733
  | `loadEvalFixtureScenarios` | planned | example: examples/eval-fixtures-quickstart/index.ts:11 |
721
734
  | `loopProvenanceArgsFromResult` | production | this package: src/contract/self-improve.ts:36 |
722
- | `loopProvenanceSpans` | none | only this package's tests: tests/campaign/presets.test.ts:6 |
735
+ | `loopProvenanceSpans` | none | only this package's tests: tests/campaign/presets.test.ts:7 |
723
736
  | `makePlaybackDispatch` | none | only this package's tests: src/campaign/presets/playback.test.ts:6 |
724
737
  | `makeProposalFinding` | production | agent-runtime:examples/improve/improve.ts |
725
738
  | `neutralizationGate` | planned | consumer tests: tax-agent:tests/eval/benchmarks/taxcalc/evolve.ts |
@@ -907,9 +920,9 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
907
920
 
908
921
  | symbol | consumer | evidence |
909
922
  | --- | --- | --- |
910
- | `asAnalyst` | production | this package: src/jev.ts:5 |
911
- | `asJudge` | production | this package: src/jev.ts:5 |
912
- | `createEvaluator` | production | this package: src/jev.ts:5 |
923
+ | `asAnalyst` | production | this package: src/systemone.ts:5 |
924
+ | `asJudge` | production | this package: src/systemone.ts:5 |
925
+ | `createEvaluator` | production | this package: src/systemone.ts:5 |
913
926
 
914
927
  ### `./experiment`
915
928
 
@@ -1061,40 +1074,6 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1061
1074
  | `TraceSpanEventSchema` | planned | example: examples/hosted-ingest-server/server.ts:33 |
1062
1075
  | `UnixNanoTimestampSchema` | none | — |
1063
1076
 
1064
- ### `./jev`
1065
-
1066
- 15 value exports — 8 production, 6 planned, 1 none.
1067
-
1068
- | symbol | consumer | evidence |
1069
- | --- | --- | --- |
1070
- | `asAnalyst` | production | this package: src/jev.ts:5 |
1071
- | `asJudge` | production | this package: src/jev.ts:5 |
1072
- | `assessJevReview` | planned | doc: docs/changes/jev-evidence-review.md |
1073
- | `createEvaluator` | production | this package: src/jev.ts:5 |
1074
- | `jevAnalyst` | planned | example: examples/jev-behavior-review.ts:3 |
1075
- | `jevEvaluator` | planned | doc: docs/jev-behavior-review.md |
1076
- | `jevJudge` | planned | example: examples/jev-product-integrity.ts:4 |
1077
- | `JevResponseError` | none | — |
1078
- | `jevReviewFindings` | planned | example: examples/jev-behavior-review.ts:3 |
1079
- | `jevUsage` | production | this package: src/jev.ts:7 |
1080
- | `normalizedJevScore` | planned | doc: docs/jev.md |
1081
- | `parseJevQuestions` | production | this package: src/jev.ts:7 |
1082
- | `parseJevRequest` | production | this package: src/jev-review.ts:9 |
1083
- | `parseJevResult` | production | this package: src/jev-review.ts:9 |
1084
- | `prepareJevReview` | production | this package: src/rl/claim-integrity.ts:39 |
1085
-
1086
- ### `./jev/protocol`
1087
-
1088
- 5 value exports — 4 production, 0 planned, 1 none.
1089
-
1090
- | symbol | consumer | evidence |
1091
- | --- | --- | --- |
1092
- | `JevResponseError` | none | — |
1093
- | `jevUsage` | production | this package: src/jev.ts:7 |
1094
- | `parseJevQuestions` | production | this package: src/jev.ts:7 |
1095
- | `parseJevRequest` | production | this package: src/jev-review.ts:9 |
1096
- | `parseJevResult` | production | this package: src/jev-review.ts:9 |
1097
-
1098
1077
  ### `./ledger-core`
1099
1078
 
1100
1079
  20 value exports — 19 production, 0 planned, 1 none.
@@ -1116,7 +1095,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1116
1095
  | `readTrustedHeadFile` | production | this package: src/ledger-core/journal.ts:55 |
1117
1096
  | `replayLedgerText` | production | this package: src/campaign/search-ledger.ts:23 |
1118
1097
  | `trustedHeadPathFor` | production | this package: src/ledger-core/journal.ts:55 |
1119
- | `tryAcquireAtomicFileLock` | production | this package: src/campaign/single-run-lock.ts:17 |
1098
+ | `tryAcquireAtomicFileLock` | production | this package: scripts/prove-retained-dispatch.ts:10 |
1120
1099
  | `tryWithLedgerFileLock` | production | this package: src/campaign/search-ledger-file.ts:3 |
1121
1100
  | `verifyEntriesAgainstTrustedHead` | production | this package: src/ledger-core/journal.ts:55 |
1122
1101
  | `withLedgerFileLock` | production | this package: src/analyst/benchmark-response-cache.ts:6 |
@@ -1134,12 +1113,13 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1134
1113
 
1135
1114
  ### `./meta-eval`
1136
1115
 
1137
- 28 value exports — 13 production, 14 planned, 1 none.
1116
+ 32 value exports — 13 production, 18 planned, 1 none.
1138
1117
 
1139
1118
  | symbol | consumer | evidence |
1140
1119
  | --- | --- | --- |
1141
1120
  | `auditEvaluator` | planned | example: examples/evaluation-integrity/index.ts:15 |
1142
1121
  | `auditProbabilityPolicy` | planned | doc: docs/changes/probability-policy-audit.md |
1122
+ | `brierScore` | planned | doc: docs/systemone.md |
1143
1123
  | `calibrateJudge` | production | creative-agent:eval/calibrate-judges.ts |
1144
1124
  | `calibrateJudgeContinuous` | planned | consumer tests: tax-agent:tests/eval/lib/judge-sentinel.ts |
1145
1125
  | `calibrationCurve` | planned | doc: docs/eval-surface-map.md |
@@ -1149,6 +1129,8 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1149
1129
  | `correlationStudy` | production | phony:products/builder/api/src/eval/outcomes.ts |
1150
1130
  | `definePlant` | planned | doc: docs/eval-surface-map.md |
1151
1131
  | `evalHealthStamp` | production | creative-agent:eval/lib/judge-sentinel.ts |
1132
+ | `evaluatorAdmissionPolicySchema` | planned | doc: docs/evaluator-construction.md |
1133
+ | `evaluatorAuditObservationSchema` | planned | doc: docs/evaluator-construction.md |
1152
1134
  | `fileSentinelStore` | production | creative-agent:eval/lib/judge-sentinel.ts |
1153
1135
  | `FileSystemOutcomeStore` | production | phony:products/builder/api/src/eval/outcomes.ts |
1154
1136
  | `InMemoryOutcomeStore` | planned | consumer tests: phony:products/builder/api/src/eval/outcomes-correlate.test.ts |
@@ -1156,6 +1138,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1156
1138
  | `judgeSentinelReport` | production | creative-agent:eval/lib/judge-sentinel.ts |
1157
1139
  | `OutcomeStoreError` | planned | doc: docs/outcome-validity.md |
1158
1140
  | `perturbEvidence` | planned | doc: docs/plants.md |
1141
+ | `planEvaluatorAudit` | planned | doc: docs/evaluator-construction.md |
1159
1142
  | `plantByPerturbation` | planned | doc: docs/plants.md |
1160
1143
  | `positionalBias` | planned | doc: docs/concepts.md |
1161
1144
  | `rubricPredictiveValidity` | production | physim:apps/server/src/scripts/agent-eval/validate-rubrics.ts |
@@ -1294,14 +1277,14 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1294
1277
  | `buildRlDataset` | production | this package: src/rl/corpus.ts:24 |
1295
1278
  | `buildVerifiedFindingRow` | none | only this package's tests: src/rl/verified-findings-dataset.test.ts:5 |
1296
1279
  | `campaignToRunRecords` | production | agent-builder:src/lib/.server/eval/loops/auto-research-runner.ts |
1297
- | `checkerReadSignal` | planned | doc: docs/jev-behavior-review.md |
1280
+ | `checkerReadSignal` | planned | doc: docs/systemone-behavior-review.md |
1298
1281
  | `CLAIM_INTEGRITY_VERSION` | none | — |
1299
1282
  | `claimBrief` | none | — |
1300
1283
  | `claimIntegrityDigest` | none | only this package's tests: src/rl/claim-integrity.test.ts:4 |
1301
- | `claimIntegrityJevQuestions` | none | — |
1302
- | `claimIntegrityJevReview` | planned | doc: docs/jev-behavior-review.md |
1303
- | `claimIntegrityTraceQuestions` | planned | doc: docs/jev-behavior-review.md |
1304
- | `claimIntegrityVerdict` | planned | doc: docs/jev-behavior-review.md |
1284
+ | `claimIntegritySystemOneQuestions` | none | — |
1285
+ | `claimIntegritySystemOneReview` | planned | doc: docs/systemone-behavior-review.md |
1286
+ | `claimIntegrityTraceQuestions` | planned | doc: docs/systemone-behavior-review.md |
1287
+ | `claimIntegrityVerdict` | planned | doc: docs/systemone-behavior-review.md |
1305
1288
  | `compareAdaptationCurves` | planned | doc: docs/design/statistics-decisions.md |
1306
1289
  | `datasheetToMarkdown` | none | only this package's tests: src/rl/dataset.test.ts:7 |
1307
1290
  | `defaultBehaviorFeatures` | none | only this package's tests: src/rl/sim-fidelity.test.ts:3 |
@@ -1312,29 +1295,28 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1312
1295
  | `extractStepRewards` | none | only this package's tests: tests/rl-process-reward.test.ts:3 |
1313
1296
  | `extractVerifiableReward` | planned | named in gtm-agent (bind not in the import graph) |
1314
1297
  | `extractVerifiableRewardsFromRecords` | production | creative-agent:eval/canonical-export.ts |
1315
- | `farmingSignal` | planned | doc: docs/jev-behavior-review.md |
1298
+ | `farmingSignal` | planned | doc: docs/systemone-behavior-review.md |
1316
1299
  | `FileSystemOutcomeStore` | production | phony:products/builder/api/src/eval/outcomes.ts |
1317
1300
  | `filterDeterministicallyRewarded` | production | this package: src/rl/reward-hacking.ts:43 |
1318
1301
  | `firstPassK` | planned | doc: docs/statistical-evidence.md |
1319
1302
  | `fitBradleyTerry` | none | only this package's tests: tests/rl-tournament.test.ts:2 |
1320
1303
  | `GRADER_REFERENCE_PHRASES` | none | — |
1321
- | `graderReferenceSignal` | planned | doc: docs/jev-behavior-review.md |
1304
+ | `graderReferenceSignal` | planned | doc: docs/systemone-behavior-review.md |
1322
1305
  | `injectIrrelevantClause` | none | only this package's tests: tests/rl-contamination.test.ts:2 |
1323
1306
  | `InMemoryOutcomeStore` | planned | consumer tests: phony:products/builder/api/src/eval/outcomes-correlate.test.ts |
1324
1307
  | `inverseProbabilityWeighting` | planned | consumer tests: agent-knowledge:tests/memory-holdout.test.ts |
1325
- | `jevSignal` | planned | doc: docs/jev-behavior-review.md |
1326
1308
  | `jsDivergence` | none | only this package's tests: src/rl/sim-fidelity.test.ts:3 |
1327
1309
  | `loadVerifiedFindingsDataset` | planned | doc: docs/verified-labels-flywheel.md |
1328
- | `monitorSignal` | planned | doc: docs/jev-behavior-review.md |
1310
+ | `monitorSignal` | planned | doc: docs/systemone-behavior-review.md |
1329
1311
  | `offPolicyEstimateAll` | none | only this package's tests: tests/rl-off-policy.test.ts:3 |
1330
1312
  | `paretoFrontier` | production | agent-dev-container:products/sandbox/evals/run.ts |
1331
- | `parseSourceScopeReferee` | planned | doc: docs/jev-behavior-review.md |
1313
+ | `parseSourceScopeReferee` | planned | doc: docs/systemone-behavior-review.md |
1332
1314
  | `PredictiveValidityResearcher` | planned | doc: docs/design/mlbenchmarks-book-review.md |
1333
1315
  | `prmTrainingPairs` | planned | doc: examples/fine-tune-with-prime-rl/README.md |
1334
1316
  | `quantileEdges` | none | only this package's tests: src/rl/sim-fidelity.test.ts:3 |
1335
1317
  | `readCorpus` | planned | named in agent-runtime (bind not in the import graph) |
1336
1318
  | `REFEREE_VERDICTS` | none | — |
1337
- | `refereeSignal` | planned | doc: docs/jev-behavior-review.md |
1319
+ | `refereeSignal` | planned | doc: docs/systemone-behavior-review.md |
1338
1320
  | `renameVariables` | none | only this package's tests: tests/rl-contamination.test.ts:2 |
1339
1321
  | `ruleHolds` | none | only this package's tests: src/rl/claim-integrity.test.ts:4 |
1340
1322
  | `runAdaptationCurve` | planned | doc: docs/statistical-evidence.md |
@@ -1343,14 +1325,15 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1343
1325
  | `runEvalCampaign` | production | agent-builder:scripts/eval.ts |
1344
1326
  | `runRLCampaign` | planned | doc: docs/outcome-validity.md |
1345
1327
  | `runwiseStepRewardSummary` | none | only this package's tests: tests/rl-process-reward.test.ts:3 |
1346
- | `scopeSignals` | planned | doc: docs/jev-behavior-review.md |
1328
+ | `scopeSignals` | planned | doc: docs/systemone-behavior-review.md |
1347
1329
  | `selfConsistency` | none | only this package's tests: tests/rl-adversarial-and-compute.test.ts:2 |
1348
1330
  | `selfNormalizedImportanceWeighting` | planned | consumer tests: agent-knowledge:tests/memory-holdout.test.ts |
1349
1331
  | `shuffleOrder` | none | — |
1350
1332
  | `simFidelityReport` | none | only this package's tests: src/rl/sim-fidelity.test.ts:3 |
1351
- | `sourceScopeRefereeMessages` | planned | doc: docs/jev-behavior-review.md |
1333
+ | `sourceScopeRefereeMessages` | planned | doc: docs/systemone-behavior-review.md |
1352
1334
  | `stepRewardsToJsonl` | none | only this package's tests: src/rollout/gate-properties.test.ts:38 |
1353
1335
  | `summarizeVerifiedFindings` | none | only this package's tests: src/rl/verified-findings-dataset.test.ts:5 |
1336
+ | `systemOneSignal` | planned | doc: docs/systemone-behavior-review.md |
1354
1337
  | `toAnthropicFormat` | production | blueprint-agent:scripts/experiments/lib/steering-dataset.ts |
1355
1338
  | `toDpoJsonl` | production | this package: src/rl/dataset.ts:27 |
1356
1339
  | `toDpoRows` | production | this package: src/rl/dataset.ts:27 |
@@ -1369,7 +1352,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1369
1352
 
1370
1353
  ### `./rollout`
1371
1354
 
1372
- 67 value exports — 42 production, 15 planned, 10 none.
1355
+ 68 value exports — 42 production, 16 planned, 10 none.
1373
1356
 
1374
1357
  | symbol | consumer | evidence |
1375
1358
  | --- | --- | --- |
@@ -1401,13 +1384,14 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1401
1384
  | `gateGamedOutcome` | none | only this package's tests: src/rollout/gate-properties.test.ts:56 |
1402
1385
  | `HARBOR_IMPORT_GAP` | none | only this package's tests: src/rollout/interchange/harbor.test.ts:6 |
1403
1386
  | `isRealnessGated` | production | starter-foundry:src/lib/held-out-gate.ts |
1404
- | `isRolloutLine` | production | this package: src/supervisor-run/rollout-nodes.ts:26 |
1387
+ | `isRolloutLine` | production | this package: src/supervisor-run/rollout-nodes.ts:27 |
1405
1388
  | `isTrainableSplit` | production | this package: src/rollout/release/hf-dataset.ts:24 |
1406
1389
  | `measureFormatGate` | production | this package: src/rollout/release/hf-dataset.ts:26 |
1407
1390
  | `mintRolloutRows` | production | agent-builder:src/lib/.server/eval/loops/auto-research-runner.ts |
1408
1391
  | `observedScore` | production | this package: src/rl/reward-hacking.ts:40 |
1409
1392
  | `observedSplitScore` | production | starter-foundry:src/lib/held-out-gate.ts |
1410
1393
  | `openOpencodeDb` | production | discovery-lab:dashboard/lib/transcript.mjs |
1394
+ | `parseClaudeTranscript` | planned | doc: docs/rollout.md |
1411
1395
  | `parseRolloutReleaseArgs` | none | only this package's tests: src/rollout/release/hf-dataset.test.ts:9 |
1412
1396
  | `planPushCommand` | none | only this package's tests: src/rollout/release/hf-dataset.test.ts:9 |
1413
1397
  | `readClaudeTranscript` | planned | doc: docs/rollout.md |
@@ -1430,7 +1414,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1430
1414
  | `toHarborTrajectory` | planned | doc: docs/rollout.md |
1431
1415
  | `toJsonl` | production | supervisor-lab:bench/vertical-rollout-package.ts |
1432
1416
  | `toRewardRows` | planned | doc: docs/rollout.md |
1433
- | `toRftItem` | none | only this package's tests: src/rollout/reward-invariant.test.ts:33 |
1417
+ | `toRftItem` | none | only this package's tests: src/rollout/mint.test.ts:9 |
1434
1418
  | `toRftItems` | production | this package: src/rollout/release/hf-dataset.ts:22 |
1435
1419
  | `toSftRows` | production | this package: src/rl/dataset.ts:27 |
1436
1420
  | `toVerifiersRolloutOutput` | none | only this package's tests: src/rollout/exporters.test.ts:2 |
@@ -1539,6 +1523,46 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1539
1523
  | `writeSupervisorRunReport` | planned | named in agent-runtime (bind not in the import graph) |
1540
1524
  | `writeSupervisorRunReportSafe` | planned | named in agent-runtime (bind not in the import graph) |
1541
1525
 
1526
+ ### `./systemone`
1527
+
1528
+ 18 value exports — 8 production, 10 planned, 0 none.
1529
+
1530
+ | symbol | consumer | evidence |
1531
+ | --- | --- | --- |
1532
+ | `asAnalyst` | production | this package: src/systemone.ts:5 |
1533
+ | `asJudge` | production | this package: src/systemone.ts:5 |
1534
+ | `assessSystemOneReview` | planned | doc: docs/systemone-behavior-review.md |
1535
+ | `createEvaluator` | production | this package: src/systemone.ts:5 |
1536
+ | `normalizedSystemOneScore` | planned | doc: docs/systemone.md |
1537
+ | `normalizeSystemOneResult` | planned | doc: docs/systemone.md |
1538
+ | `parseSystemOneQuestions` | production | this package: src/systemone.ts:14 |
1539
+ | `parseSystemOneRecordedRequest` | planned | example: examples/systemone-replay.ts:7 |
1540
+ | `parseSystemOneRequest` | production | this package: src/systemone-review.ts:11 |
1541
+ | `parseSystemOneResult` | production | this package: src/systemone-review.ts:11 |
1542
+ | `prepareSystemOneReview` | production | this package: src/rl/claim-integrity.ts:47 |
1543
+ | `systemOneAnalyst` | planned | example: examples/systemone-behavior-review.ts:3 |
1544
+ | `systemOneConfidence` | planned | doc: docs/systemone.md |
1545
+ | `systemOneEvaluator` | planned | doc: docs/systemone-behavior-review.md |
1546
+ | `systemOneJudge` | planned | example: examples/systemone-product-integrity.ts:4 |
1547
+ | `SystemOneResponseError` | planned | doc: docs/systemone.md |
1548
+ | `systemOneReviewFindings` | planned | example: examples/systemone-behavior-review.ts:3 |
1549
+ | `systemOneUsage` | production | this package: src/systemone.ts:14 |
1550
+
1551
+ ### `./systemone/protocol`
1552
+
1553
+ 8 value exports — 4 production, 4 planned, 0 none.
1554
+
1555
+ | symbol | consumer | evidence |
1556
+ | --- | --- | --- |
1557
+ | `normalizeSystemOneResult` | planned | doc: docs/systemone.md |
1558
+ | `parseSystemOneQuestions` | production | this package: src/systemone.ts:14 |
1559
+ | `parseSystemOneRecordedRequest` | planned | example: examples/systemone-replay.ts:7 |
1560
+ | `parseSystemOneRequest` | production | this package: src/systemone-review.ts:11 |
1561
+ | `parseSystemOneResult` | production | this package: src/systemone-review.ts:11 |
1562
+ | `systemOneConfidence` | planned | doc: docs/systemone.md |
1563
+ | `SystemOneResponseError` | planned | doc: docs/systemone.md |
1564
+ | `systemOneUsage` | production | this package: src/systemone.ts:14 |
1565
+
1542
1566
  ### `./trace-attributes`
1543
1567
 
1544
1568
  28 value exports — 26 production, 1 planned, 1 none.
@@ -1679,7 +1703,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1679
1703
 
1680
1704
  ### `./traces`
1681
1705
 
1682
- 124 value exports — 96 production, 8 planned, 20 none.
1706
+ 125 value exports — 96 production, 9 planned, 20 none.
1683
1707
 
1684
1708
  | symbol | consumer | evidence |
1685
1709
  | --- | --- | --- |
@@ -1702,7 +1726,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1702
1726
  | `convertTraceStoresToOtlp` | planned | consumer tests: legal-agent:tests/eval/lib/traces-to-otlp.ts |
1703
1727
  | `createBoundedTraceAnalysisStore` | production | braid:src/adapters/analysis/trace-store.ts |
1704
1728
  | `DEFAULT_TRACE_ANALYST_BUDGETS` | production | agent-builder:src/lib/.server/eval/stores/d1-trace-analysis-store-adapter.ts |
1705
- | `defaultProviderRedactor` | production | this package: src/llm-client.ts:53 |
1729
+ | `defaultProviderRedactor` | production | this package: src/llm-client.ts:54 |
1706
1730
  | `defaultTraceInsightPanel` | none | only this package's tests: src/trace-analyst/insights.test.ts:3 |
1707
1731
  | `describeTraceInsightScope` | production | blueprint-agent:scripts/experiments/lib/analyze-vb-run/report-html.ts |
1708
1732
  | `detectCredential` | production | this package: scripts/redaction-corpus.ts:9 |
@@ -1763,7 +1787,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1763
1787
  | `OUTPUT_VALUE` | production | agent-runtime:src/runtime/supervise-surface.ts |
1764
1788
  | `planTraceInsightQuestions` | none | only this package's tests: src/trace-analyst/insights.test.ts:3 |
1765
1789
  | `projectOtlpFlatLine` | production | this package: src/trace-analyst/otlp-to-run-records.ts:60 |
1766
- | `providerFromBaseUrl` | production | this package: src/llm-client.ts:53 |
1790
+ | `providerFromBaseUrl` | production | this package: src/llm-client.ts:54 |
1767
1791
  | `redact` | production | this package: scripts/redaction-corpus.ts:9 |
1768
1792
  | `redactForShare` | production | this package: scripts/redaction-corpus.ts:9 |
1769
1793
  | `REDACTION_PROFILES` | production | this package: scripts/redaction-corpus.ts:9 |
@@ -1779,6 +1803,7 @@ The `none` set was reviewed symbol by symbol on 2026-08-21. Four rules decided m
1779
1803
  | `shareAllowed` | planned | doc: docs/redaction.md |
1780
1804
  | `SPAN_KIND_ATTR_KEYS` | production | traces:src/run-span-tree.ts |
1781
1805
  | `SpanNotFoundError` | production | this package: src/trace-analyst/store-boundary.ts:1 |
1806
+ | `spanRecordsToTraceAnalysisStore` | planned | doc: docs/trace-analysis.md |
1782
1807
  | `stringField` | planned | named in agent-dev-container (bind not in the import graph) |
1783
1808
  | `throwIfRunIncomplete` | none | only this package's tests: tests/run-integrity.test.ts:3 |
1784
1809
  | `tokenizeDomainWords` | planned | consumer tests: blueprint-agent:scripts/experiments/__tests__/analyze-vb-run.test.ts |
package/docs/rollout.md CHANGED
@@ -92,7 +92,7 @@ Validation preserves source order and rejects duplicate pairs or missing ordinal
92
92
  | the gate checks themselves | `src/rollout/gate-checks.ts` | `GATE_CHECK_IDS`, `GATE_CHECKS`, `GATE_POLICIES`, `gateErrors(subject, policy)` — the one list every entry point draws from. The subject is the LINE (`{outcome, steps}`), not the outcome alone: a per-step reward is training signal and lives outside `outcome`. `readReward` / `payloadIsPopulated` are the total readers every check narrows through, so a value the gate cannot classify is refused rather than read as clean |
93
93
  | ledger file API | `src/rollout/ledger.ts` | `writeRolloutLedger`, `appendRolloutLines`, `readRolloutLedger` |
94
94
  | minting from records | `src/rollout/mint.ts` | `mintRolloutRows(records, traceStore)`: RunRecord joined to trace via shared `runId`. `unmintableReasons(record)`: the same door's refusals, reported without throwing |
95
- | harness-store intake | `src/rollout/readers/` | `openOpencodeDb` + `readOpencodeSessionMessages` (opencode sqlite), `findClaudeTranscripts` + `readClaudeTranscript` (Claude Code project jsonl) |
95
+ | harness-store intake | `src/rollout/readers/` | `openOpencodeDb` + `readOpencodeSessionMessages` (opencode sqlite), `findClaudeTranscripts` + `readClaudeTranscript` (Claude Code project JSONL), `parseClaudeTranscript` (retained JSONL text) |
96
96
  | interchange | `src/rollout/interchange/harbor.ts` | `toHarborTrajectory` / `toHarborTrajectories` / `fromHarborTrajectory` / `relabelImportedSplit` (Harbor ATIF-v1.7); all root-exported as well as on the `/rollout` subpath |
97
97
  | exporters | `src/rollout/exporters.ts` | `toSftRows`, `toRewardRows`, `toVerifiersRolloutOutputs` (Prime Intellect), `toRftItems` (OpenAI RFT), `toJsonl` |
98
98
  | RL exporters | `src/rl/exporters.ts` | `toDpoRows`, `toGrpoRows`, `toSftRows`, `toPrmRows`; all training inputs are `MintedRolloutLine[]` or line-referenced artifacts with explicit line context |
@@ -200,3 +200,11 @@ A step carrying none of the four produces no span — absent stays absent.
200
200
  Letta's trajectory-v1 is a strict subset of what we need from ATIF for this purpose: no per-step or aggregate cost, no multi-agent/subagent structure, and no token-id or logprob channel.
201
201
  A Letta sink would therefore carry strictly less than the ATIF one while adding a second format to keep correct against schema drift.
202
202
  Do not add one without a concrete consumer that reads Letta and cannot read ATIF.
203
+
204
+ ### Read retained Claude transcripts
205
+
206
+ Use `parseClaudeTranscript(raw, options)` from `@tangle-network/agent-eval/rollout` for JSONL already resolved from a retained artifact.
207
+ It returns the same messages, tool calls/results, usage and source gaps as `readClaudeTranscript(path, options)`.
208
+ Set `includeSidechain: true` when reading a native subagent transcript.
209
+ The caller retains the original bytes and verifies their artifact identity before parsing.
210
+ This parser does not read CAS, store another copy, redact content or establish capture completeness.