modelrig 0.9.0 → 0.11.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 (231) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/README.md +51 -27
  3. package/data/PROVENANCE.md +14 -0
  4. package/data/pricing-map.json +26 -0
  5. package/dist/adapters/attempt-meta-map.d.ts +8 -1
  6. package/dist/adapters/attempt-meta-map.d.ts.map +1 -1
  7. package/dist/adapters/attempt-meta-map.js +4 -0
  8. package/dist/adapters/build-adapters.js +2 -2
  9. package/dist/adapters/gemini.d.ts +28 -1
  10. package/dist/adapters/gemini.d.ts.map +1 -1
  11. package/dist/adapters/gemini.js +38 -9
  12. package/dist/adapters/grok.d.ts.map +1 -1
  13. package/dist/adapters/grok.js +53 -4
  14. package/dist/adapters/openai-compat.d.ts +8 -2
  15. package/dist/adapters/openai-compat.d.ts.map +1 -1
  16. package/dist/adapters/openai-compat.js +8 -1
  17. package/dist/adapters/openai-stream.d.ts +10 -2
  18. package/dist/adapters/openai-stream.d.ts.map +1 -1
  19. package/dist/adapters/openai-stream.js +5 -1
  20. package/dist/adapters/openai.d.ts +10 -1
  21. package/dist/adapters/openai.d.ts.map +1 -1
  22. package/dist/adapters/openai.js +57 -7
  23. package/dist/adapters/responses-api.d.ts +61 -0
  24. package/dist/adapters/responses-api.d.ts.map +1 -0
  25. package/dist/adapters/responses-api.js +124 -0
  26. package/dist/artifacts/artifact.d.ts +20 -0
  27. package/dist/artifacts/artifact.d.ts.map +1 -1
  28. package/dist/artifacts/artifact.js +207 -171
  29. package/dist/artifacts/index.d.ts +3 -1
  30. package/dist/artifacts/index.d.ts.map +1 -1
  31. package/dist/artifacts/index.js +8 -1
  32. package/dist/bakeoff/groundedness.d.ts +58 -0
  33. package/dist/bakeoff/groundedness.d.ts.map +1 -0
  34. package/dist/bakeoff/groundedness.js +165 -0
  35. package/dist/bakeoff/quality.d.ts +14 -1
  36. package/dist/bakeoff/quality.d.ts.map +1 -1
  37. package/dist/bakeoff/quality.js +10 -0
  38. package/dist/bakeoff/replay.d.ts.map +1 -1
  39. package/dist/bakeoff/replay.js +4 -0
  40. package/dist/cli.d.ts.map +1 -1
  41. package/dist/cli.js +8 -0
  42. package/dist/config.d.ts +31 -0
  43. package/dist/config.d.ts.map +1 -1
  44. package/dist/config.js +23 -0
  45. package/dist/doctor-cli.d.ts +7 -0
  46. package/dist/doctor-cli.d.ts.map +1 -0
  47. package/dist/doctor-cli.js +68 -0
  48. package/dist/doctor-preflight.d.ts +64 -0
  49. package/dist/doctor-preflight.d.ts.map +1 -0
  50. package/dist/doctor-preflight.js +167 -0
  51. package/dist/feedback/coverage.d.ts.map +1 -1
  52. package/dist/feedback/coverage.js +9 -2
  53. package/dist/feedback/grade.d.ts +8 -1
  54. package/dist/feedback/grade.d.ts.map +1 -1
  55. package/dist/feedback/grade.js +4 -0
  56. package/dist/gateway/http-protocol.d.ts +19 -0
  57. package/dist/gateway/http-protocol.d.ts.map +1 -1
  58. package/dist/gateway/serve-client.d.ts +99 -0
  59. package/dist/gateway/serve-client.d.ts.map +1 -0
  60. package/dist/gateway/serve-client.js +360 -0
  61. package/dist/index.d.ts +31 -3
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +71 -8
  64. package/dist/prompts/manifest.d.ts +128 -0
  65. package/dist/prompts/manifest.d.ts.map +1 -0
  66. package/dist/prompts/manifest.js +214 -0
  67. package/dist/prompts/prompt-fetch.d.ts +84 -0
  68. package/dist/prompts/prompt-fetch.d.ts.map +1 -0
  69. package/dist/prompts/prompt-fetch.js +120 -0
  70. package/dist/prompts/prompt-resolve.d.ts +76 -0
  71. package/dist/prompts/prompt-resolve.d.ts.map +1 -0
  72. package/dist/prompts/prompt-resolve.js +93 -0
  73. package/dist/prompts/slot-resolver.d.ts +91 -0
  74. package/dist/prompts/slot-resolver.d.ts.map +1 -0
  75. package/dist/prompts/slot-resolver.js +135 -0
  76. package/dist/prompts/tools-register.d.ts +60 -0
  77. package/dist/prompts/tools-register.d.ts.map +1 -0
  78. package/dist/prompts/tools-register.js +48 -0
  79. package/dist/prompts/version-hash.d.ts +29 -0
  80. package/dist/prompts/version-hash.d.ts.map +1 -0
  81. package/dist/prompts/version-hash.js +54 -0
  82. package/dist/prompts-export-cli.d.ts +21 -0
  83. package/dist/prompts-export-cli.d.ts.map +1 -0
  84. package/dist/prompts-export-cli.js +130 -0
  85. package/dist/registry/cache-policy.d.ts.map +1 -1
  86. package/dist/registry/cache-policy.js +22 -0
  87. package/dist/registry/pricing-shape.d.ts +38 -8
  88. package/dist/registry/pricing-shape.d.ts.map +1 -1
  89. package/dist/registry/pricing-shape.js +40 -12
  90. package/dist/registry/pricing.d.ts +6 -5
  91. package/dist/registry/pricing.d.ts.map +1 -1
  92. package/dist/registry/pricing.js +9 -5
  93. package/dist/routes/destination-loader.d.ts +16 -0
  94. package/dist/routes/destination-loader.d.ts.map +1 -0
  95. package/dist/routes/destination-loader.js +29 -0
  96. package/dist/routes/draft.d.ts +7 -0
  97. package/dist/routes/draft.d.ts.map +1 -1
  98. package/dist/routes/draft.js +12 -0
  99. package/dist/routes/loader.d.ts.map +1 -1
  100. package/dist/routes/loader.js +27 -54
  101. package/dist/routes/output-loader.d.ts +42 -0
  102. package/dist/routes/output-loader.d.ts.map +1 -0
  103. package/dist/routes/output-loader.js +112 -0
  104. package/dist/routes/prompt-loader.d.ts +49 -0
  105. package/dist/routes/prompt-loader.d.ts.map +1 -0
  106. package/dist/routes/prompt-loader.js +113 -0
  107. package/dist/routes/resolved-bundle.d.ts +19 -0
  108. package/dist/routes/resolved-bundle.d.ts.map +1 -1
  109. package/dist/routes/resolved-bundle.js +24 -0
  110. package/dist/routes/screen-loader.d.ts +1 -1
  111. package/dist/routes/screen-loader.d.ts.map +1 -1
  112. package/dist/routes/screen-loader.js +8 -1
  113. package/dist/run/accept.d.ts +3 -0
  114. package/dist/run/accept.d.ts.map +1 -1
  115. package/dist/run/accept.js +1 -0
  116. package/dist/run/cost.d.ts +31 -2
  117. package/dist/run/cost.d.ts.map +1 -1
  118. package/dist/run/cost.js +57 -2
  119. package/dist/run/destination.d.ts +39 -0
  120. package/dist/run/destination.d.ts.map +1 -0
  121. package/dist/run/destination.js +45 -0
  122. package/dist/run/dispatch.d.ts +25 -3
  123. package/dist/run/dispatch.d.ts.map +1 -1
  124. package/dist/run/dispatch.js +26 -4
  125. package/dist/run/raw-defaults.d.ts.map +1 -1
  126. package/dist/run/raw-defaults.js +6 -1
  127. package/dist/run/raw-finalize.d.ts +96 -0
  128. package/dist/run/raw-finalize.d.ts.map +1 -0
  129. package/dist/run/raw-finalize.js +283 -0
  130. package/dist/run/raw-knobs.d.ts +36 -0
  131. package/dist/run/raw-knobs.d.ts.map +1 -0
  132. package/dist/run/raw-knobs.js +99 -0
  133. package/dist/run/raw-request.d.ts +24 -0
  134. package/dist/run/raw-request.d.ts.map +1 -0
  135. package/dist/run/raw-request.js +69 -0
  136. package/dist/run/raw-schema.d.ts +76 -0
  137. package/dist/run/raw-schema.d.ts.map +1 -0
  138. package/dist/run/raw-schema.js +166 -0
  139. package/dist/run/raw-search-cost.d.ts +49 -0
  140. package/dist/run/raw-search-cost.d.ts.map +1 -0
  141. package/dist/run/raw-search-cost.js +79 -0
  142. package/dist/run/raw-support.d.ts +64 -6
  143. package/dist/run/raw-support.d.ts.map +1 -1
  144. package/dist/run/raw-support.js +84 -11
  145. package/dist/run/raw.d.ts +25 -26
  146. package/dist/run/raw.d.ts.map +1 -1
  147. package/dist/run/raw.js +30 -351
  148. package/dist/run/record-attempt.d.ts +8 -0
  149. package/dist/run/record-attempt.d.ts.map +1 -1
  150. package/dist/run/record-attempt.js +26 -12
  151. package/dist/run/record-call.d.ts +104 -0
  152. package/dist/run/record-call.d.ts.map +1 -0
  153. package/dist/run/record-call.js +277 -0
  154. package/dist/run/repair-attempt.d.ts +68 -0
  155. package/dist/run/repair-attempt.d.ts.map +1 -0
  156. package/dist/run/repair-attempt.js +180 -0
  157. package/dist/run/resolve-destination.d.ts +49 -0
  158. package/dist/run/resolve-destination.d.ts.map +1 -0
  159. package/dist/run/resolve-destination.js +76 -0
  160. package/dist/run/routing-docs.d.ts.map +1 -1
  161. package/dist/run/routing-docs.js +9 -4
  162. package/dist/run/run.d.ts +30 -1
  163. package/dist/run/run.d.ts.map +1 -1
  164. package/dist/run/run.js +75 -148
  165. package/dist/run/telemetry-row.d.ts +92 -0
  166. package/dist/run/telemetry-row.d.ts.map +1 -0
  167. package/dist/run/telemetry-row.js +81 -0
  168. package/dist/run/validate.d.ts +12 -1
  169. package/dist/run/validate.d.ts.map +1 -1
  170. package/dist/run/validate.js +31 -0
  171. package/dist/run/web-search-pricing.d.ts +43 -0
  172. package/dist/run/web-search-pricing.d.ts.map +1 -0
  173. package/dist/run/web-search-pricing.js +56 -0
  174. package/dist/settings/grading-guide.d.ts +27 -1
  175. package/dist/settings/grading-guide.d.ts.map +1 -1
  176. package/dist/status.d.ts +6 -0
  177. package/dist/status.d.ts.map +1 -1
  178. package/dist/status.js +4 -1
  179. package/dist/telemetry/artifact-store.d.ts.map +1 -1
  180. package/dist/telemetry/artifact-store.js +11 -0
  181. package/dist/telemetry/attempt-meta.d.ts +66 -1
  182. package/dist/telemetry/attempt-meta.d.ts.map +1 -1
  183. package/dist/telemetry/attempt-meta.js +27 -1
  184. package/dist/telemetry/exporter-setup.d.ts +2 -0
  185. package/dist/telemetry/exporter-setup.d.ts.map +1 -1
  186. package/dist/telemetry/exporter-setup.js +6 -1
  187. package/dist/telemetry/grade-mappers.d.ts +5 -2
  188. package/dist/telemetry/grade-mappers.d.ts.map +1 -1
  189. package/dist/telemetry/grade-mappers.js +8 -2
  190. package/dist/telemetry/grades-sql.d.ts +4 -1
  191. package/dist/telemetry/grades-sql.d.ts.map +1 -1
  192. package/dist/telemetry/grades-sql.js +26 -3
  193. package/dist/telemetry/ingest-protocol.d.ts +26 -2
  194. package/dist/telemetry/ingest-protocol.d.ts.map +1 -1
  195. package/dist/telemetry/ingest-protocol.js +32 -29
  196. package/dist/telemetry/lanes.d.ts +31 -0
  197. package/dist/telemetry/lanes.d.ts.map +1 -0
  198. package/dist/telemetry/lanes.js +41 -0
  199. package/dist/telemetry/org-identity.d.ts +47 -0
  200. package/dist/telemetry/org-identity.d.ts.map +1 -0
  201. package/dist/telemetry/org-identity.js +100 -0
  202. package/dist/telemetry/route-registration.d.ts +48 -0
  203. package/dist/telemetry/route-registration.d.ts.map +1 -0
  204. package/dist/telemetry/route-registration.js +77 -0
  205. package/dist/telemetry/sinks.d.ts +10 -1
  206. package/dist/telemetry/sinks.d.ts.map +1 -1
  207. package/dist/telemetry/sinks.js +52 -6
  208. package/dist/telemetry/store-migrations.d.ts.map +1 -1
  209. package/dist/telemetry/store-migrations.js +13 -0
  210. package/dist/tenancy/api-key-format.d.ts +16 -1
  211. package/dist/tenancy/api-key-format.d.ts.map +1 -1
  212. package/dist/tenancy/api-key-format.js +17 -0
  213. package/dist/types/provider.d.ts +20 -3
  214. package/dist/types/provider.d.ts.map +1 -1
  215. package/dist/types/provider.js +1 -0
  216. package/dist/types/route.d.ts +76 -0
  217. package/dist/types/route.d.ts.map +1 -1
  218. package/dist/types/telemetry.d.ts +30 -2
  219. package/dist/types/telemetry.d.ts.map +1 -1
  220. package/docs/agent-skill/SKILL.md +75 -5
  221. package/docs/instrumentation.md +98 -36
  222. package/docs/llms.txt +96 -16
  223. package/docs/managed-serving.md +150 -0
  224. package/docs/mcp-oracle.md +75 -2
  225. package/docs/migration-playbook.md +5 -4
  226. package/docs/quickstart.md +169 -83
  227. package/package.json +3 -2
  228. package/registry/registry.json +82 -0
  229. package/dist/feedback/feedback.d.ts +0 -35
  230. package/dist/feedback/feedback.d.ts.map +0 -1
  231. package/dist/feedback/feedback.js +0 -39
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Native web-search per-call pricing (Native Web Search lane, spec N3) — the
3
+ * SINGLE source of truth for the surcharge a provider bills when the model calls
4
+ * its native `web_search` tool, and the generator behind the published rates.
5
+ *
6
+ * WHY ITS OWN FILE: same doctrine as `raw-defaults.ts` / `raw-support.ts` — a code
7
+ * constant the runtime reads (to write the synthetic `rung:"search"` cost row via
8
+ * `recordSearchCostRow`) AND the docs generator renders, so the published rate can
9
+ * never drift from what we charge. A drift test asserts the rendered rate is read
10
+ * from THIS constant (never retyped).
11
+ *
12
+ * COST IS AN ESTIMATE, NOT A MEASUREMENT: like all ModelRig cost, `perCallUsd` is a
13
+ * declared list rate. Vendor rates drift and vary by context tier — the lane's live
14
+ * gate reconciles these against a real invoice before any public claim is un-tagged.
15
+ *
16
+ * [ARCH-TODO] (builder, Step 4): before un-tagging, replace the placeholder rates
17
+ * below with the verified per-search list price for each provider (research §7
18
+ * [verify-live]) and wire `perCallUsd` into the raw success path (raw.ts:551-556)
19
+ * via `recordSearchCostRow`.
20
+ */
21
+ import type { ProviderId } from "../types/provider";
22
+ /** One provider's native web-search billing facts. */
23
+ export interface WebSearchRate {
24
+ /** USD billed per native `web_search` tool call (surcharge, on top of tokens). */
25
+ readonly perCallUsd: number;
26
+ /** Teaching note rendered in the docs table and the fixHint. */
27
+ readonly note: string;
28
+ }
29
+ /**
30
+ * Per-provider native web-search rates. Only providers whose grounding is
31
+ * `supported: true` in `RAW_KNOB_SUPPORT` need an entry; a provider with no native
32
+ * search never reaches the cost row (it uses the inject rung instead). Partial by
33
+ * design — a `Partial<Record<...>>` so unsupported providers are simply absent.
34
+ *
35
+ * [ARCH-TODO] rates are PLACEHOLDERS pending the [verify-live] invoice reconciliation.
36
+ */
37
+ export declare const WEB_SEARCH_PRICING: Partial<Record<ProviderId, WebSearchRate>>;
38
+ /** Lookup used by the raw success path to price the synthetic search-cost row.
39
+ * Returns 0 when the provider has no declared native-search rate (never throws —
40
+ * an absent rate must not break dispatch; it surfaces as a 0 estimate + the drift
41
+ * test / live gate catches a missing entry for a supported provider). */
42
+ export declare function webSearchPerCallUsd(provider: ProviderId): number;
43
+ //# sourceMappingURL=web-search-pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search-pricing.d.ts","sourceRoot":"","sources":["../../src/run/web-search-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAgBzE,CAAC;AAEF;;;yEAGyE;AACzE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * Native web-search per-call pricing (Native Web Search lane, spec N3) — the
4
+ * SINGLE source of truth for the surcharge a provider bills when the model calls
5
+ * its native `web_search` tool, and the generator behind the published rates.
6
+ *
7
+ * WHY ITS OWN FILE: same doctrine as `raw-defaults.ts` / `raw-support.ts` — a code
8
+ * constant the runtime reads (to write the synthetic `rung:"search"` cost row via
9
+ * `recordSearchCostRow`) AND the docs generator renders, so the published rate can
10
+ * never drift from what we charge. A drift test asserts the rendered rate is read
11
+ * from THIS constant (never retyped).
12
+ *
13
+ * COST IS AN ESTIMATE, NOT A MEASUREMENT: like all ModelRig cost, `perCallUsd` is a
14
+ * declared list rate. Vendor rates drift and vary by context tier — the lane's live
15
+ * gate reconciles these against a real invoice before any public claim is un-tagged.
16
+ *
17
+ * [ARCH-TODO] (builder, Step 4): before un-tagging, replace the placeholder rates
18
+ * below with the verified per-search list price for each provider (research §7
19
+ * [verify-live]) and wire `perCallUsd` into the raw success path (raw.ts:551-556)
20
+ * via `recordSearchCostRow`.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.WEB_SEARCH_PRICING = void 0;
24
+ exports.webSearchPerCallUsd = webSearchPerCallUsd;
25
+ /**
26
+ * Per-provider native web-search rates. Only providers whose grounding is
27
+ * `supported: true` in `RAW_KNOB_SUPPORT` need an entry; a provider with no native
28
+ * search never reaches the cost row (it uses the inject rung instead). Partial by
29
+ * design — a `Partial<Record<...>>` so unsupported providers are simply absent.
30
+ *
31
+ * [ARCH-TODO] rates are PLACEHOLDERS pending the [verify-live] invoice reconciliation.
32
+ */
33
+ exports.WEB_SEARCH_PRICING = {
34
+ // [ARCH-TODO] verify against live billing before un-tagging (research §7).
35
+ gemini: { perCallUsd: 0, note: "[ARCH-TODO] Google grounding rate — verify-live" },
36
+ openai: {
37
+ perCallUsd: 0.01,
38
+ note: "$10/1k calls (tool surcharge; tokens billed separately); verified live 2026-09-09 via Responses API web_search",
39
+ },
40
+ grok: {
41
+ perCallUsd: 0.005,
42
+ note: "$5/1k calls = $0.005 per CALL (not per-source; 'per-source' was the retired Live Search surface); retrieved content billed separately as input tokens. Verified live 2026-09-09 — 15/15 recency, 100% citation presence, avg 3.80 cites/response",
43
+ },
44
+ // Z.ai / GLM (B4a stub, consumed by B4b): native web_search is free/included, so
45
+ // the surcharge is 0. Present now so B4b flips zai.grounding → supported and this
46
+ // cost row is already wired. Grounding itself stays fail-closed until B4b.
47
+ zai: { perCallUsd: 0, note: "GLM native web_search is free/included" },
48
+ // Phase 2: anthropic (Messages web_search) — add when built.
49
+ };
50
+ /** Lookup used by the raw success path to price the synthetic search-cost row.
51
+ * Returns 0 when the provider has no declared native-search rate (never throws —
52
+ * an absent rate must not break dispatch; it surfaces as a 0 estimate + the drift
53
+ * test / live gate catches a missing entry for a supported provider). */
54
+ function webSearchPerCallUsd(provider) {
55
+ return exports.WEB_SEARCH_PRICING[provider]?.perCallUsd ?? 0;
56
+ }
@@ -19,7 +19,22 @@
19
19
  * TYPES ONLY — no behavior. Validation lives at the single write boundary
20
20
  * (modelrig-server's task-settings path).
21
21
  */
22
- /** One binary criterion — the unit the expert authors and the judge applies. */
22
+ /** A criterion's scale. Absent = binary pass/fail (equivalent to `{ max: 1 }`).
23
+ * `{ max }` is an ordinal points scale 0..max; `{ enum }` is ordered categories
24
+ * (index 0 = worst … last = best). Either way a per-criterion sub-score
25
+ * normalizes to [0,1] for the weighted roll-up (call-qa F1; grade-rollup.ts). */
26
+ export type GradingGuideScale = {
27
+ readonly max: number;
28
+ } | {
29
+ readonly enum: readonly string[];
30
+ };
31
+ /** One criterion — the unit the expert authors and the judge applies.
32
+ *
33
+ * `id`/`title`/`pass`/`fail` are the original binary shape and are all a
34
+ * criterion needs; the four optional fields (call-qa F1) let a QA-style
35
+ * scorecard carry weight, a non-binary scale, a fatal (auto-fail) flag, and an
36
+ * evidence requirement WITHOUT breaking any existing binary guide — every
37
+ * shipped template omits them and stays valid. */
23
38
  export interface GradingGuideCriterion {
24
39
  /** Stable handle, unique within the guide (per-criterion grades key on it). */
25
40
  readonly id: string;
@@ -28,6 +43,17 @@ export interface GradingGuideCriterion {
28
43
  readonly pass: string;
29
44
  /** One sentence describing what a FAIL on this criterion looks like. */
30
45
  readonly fail: string;
46
+ /** Relative contribution to the weighted overall score. Default 1; must be
47
+ * a finite number > 0. (call-qa F1) */
48
+ readonly weight?: number;
49
+ /** Scoring scale. Absent = binary pass/fail. (call-qa F1) */
50
+ readonly scale?: GradingGuideScale;
51
+ /** When true, a FAIL on this criterion forces the overall verdict to fail
52
+ * regardless of the weighted score — a fatal compliance miss. (call-qa F1) */
53
+ readonly fatal?: boolean;
54
+ /** When true, the scorer must cite at least one grounded evidence quote for
55
+ * this criterion (enforced by the F3 groundedness check). (call-qa F1) */
56
+ readonly evidence_required?: boolean;
31
57
  }
32
58
  /** Escalation jury knobs (ruling §7.6 — defaults: single judge for volume,
33
59
  * jury on escalation only). All optional; absent = server defaults at judge
@@ -1 +1 @@
1
- {"version":3,"file":"grading-guide.d.ts","sourceRoot":"","sources":["../../src/settings/grading-guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;4CAE4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC;gEAC4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED;;gEAEgE;AAChE,MAAM,WAAW,iBAAiB;IAChC;4EACwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD;qFACiF;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C;2CACuC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;CAC9C;AAED;;;gCAGgC;AAChC,MAAM,WAAW,YAAY;IAC3B;;qDAEiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;CAC9C"}
1
+ {"version":3,"file":"grading-guide.d.ts","sourceRoot":"","sources":["../../src/settings/grading-guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;iFAGiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEhG;;;;;;kDAMkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;2CACuC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC;kFAC8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;8EAC0E;IAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED;;4CAE4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACrC;gEAC4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED;;gEAEgE;AAChE,MAAM,WAAW,iBAAiB;IAChC;4EACwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD;qFACiF;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C;2CACuC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;CAC9C;AAED;;;gCAGgC;AAChC,MAAM,WAAW,YAAY;IAC3B;;qDAEiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC;CAC9C"}
package/dist/status.d.ts CHANGED
@@ -27,6 +27,12 @@ export interface RigStatus {
27
27
  /** Content custody (E2-C) — its own gate, unchanged by the §2 metadata flip. */
28
28
  readonly contentCustody: boolean;
29
29
  readonly otlp: "configured" | "disabled";
30
+ /** Managed serving (Unified Route U3, ruling D-2) — the `config.managedServing`
31
+ * flag (set IN CODE via `createRig`, NOT an env var; always resolved), reported
32
+ * honestly like `otlp`. `enabled` here means the flag is on for this rig; a run
33
+ * still only serves `modelrig-served` for a served-capable provider (else
34
+ * fail-closed). */
35
+ readonly managedServing: "enabled" | "disabled";
30
36
  /** Cache accounting posture (cache-aware-routing WS-A/WS-D). Derived from the
31
37
  * policy registry — config-only, so `status` shows it anywhere. Live per-route
32
38
  * hit rate + effective input rate are a control-plane read, surfaced on the
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;kFAC8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IACzC;;;qFAGiF;IACjF,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B;gEAC4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,CAAC,CAAC;IACxE;iFAC6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B;6BACyB;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;8EAC0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED;;0EAE0E;AAC1E,wBAAgB,YAAY,IAAI,YAAY,CAI3C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,eAAe,GAAG,IAAW,GACrC,gBAAgB,CAkBlB;AAWD;uFACuF;AACvF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAa,EACpD,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,EAC1B,OAAO,GAAE,eAAe,GAAG,IAAW,GACrC,SAAS,CAUX;AAED;;kFAEkF;AAClF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,eAAe,GAAG,IAAW,GAAG,MAAM,CASlG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGtD;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAiC5D"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;kFAC8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IACzC;;;;uBAImB;IACnB,QAAQ,CAAC,cAAc,EAAE,SAAS,GAAG,UAAU,CAAC;IAChD;;;qFAGiF;IACjF,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B;gEAC4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,CAAC,CAAC;IACxE;iFAC6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B;6BACyB;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;8EAC0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED;;0EAE0E;AAC1E,wBAAgB,YAAY,IAAI,YAAY,CAI3C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,eAAe,GAAG,IAAW,GACrC,gBAAgB,CAkBlB;AAWD;uFACuF;AACvF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,GAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAa,EACpD,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,EAC1B,OAAO,GAAE,eAAe,GAAG,IAAW,GACrC,SAAS,CAWX;AAED;;kFAEkF;AAClF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,eAAe,GAAG,IAAW,GAAG,MAAM,CAUlG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAGtD;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAkC5D"}
package/dist/status.js CHANGED
@@ -79,6 +79,7 @@ function buildRigStatus(config, tasks = new Map(), runs, posture = null) {
79
79
  artifacts: artifactsPosture(config, posture),
80
80
  contentCustody: contentCustodyOn(config, posture),
81
81
  otlp: config.otlp ? "configured" : "disabled",
82
+ managedServing: config.managedServing === true ? "enabled" : "disabled",
82
83
  cache: cachePosture(),
83
84
  tasks: [...tasks].map(([task, s]) => ({ task, ...s })),
84
85
  ...(runs != null ? { runs } : {}),
@@ -91,9 +92,10 @@ function formatBootBanner(config, posture = null) {
91
92
  const a = artifactsPosture(config, posture);
92
93
  const content = contentCustodyOn(config, posture) ? "on" : "off";
93
94
  const otlp = config.otlp ? "on" : "off";
95
+ const managedServing = config.managedServing === true ? "on" : "off";
94
96
  return (`[modelrig] telemetry: ${exportModeOf(config)} · ` +
95
97
  `artifacts: ${a.enabled ? "on" : "off"} (${a.reason}) · ` +
96
- `content: ${content} · otlp: ${otlp}`);
98
+ `content: ${content} · otlp: ${otlp} · managed-serving: ${managedServing}`);
97
99
  }
98
100
  /**
99
101
  * Emit the boot banner to stderr — ONCE at rig construction, and ONLY when a
@@ -116,6 +118,7 @@ function formatStatusReport(status) {
116
118
  ` artifacts : ${status.artifacts.enabled ? "enabled" : "disabled"} (${status.artifacts.reason})`,
117
119
  ` content custody : ${status.contentCustody ? "enabled" : "disabled"}`,
118
120
  ` otlp span export : ${status.otlp}`,
121
+ ` managed serving : ${status.managedServing} (config: managedServing)`,
119
122
  ` cache accounting : on (policy ${status.cache.policyVersion}) — cache-eligible: ${status.cache.eligibleProviders.length > 0 ? status.cache.eligibleProviders.join(", ") : "none"}`,
120
123
  " (live hit rate + effective input rate: console route cache page)",
121
124
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-store.d.ts","sourceRoot":"","sources":["../../src/telemetry/artifact-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/C;;yFAEqF;IACrF,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC;kFAC8E;IAC9E,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAClG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAClG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAClG,gFAAgF;IAChF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACjD;gEAC4D;IAC5D,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAChD;;oFAEgF;IAChF,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;CACf;AA2DD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAiH/D"}
1
+ {"version":3,"file":"artifact-store.d.ts","sourceRoot":"","sources":["../../src/telemetry/artifact-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/C;;yFAEqF;IACrF,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC;kFAC8E;IAC9E,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAClG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAClG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAClG,gFAAgF;IAChF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACjD;gEAC4D;IAC5D,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAChD;;oFAEgF;IAChF,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;CACf;AA2DD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA2H/D"}
@@ -77,6 +77,17 @@ function openArtifactStore(dbPath) {
77
77
  // IGNORE) so pre-grade evaluations still export as grades. Additive.
78
78
  db.exec(grades_sql_1.GRADES_TABLE_SQL);
79
79
  (0, grades_sql_1.backfillGradesFromEvaluations)(db);
80
+ // F4: additive per-criterion `criteria` column on a dev DB that predates it
81
+ // and was created by THIS handle (so the telemetry store's v16 rung may not
82
+ // have run). CREATE IF NOT EXISTS above won't add it to an existing table;
83
+ // gradeBindParams now binds @criteria, so the column must exist before any
84
+ // insert. Same swallow-on-duplicate pattern as scrub/run_id.
85
+ try {
86
+ db.exec("ALTER TABLE grades ADD COLUMN criteria TEXT");
87
+ }
88
+ catch {
89
+ /* column already present — no-op */
90
+ }
80
91
  // Additive column for a dev DB that predates E4 (CREATE TABLE IF NOT EXISTS
81
92
  // won't add it to an existing table). SQLite has no ADD COLUMN IF NOT EXISTS;
82
93
  // a duplicate-column error on re-run is expected and swallowed.
@@ -12,9 +12,33 @@
12
12
  * enum/identifier/hash (length > 128 or containing whitespace).
13
13
  */
14
14
  import type { AdapterUsage, ProviderId } from "../types/provider";
15
+ import type { OutputKind } from "../types/route";
15
16
  import type { ScreenReceipt } from "../screen/types";
16
17
  export type FinishReason = "stop" | "length" | "tool_calls" | "content_filter" | "refusal" | "error" | "other";
17
18
  export type ContextBucket = "≤4k" | "≤16k" | "≤64k" | "≤200k" | ">200k";
19
+ /**
20
+ * How the rendered prompt reached the model on ONE attempt (GitLab issue #5,
21
+ * R1) — the proof surface for the cache-handle rule, stamped on
22
+ * `inferences.meta.prompt_delivery` by the adapter that made the call:
23
+ * • `system` — the rendered system prompt went as the provider's system
24
+ * instruction; the user turn carried the trigger / `prompt.user`.
25
+ * • `user` — no system instruction was sent because the rendered system
26
+ * prompt was EMPTY; the user turn alone carried the prompt.
27
+ * • `user+cache` — a cache HANDLE was sent (Gemini `cachedContent`), so the
28
+ * system instruction could not be: everything rendered — the
29
+ * system prompt (if any), then the user turn — was delivered
30
+ * AS the user turn. Nothing was dropped.
31
+ * Stamped today by the Gemini adapter (the one provider where a handle changes
32
+ * delivery); absent on other providers' rows (⇒ delivered as declared).
33
+ */
34
+ export type PromptDelivery = "system" | "user" | "user+cache";
35
+ export declare const PROMPT_DELIVERIES: ReadonlySet<string>;
36
+ /** The output contract a ROUTE-lane attempt was held to (issue #1 / plan §7.3,
37
+ * QA-S7): `json` (parsed + schema-checked) or `text` (returned verbatim). Same
38
+ * producer/enum pattern as {@link PromptDelivery}; stamped on
39
+ * `inferences.meta.output_kind` for every dispatched route-lane row, absent on
40
+ * raw-lane rows (the raw lane has no route contract). */
41
+ export declare const OUTPUT_KINDS: ReadonlySet<string>;
18
42
  /** D1 egress receipt — shape RESERVED here; populated by the D1 mission. */
19
43
  export interface EgressReceiptV1 {
20
44
  readonly endpoint?: string;
@@ -27,6 +51,7 @@ export interface EgressReceiptV1 {
27
51
  readonly search_provider?: string;
28
52
  readonly tool_calls?: number;
29
53
  }
54
+ export type ServedTierSource = "provider" | "requested_fallback";
30
55
  export interface AttemptMetaV1 {
31
56
  readonly v: 1;
32
57
  readonly finish_reason?: FinishReason;
@@ -51,6 +76,13 @@ export interface AttemptMetaV1 {
51
76
  readonly search_provider?: string;
52
77
  };
53
78
  readonly model_snapshot?: string;
79
+ /** Issue #2 (L6 F5): where `servedTier` came from — `provider` (the response
80
+ * echoed a tier: openai `service_tier`, gemini `serviceTier` /
81
+ * `usageMetadata.trafficType`) or `requested_fallback` (no echo; the adapter
82
+ * assumed the requested tier). Pricing reads the served tier, so a
83
+ * fallback-priced row is identifiable here. Absent on adapters without the
84
+ * signal. */
85
+ readonly served_tier_source?: ServedTierSource;
54
86
  readonly provider_request_id?: string;
55
87
  readonly http_status?: number;
56
88
  readonly error_code?: string;
@@ -66,6 +98,11 @@ export interface AttemptMetaV1 {
66
98
  /** sha256 of the RENDERED request — a hash, never content. */
67
99
  readonly input_hash?: string;
68
100
  readonly output_hash?: string;
101
+ /** R2 (issue #6): `sha256:<hex>` of the CANONICAL (sorted-key) JSON of the
102
+ * schema this attempt was asked to conform to — the raw lane's declared
103
+ * `responseSchema` today. A hash, never content; lets declared-vs-served
104
+ * schema drift be queried on `inferences.meta`. Absent ⇒ no schema declared. */
105
+ readonly schema_sha?: string;
69
106
  readonly context_bucket?: ContextBucket;
70
107
  readonly egress?: EgressReceiptV1;
71
108
  /** LRE-2: the live A/B experiment arm this call was drawn onto (an identifier —
@@ -81,7 +118,21 @@ export interface AttemptMetaV1 {
81
118
  * single producer `summarizeScreen`; NEVER carries a matched value. Reserved &
82
119
  * additive. */
83
120
  readonly screen?: ScreenReceipt;
121
+ /** Issue #5 (R1): how the rendered prompt reached the model — see
122
+ * {@link PromptDelivery}. Absent ⇒ the adapter did not report it. */
123
+ readonly prompt_delivery?: PromptDelivery;
124
+ /** QA-S7 (issue #1, plan §7.3): the route's output contract on this attempt —
125
+ * `json` | `text`. Route lane only; absent on raw rows. */
126
+ readonly output_kind?: OutputKind;
127
+ /** OBS-1: where this row's numbers came from. `caller-reported` ⇒ the
128
+ * customer's own code made the provider call and reported its usage through
129
+ * `rig.recordCall()`; ModelRig neither dispatched nor validated it. Absent ⇒
130
+ * ModelRig dispatched the attempt and measured it (every other row). Additive
131
+ * — no version bump. */
132
+ readonly provenance?: AttemptProvenance;
84
133
  }
134
+ /** OBS-1: the one non-default provenance value (see {@link AttemptMetaV1.provenance}). */
135
+ export type AttemptProvenance = "caller-reported";
85
136
  export interface RunMetaV1 {
86
137
  readonly v: 1;
87
138
  readonly pipeline_sha?: string;
@@ -103,6 +154,8 @@ export interface AttemptMetaSource {
103
154
  readonly renderedRequest?: string;
104
155
  readonly outputText?: string | null;
105
156
  readonly declaredToolNames?: readonly string[];
157
+ /** QA-S7: the route's output contract (route lane only). */
158
+ readonly outputKind?: OutputKind;
106
159
  }
107
160
  /** Canonicalize the RENDERED request for `input_hash` (spec §2) — system + user
108
161
  * + schema, joined the SAME way in both lanes so a routed and a raw call with
@@ -125,10 +178,19 @@ export interface AttemptMetaInputs {
125
178
  readonly outputText?: string | null;
126
179
  /** Declared tool ids; any tool_call name NOT in this set is hashed. */
127
180
  readonly declaredToolNames?: readonly string[];
181
+ /** R2: the canonical schema sha (`sha256:<hex>`) to stamp on `meta.schema_sha`.
182
+ * Already a hash — gated by the classification rule like any identifier.
183
+ * Absent ⇒ no key ⇒ byte-identical to a schema-free row. */
184
+ readonly schemaSha?: string;
185
+ /** QA-S7: the route-lane output contract to stamp on `meta.output_kind`.
186
+ * Absent (the raw lane) ⇒ no key ⇒ byte-identical. */
187
+ readonly outputKind?: OutputKind;
128
188
  /** For the cost components (via src/run/cost.ts). */
129
189
  readonly provider?: ProviderId;
130
190
  readonly model?: string;
131
- readonly usage?: Pick<AdapterUsage, "tokensIn" | "tokensOut" | "tokensCached" | "tokensCacheWrite" | "tokensCacheWrite1h">;
191
+ readonly usage?: Pick<AdapterUsage, "tokensIn" | "tokensOut" | "tokensCached" | "tokensCacheWrite" | "tokensCacheWrite1h"> &
192
+ /** issue #2: the served tier, so `meta.cost` components price like the row. */
193
+ Partial<Pick<AdapterUsage, "servedTier">>;
132
194
  /** Whether the caller streamed deltas (run loop stream() path). */
133
195
  readonly streaming?: boolean;
134
196
  /** Repair-rung count carried by the run loop, if any. */
@@ -140,6 +202,9 @@ export interface AttemptMetaInputs {
140
202
  * through verbatim (already counts/enums/hashes — no free text). Absent ⇒ no
141
203
  * `screen` key ⇒ byte-identical to a non-screened row. */
142
204
  readonly screen?: ScreenReceipt;
205
+ /** OBS-1: stamp `meta.provenance` (`rig.recordCall` rows only). Absent ⇒ no
206
+ * key ⇒ byte-identical to every dispatched row. */
207
+ readonly provenance?: AttemptProvenance;
143
208
  }
144
209
  /** The classification-rule string test (spec §2, §5 wire backstop): a value is
145
210
  * an ENUM / IDENTIFIER / HASH only if it is at most 128 chars AND contains no
@@ -1 +1 @@
1
- {"version":3,"file":"attempt-meta.d.ts","sourceRoot":"","sources":["../../src/telemetry/attempt-meta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attempt-meta.d.ts","sourceRoot":"","sources":["../../src/telemetry/attempt-meta.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * enum/identifier/hash (length > 128 or containing whitespace).
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.RESERVED_TAG_KEYS = void 0;
16
+ exports.RESERVED_TAG_KEYS = exports.OUTPUT_KINDS = exports.PROMPT_DELIVERIES = void 0;
17
17
  exports.renderRequestForHash = renderRequestForHash;
18
18
  exports.isMetaSafeString = isMetaSafeString;
19
19
  exports.sanitizeMetaForWire = sanitizeMetaForWire;
@@ -26,6 +26,13 @@ const node_fs_1 = require("node:fs");
26
26
  const node_path_1 = require("node:path");
27
27
  const cost_1 = require("../run/cost");
28
28
  const config_1 = require("../config");
29
+ exports.PROMPT_DELIVERIES = new Set(["system", "user", "user+cache"]);
30
+ /** The output contract a ROUTE-lane attempt was held to (issue #1 / plan §7.3,
31
+ * QA-S7): `json` (parsed + schema-checked) or `text` (returned verbatim). Same
32
+ * producer/enum pattern as {@link PromptDelivery}; stamped on
33
+ * `inferences.meta.output_kind` for every dispatched route-lane row, absent on
34
+ * raw-lane rows (the raw lane has no route contract). */
35
+ exports.OUTPUT_KINDS = new Set(["json", "text"]);
29
36
  /** Canonicalize the RENDERED request for `input_hash` (spec §2) — system + user
30
37
  * + schema, joined the SAME way in both lanes so a routed and a raw call with
31
38
  * the identical prompt+schema hash identically (lane parity, spec §6.3). The
@@ -234,6 +241,9 @@ function summarizeAttemptMeta(inputs) {
234
241
  meta.finish_reason = a.finish_reason;
235
242
  if (typeof a.refusal === "boolean")
236
243
  meta.refusal = a.refusal;
244
+ if (a.served_tier_source === "provider" || a.served_tier_source === "requested_fallback") {
245
+ meta.served_tier_source = a.served_tier_source;
246
+ }
237
247
  if (typeof a.streaming === "boolean")
238
248
  meta.streaming = a.streaming;
239
249
  else if (typeof inputs.streaming === "boolean")
@@ -242,11 +252,27 @@ function summarizeAttemptMeta(inputs) {
242
252
  // no key ⇒ byte-identical to a non-experiment row).
243
253
  if (isMetaSafeString(inputs.arm))
244
254
  meta.arm = inputs.arm;
255
+ // R2 declared-schema hash — a `sha256:` string (71 chars, no whitespace).
256
+ if (isMetaSafeString(inputs.schemaSha))
257
+ meta.schema_sha = inputs.schemaSha;
245
258
  // SC-1a screen receipt (spec §5, §8) — the counts-only screen summary rides
246
259
  // on meta.screen (ZERO migration). Already counts/enums/hashes; passed
247
260
  // through verbatim (absent ⇒ no key ⇒ byte-identical to a non-screened row).
248
261
  if (inputs.screen !== undefined)
249
262
  meta.screen = inputs.screen;
263
+ // Issue #5 (R1): prompt delivery — an enum our adapters produce; anything
264
+ // outside the vocabulary is dropped (absent ⇒ no key ⇒ byte-identical).
265
+ if (typeof a.prompt_delivery === "string" && exports.PROMPT_DELIVERIES.has(a.prompt_delivery)) {
266
+ meta.prompt_delivery = a.prompt_delivery;
267
+ }
268
+ // QA-S7: route-lane output contract — the same enum discipline; anything
269
+ // outside `json` | `text` is dropped (absent ⇒ no key ⇒ byte-identical).
270
+ if (typeof inputs.outputKind === "string" && exports.OUTPUT_KINDS.has(inputs.outputKind)) {
271
+ meta.output_kind = inputs.outputKind;
272
+ }
273
+ // OBS-1: caller-reported provenance — an enum; anything else is dropped.
274
+ if (inputs.provenance === "caller-reported")
275
+ meta.provenance = inputs.provenance;
250
276
  // Externally-sourced identifiers — gated by the classification rule.
251
277
  if (isMetaSafeString(a.model_snapshot))
252
278
  meta.model_snapshot = a.model_snapshot;
@@ -19,6 +19,8 @@ export interface ExporterSetupExtras {
19
19
  readonly artifactStore: ArtifactStore | null;
20
20
  /** E4 chunk 0: retry 404'd content after a confirmed artifacts flush. */
21
21
  readonly onArtifactsFlushed?: () => Promise<void>;
22
+ /** `createRig({ expectOrg })` (M5) — threaded to the api sink's org line. */
23
+ readonly expectOrg?: string;
22
24
  }
23
25
  /**
24
26
  * Construct the sink for the configured mode, wire the exporter, and start its
@@ -1 +1 @@
1
- {"version":3,"file":"exporter-setup.d.ts","sourceRoot":"","sources":["../../src/telemetry/exporter-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,yEAAyE;IACzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,wBAAwB,EACnC,YAAY,EAAE,eAAe,GAAG,kBAAkB,EAClD,MAAM,EAAE,mBAAmB,GAC1B,QAAQ,CAiBV"}
1
+ {"version":3,"file":"exporter-setup.d.ts","sourceRoot":"","sources":["../../src/telemetry/exporter-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,yEAAyE;IACzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,wBAAwB,EACnC,YAAY,EAAE,eAAe,GAAG,kBAAkB,EAClD,MAAM,EAAE,mBAAmB,GAC1B,QAAQ,CAyBV"}
@@ -10,13 +10,14 @@ exports.startTelemetryExporter = startTelemetryExporter;
10
10
  const node_os_1 = require("node:os");
11
11
  const exporter_1 = require("./exporter");
12
12
  const sinks_1 = require("./sinks");
13
+ const route_registration_1 = require("./route-registration");
13
14
  /**
14
15
  * Construct the sink for the configured mode, wire the exporter, and start its
15
16
  * flush loop. Returns the running exporter (the caller stops it on close()).
16
17
  */
17
18
  function startTelemetryExporter(telemetry, exportConfig, extras) {
18
19
  const sourceId = exportConfig.sourceId ?? (0, node_os_1.hostname)();
19
- const sink = (0, sinks_1.buildTelemetrySink)(exportConfig, sourceId);
20
+ const sink = (0, sinks_1.buildTelemetrySink)(exportConfig, sourceId, extras.expectOrg !== undefined ? { expectOrg: extras.expectOrg } : {});
20
21
  const exporter = (0, exporter_1.createTelemetryExporter)(telemetry, {
21
22
  sink,
22
23
  sourceId,
@@ -30,5 +31,9 @@ function startTelemetryExporter(telemetry, exportConfig, extras) {
30
31
  ...(extras.onArtifactsFlushed !== undefined ? { onArtifactsFlushed: extras.onArtifactsFlushed } : {}),
31
32
  });
32
33
  exporter.start();
34
+ // RV-1 declare-on-startup: the declared routes (metadata + bundle) go out now,
35
+ // fire-and-forget, so a route is visible before its first call / first flush.
36
+ // Never awaited, never throws — createRig cannot block or fail on it.
37
+ void (0, route_registration_1.registerRoutesOnStartup)(sink, sourceId, extras.routes);
33
38
  return exporter;
34
39
  }
@@ -11,8 +11,11 @@ import type { WireGrade } from "./ingest-protocol";
11
11
  /** GradeRow → WireGrade (the exporter's `:grades` stream mapper). org_id is
12
12
  * spread-iff-present so stampBatch falls back to the exporter's tenant. */
13
13
  export declare function toWireGrade(row: GradeRow): WireGrade;
14
- /** WireGrade → a grades row (the SDK's sole judgment write path). */
15
- export declare function gradeToRow({ org_id, ...g }: WireGrade, tenancy: Tenancy): Record<string, unknown>;
14
+ /** WireGrade → a grades row (the SDK's sole judgment write path). `criteria`
15
+ * (F4) is deliberately destructured OUT here: `public.grades` has no criteria
16
+ * column — the per-criterion breakdown fans out to `grade_criteria` in a
17
+ * separate best-effort write at the ingest boundary, keyed to this grade's id. */
18
+ export declare function gradeToRow({ org_id, criteria: _criteria, ...g }: WireGrade, tenancy: Tenancy): Record<string, unknown>;
16
19
  /**
17
20
  * Grades naming an org other than the presented key's. The ingest endpoint drops
18
21
  * and COUNTS these so a caller cannot file a judgment into another tenant's corpus
@@ -1 +1 @@
1
- {"version":3,"file":"grade-mappers.d.ts","sourceRoot":"","sources":["../../src/telemetry/grade-mappers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;2EAC2E;AAC3E,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAgBpD;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBjG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEhG"}
1
+ {"version":3,"file":"grade-mappers.d.ts","sourceRoot":"","sources":["../../src/telemetry/grade-mappers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;2EAC2E;AAC3E,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAmBpD;AAED;;;kFAGkF;AAClF,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBtH;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEhG"}
@@ -27,10 +27,16 @@ function toWireGrade(row) {
27
27
  created_by: row.createdBy,
28
28
  ts: row.ts,
29
29
  ...(row.orgId !== null ? { org_id: row.orgId } : {}),
30
+ // F4: mirror the per-criterion breakdown iff present (spread-iff — a
31
+ // single-score grade's wire shape is byte-identical to pre-F4).
32
+ ...(row.criteria !== undefined ? { criteria: row.criteria } : {}),
30
33
  };
31
34
  }
32
- /** WireGrade → a grades row (the SDK's sole judgment write path). */
33
- function gradeToRow({ org_id, ...g }, tenancy) {
35
+ /** WireGrade → a grades row (the SDK's sole judgment write path). `criteria`
36
+ * (F4) is deliberately destructured OUT here: `public.grades` has no criteria
37
+ * column — the per-criterion breakdown fans out to `grade_criteria` in a
38
+ * separate best-effort write at the ingest boundary, keyed to this grade's id. */
39
+ function gradeToRow({ org_id, criteria: _criteria, ...g }, tenancy) {
34
40
  return {
35
41
  org_id: org_id ?? tenancy.org_id,
36
42
  project_id: tenancy.project_id,
@@ -16,7 +16,7 @@ import type Database from "better-sqlite3";
16
16
  import type { GradeRow } from "../types/telemetry";
17
17
  /** `CREATE TABLE IF NOT EXISTS grades …` — safe to run on every open. Mirrors
18
18
  * `public.grades` minus the export-stamped columns (org handling below). */
19
- export declare const GRADES_TABLE_SQL = "\nCREATE TABLE IF NOT EXISTS grades (\n id TEXT PRIMARY KEY,\n ts TEXT,\n subject_kind TEXT NOT NULL CHECK (subject_kind IN ('inference','run','artifact')),\n subject_id TEXT NOT NULL,\n score REAL NOT NULL,\n scale_max REAL,\n scale_label TEXT,\n comment TEXT,\n kind TEXT NOT NULL CHECK (kind IN ('human','model-judge','deterministic')),\n grader TEXT,\n source TEXT,\n org_id TEXT,\n created_by TEXT\n);\nCREATE INDEX IF NOT EXISTS idx_grades_subject ON grades (subject_kind, subject_id);\n";
19
+ export declare const GRADES_TABLE_SQL = "\nCREATE TABLE IF NOT EXISTS grades (\n id TEXT PRIMARY KEY,\n ts TEXT,\n subject_kind TEXT NOT NULL CHECK (subject_kind IN ('inference','run','artifact')),\n subject_id TEXT NOT NULL,\n score REAL NOT NULL,\n scale_max REAL,\n scale_label TEXT,\n comment TEXT,\n kind TEXT NOT NULL CHECK (kind IN ('human','model-judge','deterministic')),\n grader TEXT,\n source TEXT,\n org_id TEXT,\n created_by TEXT,\n criteria TEXT\n);\nCREATE INDEX IF NOT EXISTS idx_grades_subject ON grades (subject_kind, subject_id);\n";
20
20
  /** The row shape as it sits in SQLite (snake_case, nullable columns as read back). */
21
21
  export interface GradeDbRow {
22
22
  id: string;
@@ -32,6 +32,9 @@ export interface GradeDbRow {
32
32
  source: string | null;
33
33
  org_id: string | null;
34
34
  created_by: string | null;
35
+ /** JSON-encoded per-criterion breakdown (call-qa F4), or null for a
36
+ * single-score grade / a row written before the v16 rung. */
37
+ criteria: string | null;
35
38
  }
36
39
  /** Prepare the grade insert statement against an open handle. INSERT OR IGNORE:
37
40
  * a grade id is unique, and a re-inserted id (e.g. the backfill racing a live
@@ -1 +1 @@
1
- {"version":3,"file":"grades-sql.d.ts","sourceRoot":"","sources":["../../src/telemetry/grades-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;4EAC4E;AAC5E,eAAO,MAAM,gBAAgB,ikBAiB5B,CAAC;AAEF,sFAAsF;AACtF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAWD;;iCAEiC;AACjC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAE5E;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBtE;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,CAgBlD;AAED;;;yCAGyC;AACzC,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAetE;AAED;;0EAE0E;AAC1E,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAgBzE"}
1
+ {"version":3,"file":"grades-sql.d.ts","sourceRoot":"","sources":["../../src/telemetry/grades-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnE;4EAC4E;AAC5E,eAAO,MAAM,gBAAgB,ulBAkB5B,CAAC;AAEF,sFAAsF;AACtF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;iEAC6D;IAC7D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAWD;;iCAEiC;AACjC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAE5E;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBtE;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,CAqBlD;AAcD;;;yCAGyC;AACzC,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAetE;AAED;;0EAE0E;AAC1E,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAgBzE"}