@holonograph/client 0.6.0 → 0.8.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 (3) hide show
  1. package/dist/index.d.ts +8035 -1955
  2. package/dist/index.js +1434 -116
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -4010,6 +4010,13 @@ var ALL_SUBSTRATE_COLUMN_SEMANTICS = ["deployment-state", "diagnostic"];
4010
4010
  var SubstrateColumnSemanticSchema = external_exports.enum(ALL_SUBSTRATE_COLUMN_SEMANTICS);
4011
4011
  var ALL_EMISSION_EXPECTATIONS = ["always", "conditional"];
4012
4012
  var EmissionExpectationSchema = external_exports.enum(ALL_EMISSION_EXPECTATIONS);
4013
+ var CoOccurrenceEmissionSchema = external_exports.object({
4014
+ whenever: external_exports.string().min(1)
4015
+ });
4016
+ var EmissionExpectationDeclarationSchema = external_exports.union([
4017
+ EmissionExpectationSchema,
4018
+ CoOccurrenceEmissionSchema
4019
+ ]);
4013
4020
  var SubstrateColumnStatusSchema = external_exports.enum(["active", "forward-declared", "deprecated"]);
4014
4021
  var SubstrateColumnSchema = external_exports.object({
4015
4022
  id: external_exports.string().min(1).max(128),
@@ -4021,7 +4028,7 @@ var SubstrateColumnSchema = external_exports.object({
4021
4028
 
4022
4029
  values: external_exports.array(external_exports.string().min(1)).min(1).optional(),
4023
4030
 
4024
- emissionExpectation: EmissionExpectationSchema.optional(),
4031
+ emissionExpectation: EmissionExpectationDeclarationSchema.optional(),
4025
4032
 
4026
4033
  status: SubstrateColumnStatusSchema.optional()
4027
4034
  });
@@ -4097,9 +4104,46 @@ new Set(
4097
4104
  PLATFORM_SYSTEM_ROLE_SURFACES.map((s) => s.surfaceId)
4098
4105
  );
4099
4106
 
4107
+ var RubricDispatchSchema = external_exports.object({
4108
+
4109
+ facet: external_exports.string().min(1).max(128),
4110
+
4111
+ refsFrom: external_exports.string().min(1),
4112
+
4113
+ refs: external_exports.record(external_exports.string().min(1), external_exports.string().min(1)).optional()
4114
+ });
4115
+ var ALL_RUBRIC_DEFAULT_REASONS = [
4116
+ "facet-tag-absent",
4117
+ "unmatched-value",
4118
+ "no-bespoke-ref",
4119
+ "pin-unresolved"
4120
+ ];
4121
+ var RubricDefaultReasonSchema = external_exports.enum(ALL_RUBRIC_DEFAULT_REASONS);
4122
+ var ALL_RUBRIC_SOURCES = ["facet", "default"];
4123
+ var RubricSourceSchema = external_exports.enum(ALL_RUBRIC_SOURCES);
4124
+ var JUDGE_RUBRIC_SOURCE_COLUMN_ID = "judge.rubric_source";
4125
+ var JUDGE_RUBRIC_DEFAULT_REASON_COLUMN_ID = "judge.rubric_default_reason";
4126
+ var JUDGE_RUBRIC_FACET_COLUMN_ID = "judge.rubric_facet";
4127
+ function normalizeFacetValue(raw) {
4128
+ return raw.normalize("NFKD").replace(/[̀-ͯ]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
4129
+ }
4130
+ function rubricDispatchColumns(resolved) {
4131
+ const columns = {
4132
+ [JUDGE_RUBRIC_SOURCE_COLUMN_ID]: resolved.source
4133
+ };
4134
+ if (resolved.reason !== void 0) {
4135
+ columns[JUDGE_RUBRIC_DEFAULT_REASON_COLUMN_ID] = resolved.reason;
4136
+ }
4137
+ if (resolved.facetValue !== null && resolved.facetValue.length > 0) {
4138
+ columns[JUDGE_RUBRIC_FACET_COLUMN_ID] = resolved.facetValue;
4139
+ }
4140
+ return columns;
4141
+ }
4142
+
4100
4143
  var JUDGE_RUBRIC_HASH_COLUMN_ID = "judge.rubric_hash";
4101
4144
  var JUDGE_CONTEXT_SCOPE_COLUMN_ID = "judge.context_scope";
4102
4145
  var JUDGE_MODEL_COLUMN_ID = "judge.model";
4146
+ var JUDGE_GROUNDING_CAPS_COLUMN_ID = "judge.grounding_caps";
4103
4147
  var JUDGE_RESERVED_COLUMN_NAMESPACE_PREFIX = "judge.";
4104
4148
  var JUDGE_CONTEXT_SCOPES = [
4105
4149
  "rubric_actual",
@@ -4108,13 +4152,15 @@ var JUDGE_CONTEXT_SCOPES = [
4108
4152
  "full_generating_prompt"
4109
4153
  ];
4110
4154
  var JudgeContextScopeSchema = external_exports.enum(JUDGE_CONTEXT_SCOPES);
4111
- external_exports.object({
4155
+ var JudgeIdentitySchema = external_exports.object({
4112
4156
 
4113
4157
  rubricHash: external_exports.string().min(1).optional(),
4114
4158
 
4115
4159
  contextScope: JudgeContextScopeSchema.optional(),
4116
4160
 
4117
- model: external_exports.string().min(1).optional()
4161
+ model: external_exports.string().min(1).optional(),
4162
+
4163
+ groundingCaps: external_exports.string().min(1).optional()
4118
4164
  });
4119
4165
  function judgeIdentityColumns(identity) {
4120
4166
  const columns = {};
@@ -4122,8 +4168,36 @@ function judgeIdentityColumns(identity) {
4122
4168
  if (identity.contextScope !== void 0)
4123
4169
  columns[JUDGE_CONTEXT_SCOPE_COLUMN_ID] = identity.contextScope;
4124
4170
  if (identity.model !== void 0) columns[JUDGE_MODEL_COLUMN_ID] = identity.model;
4171
+ if (identity.groundingCaps !== void 0)
4172
+ columns[JUDGE_GROUNDING_CAPS_COLUMN_ID] = identity.groundingCaps;
4125
4173
  return columns;
4126
4174
  }
4175
+ var JudgeLensIdentityObservationSchema = external_exports.object({
4176
+
4177
+ rubricHash: external_exports.array(external_exports.string().min(1)).optional(),
4178
+
4179
+ contextScope: external_exports.array(external_exports.string().min(1)).optional(),
4180
+
4181
+ model: external_exports.array(external_exports.string().min(1)).optional(),
4182
+
4183
+ groundingCaps: external_exports.array(external_exports.string().min(1)).optional()
4184
+ });
4185
+ var DimensionJudgeIdentitySchema = external_exports.object({
4186
+
4187
+ rubricHash: external_exports.string().min(1).optional(),
4188
+
4189
+ contextScope: JudgeContextScopeSchema.optional(),
4190
+
4191
+ model: external_exports.string().min(1).optional(),
4192
+
4193
+ groundingCaps: external_exports.string().min(1).optional(),
4194
+
4195
+ rubricSource: RubricSourceSchema.optional(),
4196
+
4197
+ rubricFacet: external_exports.string().min(1).optional(),
4198
+
4199
+ rubricDefaultReason: external_exports.string().min(1).optional()
4200
+ });
4127
4201
 
4128
4202
  var CannedMessageRefSchema = external_exports.string().min(1).max(256);
4129
4203
  var ALL_GATE_FAILURE_ACTIONS = ["retry", "flag", "block"];
@@ -4187,6 +4261,14 @@ var ValueDomainSchema = external_exports.discriminatedUnion("kind", [
4187
4261
  values: external_exports.array(external_exports.string().min(1)).min(1)
4188
4262
  })
4189
4263
  ]);
4264
+ var SCORING_CODOMAIN = {
4265
+ "llm-judge": { min: 0, max: 10 },
4266
+ "exact-match": { min: 0, max: 1 },
4267
+ custom: null
4268
+ };
4269
+ function scoringCodomain(strategy) {
4270
+ return SCORING_CODOMAIN[strategy];
4271
+ }
4190
4272
  var GradingDimensionSchema = external_exports.object({
4191
4273
 
4192
4274
  id: DimensionIdSchema,
@@ -4201,7 +4283,57 @@ var GradingDimensionSchema = external_exports.object({
4201
4283
 
4202
4284
  gatePolicy: GatePolicySchema.optional(),
4203
4285
 
4204
- valueDomain: ValueDomainSchema.optional()
4286
+ valueDomain: ValueDomainSchema.optional(),
4287
+
4288
+ rubricDispatch: RubricDispatchSchema.optional()
4289
+ }).superRefine((dimension, ctx) => {
4290
+ const codomain = scoringCodomain(dimension.scoring);
4291
+ if (codomain === null) return;
4292
+ const check = (value, path) => {
4293
+ if (value === void 0) return;
4294
+ if (value < codomain.min || value > codomain.max) {
4295
+ ctx.addIssue({
4296
+ code: external_exports.ZodIssueCode.custom,
4297
+ path,
4298
+ message: `passThreshold ${String(value)} is outside the ${dimension.scoring} codomain [${String(codomain.min)}, ${String(codomain.max)}]. ` + (dimension.scoring === "llm-judge" ? `The llm-judge scorer emits a 0\u201310 score; a threshold on another scale never gates as intended. ` : `exact-match emits 1 (pass) or 0 (fail). `) + `Declare passThreshold within [${String(codomain.min)}, ${String(codomain.max)}].`
4299
+ });
4300
+ }
4301
+ };
4302
+ check(dimension.passThreshold, ["passThreshold"]);
4303
+ check(dimension.gatePolicy?.passThreshold, ["gatePolicy", "passThreshold"]);
4304
+ if (dimension.rubricDispatch !== void 0) {
4305
+ if (dimension.scoring !== "llm-judge") {
4306
+ ctx.addIssue({
4307
+ code: external_exports.ZodIssueCode.custom,
4308
+ path: ["rubricDispatch"],
4309
+ message: `rubricDispatch is only valid on an 'llm-judge' dimension (this dimension is '${dimension.scoring}'); only the llm-judge scorer resolves a rubric.`
4310
+ });
4311
+ }
4312
+ if (dimension.rubricRef === void 0 || dimension.rubricRef === "") {
4313
+ ctx.addIssue({
4314
+ code: external_exports.ZodIssueCode.custom,
4315
+ path: ["rubricDispatch"],
4316
+ message: `a dimension with rubricDispatch must also declare 'rubricRef' \u2014 it is the REQUIRED default rubric an unknown/unmatched facet falls back to.`
4317
+ });
4318
+ }
4319
+ const refs = dimension.rubricDispatch.refs;
4320
+ if (refs !== void 0) {
4321
+ const byNormalized = new Map();
4322
+ for (const key of Object.keys(refs)) {
4323
+ const norm = normalizeFacetValue(key);
4324
+ const prior = byNormalized.get(norm);
4325
+ if (prior !== void 0) {
4326
+ ctx.addIssue({
4327
+ code: external_exports.ZodIssueCode.custom,
4328
+ path: ["rubricDispatch", "refs", key],
4329
+ message: `rubricDispatch.refs keys '${prior}' and '${key}' normalize to the same facet value '${norm}' \u2014 an ambiguous pin. Give them distinct normalized values.`
4330
+ });
4331
+ } else {
4332
+ byNormalized.set(norm, key);
4333
+ }
4334
+ }
4335
+ }
4336
+ }
4205
4337
  });
4206
4338
  var SurfaceStatusSchema = external_exports.enum(["active", "forward-declared", "deprecated"]);
4207
4339
  var RemovalSupersededBySchema = external_exports.object({
@@ -4230,6 +4362,41 @@ var RemovedCohortTagSchema = RemovalProvenanceSchema.extend({
4230
4362
 
4231
4363
  tag: CohortTagSchema
4232
4364
  });
4365
+ var TrajectoryPolicySchema = external_exports.object({
4366
+
4367
+ conversationIdColumn: external_exports.string().min(1).optional(),
4368
+
4369
+ refusalPatterns: external_exports.array(external_exports.string().min(1)).optional(),
4370
+
4371
+ reaskPatterns: external_exports.array(external_exports.string().min(1)).optional(),
4372
+
4373
+ availableTools: external_exports.array(external_exports.string().min(1)).optional(),
4374
+
4375
+ nullKeyValues: external_exports.array(external_exports.string().min(1)).optional(),
4376
+
4377
+ coarseKeyPatterns: external_exports.array(external_exports.string().min(1)).optional()
4378
+ });
4379
+ var ALL_POST_OUTCOME_STAGE_KINDS = [
4380
+ "deferred-delivery",
4381
+ "filter",
4382
+ "cache",
4383
+ "rate-limit",
4384
+ "fan-in",
4385
+ "other"
4386
+ ];
4387
+ var PostOutcomeStageKindSchema = external_exports.enum(ALL_POST_OUTCOME_STAGE_KINDS);
4388
+ var ALL_POST_OUTCOME_OBSERVABILITIES = ["declared", "reconciled"];
4389
+ var PostOutcomeObservabilitySchema = external_exports.enum(ALL_POST_OUTCOME_OBSERVABILITIES);
4390
+ var PostOutcomeStageSchema = external_exports.object({
4391
+
4392
+ kind: PostOutcomeStageKindSchema,
4393
+
4394
+ observability: PostOutcomeObservabilitySchema.default("declared"),
4395
+
4396
+ description: external_exports.string().optional(),
4397
+
4398
+ settleMs: external_exports.number().int().positive().optional()
4399
+ });
4233
4400
  var SurfaceDeclarationSchema = external_exports.object({
4234
4401
 
4235
4402
  id: SurfaceIdSchema,
@@ -4248,7 +4415,11 @@ var SurfaceDeclarationSchema = external_exports.object({
4248
4415
 
4249
4416
  removedDimensions: external_exports.array(RemovedDimensionSchema).default([]),
4250
4417
 
4251
- removedCohortTags: external_exports.array(RemovedCohortTagSchema).default([])
4418
+ removedCohortTags: external_exports.array(RemovedCohortTagSchema).default([]),
4419
+
4420
+ trajectoryPolicy: TrajectoryPolicySchema.optional(),
4421
+
4422
+ postOutcomeStages: external_exports.array(external_exports.string().min(1)).optional()
4252
4423
  });
4253
4424
  var PricingEntrySchema = external_exports.object({
4254
4425
 
@@ -4282,7 +4453,9 @@ external_exports.object({
4282
4453
 
4283
4454
  description: external_exports.string().optional(),
4284
4455
 
4285
- surfaces: external_exports.array(SurfaceDeclarationSchema).min(1),
4456
+ surfaces: external_exports.array(SurfaceDeclarationSchema),
4457
+
4458
+ postOutcomeStages: external_exports.record(external_exports.string().min(1), PostOutcomeStageSchema).optional(),
4286
4459
 
4287
4460
  routings: external_exports.array(SurfaceRoutingSchema).optional(),
4288
4461
 
@@ -4290,7 +4463,42 @@ external_exports.object({
4290
4463
 
4291
4464
  systemSurfaces: SystemSurfacesSchema.optional()
4292
4465
  });
4466
+ var RESERVED_COLUMN_IDS = new Set([
4467
+
4468
+ "lens_version",
4469
+ "light_source_identifier",
4470
+ "run_mode",
4471
+ "correlation_id",
4472
+ "provenance",
4473
+ "timestamp",
4474
+
4475
+ "light_source_served_model"
4476
+
4477
+ ]);
4293
4478
  var SERVED_MODEL_COLUMN_ID = "light_source_served_model";
4479
+ function normalizeColumnId(colId) {
4480
+ return colId.toLowerCase().replace(/[._-]/g, "");
4481
+ }
4482
+ var CANONICAL_APPARATUS_FACET_IDS = [
4483
+ ...RESERVED_COLUMN_IDS,
4484
+ JUDGE_RUBRIC_HASH_COLUMN_ID,
4485
+ JUDGE_CONTEXT_SCOPE_COLUMN_ID,
4486
+ JUDGE_MODEL_COLUMN_ID
4487
+ ];
4488
+ var NORMALIZED_APPARATUS_FACETS = new Map(
4489
+ CANONICAL_APPARATUS_FACET_IDS.map((id) => [normalizeColumnId(id), id])
4490
+ );
4491
+ new Set(
4492
+ [
4493
+ SERVED_MODEL_COLUMN_ID,
4494
+ JUDGE_RUBRIC_HASH_COLUMN_ID,
4495
+ JUDGE_CONTEXT_SCOPE_COLUMN_ID,
4496
+ JUDGE_MODEL_COLUMN_ID
4497
+ ].map(normalizeColumnId)
4498
+ );
4499
+ function isApparatusFacetSpelling(colId) {
4500
+ return NORMALIZED_APPARATUS_FACETS.has(normalizeColumnId(colId));
4501
+ }
4294
4502
 
4295
4503
  var LightSourceRoleSchema = external_exports.enum(["system", "user", "assistant", "tool"]);
4296
4504
  var LightSourceContentBlockSchema = external_exports.discriminatedUnion("kind", [
@@ -4739,7 +4947,8 @@ var LightSnapshotSchema = external_exports.object({
4739
4947
  rawRequestOmitted: external_exports.boolean().optional(),
4740
4948
 
4741
4949
  rawResponsePresence: external_exports.enum(["present", "omitted-by-policy", "pending-attach", "failed-attach"]).optional()
4742
- });
4950
+
4951
+ }).passthrough();
4743
4952
  var DimensionResultSchema = external_exports.object({
4744
4953
  dimensionId: DimensionIdSchema,
4745
4954
  passed: external_exports.boolean(),
@@ -4750,8 +4959,11 @@ var DimensionResultSchema = external_exports.object({
4750
4959
 
4751
4960
  score: external_exports.number().optional(),
4752
4961
 
4753
- rationale: external_exports.string().optional()
4754
- });
4962
+ rationale: external_exports.string().optional(),
4963
+
4964
+ judge: DimensionJudgeIdentitySchema.optional()
4965
+
4966
+ }).passthrough();
4755
4967
  var ALL_GATE_ACTIONS_TAKEN = [
4756
4968
  "pass",
4757
4969
  "retry-then-pass",
@@ -4761,6 +4973,21 @@ var ALL_GATE_ACTIONS_TAKEN = [
4761
4973
  "block"
4762
4974
  ];
4763
4975
  var GateActionTakenSchema = external_exports.enum(ALL_GATE_ACTIONS_TAKEN);
4976
+ var DispatchDecisionSchema = external_exports.object({
4977
+
4978
+ dimensionId: DimensionIdSchema,
4979
+
4980
+ scoringStrategy: external_exports.string(),
4981
+
4982
+ dispatchOccurred: external_exports.boolean(),
4983
+
4984
+ rubricResolution: external_exports.object({
4985
+ attempted: external_exports.boolean(),
4986
+ succeeded: external_exports.boolean(),
4987
+ rubricHash: external_exports.string().optional(),
4988
+ failureSubtype: external_exports.enum(["unloadable-rubric", "never-dispatched", "missing-ref"]).optional()
4989
+ }).optional()
4990
+ });
4764
4991
  var GateOutcomeSchema = external_exports.object({
4765
4992
 
4766
4993
  action: GateActionTakenSchema,
@@ -4778,7 +5005,9 @@ var GateOutcomeSchema = external_exports.object({
4778
5005
  })
4779
5006
  ).default([]),
4780
5007
 
4781
- actionDetails: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
5008
+ actionDetails: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
5009
+
5010
+ dispatchDecisions: external_exports.array(DispatchDecisionSchema).optional()
4782
5011
  });
4783
5012
  var SurfaceSnapshotSchema = external_exports.object({
4784
5013
  surfaceId: SurfaceIdSchema,
@@ -4799,7 +5028,8 @@ var SurfaceSnapshotSchema = external_exports.object({
4799
5028
  ).default([]),
4800
5029
 
4801
5030
  gateOutcome: GateOutcomeSchema.optional()
4802
- });
5031
+
5032
+ }).passthrough();
4803
5033
  var EvaluationEventKindSchema = external_exports.enum([
4804
5034
  "evaluation",
4805
5035
  "availability.transition",
@@ -4858,7 +5088,9 @@ var NoiseFloorCalibrationSchema = external_exports.object({
4858
5088
 
4859
5089
  perFixtureDimension: external_exports.array(NoiseFloorPerFixtureDimensionSchema),
4860
5090
 
4861
- perDimensionPooled: external_exports.array(NoiseFloorPerDimensionPooledSchema)
5091
+ perDimensionPooled: external_exports.array(NoiseFloorPerDimensionPooledSchema),
5092
+
5093
+ calibratedUnderJudgeIdentity: JudgeLensIdentityObservationSchema.optional()
4862
5094
  });
4863
5095
  var VarianceDecompositionConfidenceIntervalSchema = external_exports.object({
4864
5096
  lower: external_exports.number().min(0),
@@ -4873,6 +5105,110 @@ var VarianceLensVersionEntrySchema = external_exports.object({
4873
5105
 
4874
5106
  meanScore: external_exports.number()
4875
5107
  });
5108
+ var FloorFreshnessSchema = external_exports.object({
5109
+ state: external_exports.enum(["fresh", "stale", "undeterminable"]),
5110
+
5111
+ comparedFacets: external_exports.array(external_exports.string()),
5112
+
5113
+ changedFacets: external_exports.array(external_exports.string()),
5114
+
5115
+ ambiguousFacets: external_exports.array(external_exports.string())
5116
+ });
5117
+ var PhrasingBandRegionSchema = external_exports.object({
5118
+
5119
+ bandMean: external_exports.number().min(0),
5120
+
5121
+ bandMax: external_exports.number().min(0)
5122
+ });
5123
+ external_exports.object({
5124
+
5125
+ version: external_exports.string().min(1),
5126
+
5127
+ frozenAt: external_exports.string().min(1),
5128
+
5129
+ measuredUnder: external_exports.object({
5130
+ judge: external_exports.string().min(1),
5131
+ rubricVersion: external_exports.string().min(1)
5132
+ }),
5133
+
5134
+ boundaries: external_exports.object({
5135
+
5136
+ ceilingLo: external_exports.number(),
5137
+
5138
+ floorHi: external_exports.number(),
5139
+
5140
+ midMeasuredRange: external_exports.object({ lo: external_exports.number(), hi: external_exports.number() })
5141
+ }),
5142
+ regions: external_exports.object({
5143
+ ceiling: PhrasingBandRegionSchema,
5144
+ mid: PhrasingBandRegionSchema,
5145
+ floor: PhrasingBandRegionSchema
5146
+ })
5147
+ });
5148
+ var FloorRegionSchema = external_exports.object({
5149
+
5150
+ region: external_exports.enum(["ceiling", "mid", "floor"]),
5151
+
5152
+ calibrationRegion: external_exports.enum(["ceiling", "mid", "floor"]).optional(),
5153
+
5154
+ calibrationScoreCount: external_exports.number().int().min(0).optional(),
5155
+
5156
+ bandMean: external_exports.number().min(0),
5157
+
5158
+ bandMax: external_exports.number().min(0),
5159
+
5160
+ bandExtrapolated: external_exports.boolean(),
5161
+
5162
+ calibrationBandExtrapolated: external_exports.boolean().optional(),
5163
+
5164
+ windowStraddlesBoundary: external_exports.boolean().optional(),
5165
+
5166
+ counterfactualSigmaAgentDelta: external_exports.number().nullable(),
5167
+
5168
+ counterfactualUnavailableReason: external_exports.enum(["no_calibration_scores", "calibration_region_degenerate"]).optional(),
5169
+
5170
+ curveProvenance: external_exports.object({
5171
+ version: external_exports.string(),
5172
+ judge: external_exports.string(),
5173
+ rubricVersion: external_exports.string()
5174
+ })
5175
+ });
5176
+ var LensCompositeCorrectionSchema = external_exports.object({
5177
+
5178
+ correctedVarianceLens: external_exports.number().min(0),
5179
+
5180
+ reattributedFromResidual: external_exports.number(),
5181
+
5182
+ compositeGroupCount: external_exports.number().int().min(1),
5183
+
5184
+ bracketedFacets: external_exports.array(external_exports.string()),
5185
+
5186
+ bracketedFacetLevels: external_exports.array(external_exports.object({ facet: external_exports.string(), distinctLevels: external_exports.number().int().min(1) })).optional(),
5187
+
5188
+ conservationHolds: external_exports.boolean(),
5189
+
5190
+ partitionRelationship: external_exports.enum([
5191
+ "degenerate",
5192
+ "identical",
5193
+ "judge-refines-version",
5194
+ "version-refines-judge",
5195
+ "cross-cutting"
5196
+ ])
5197
+ });
5198
+ var ApparatusFacetDriftSchema = external_exports.object({
5199
+ facet: external_exports.string(),
5200
+ basis: external_exports.enum(["reserved-namespace", "declared-control"]),
5201
+
5202
+ control: ControlAttributeSchema.optional()
5203
+ });
5204
+ var ApparatusResidualContaminationSchema = external_exports.object({
5205
+
5206
+ contaminated: external_exports.boolean(),
5207
+
5208
+ driftedFacets: external_exports.array(ApparatusFacetDriftSchema),
5209
+
5210
+ scope: external_exports.enum(["reserved-only", "contract-resolved"]).optional()
5211
+ });
4876
5212
  var VarianceDecompositionSchema = external_exports.object({
4877
5213
  dimensionId: DimensionIdSchema,
4878
5214
 
@@ -4903,7 +5239,17 @@ var VarianceDecompositionSchema = external_exports.object({
4903
5239
 
4904
5240
  sigmaAgentCI: VarianceDecompositionConfidenceIntervalSchema,
4905
5241
 
4906
- caveats: external_exports.array(external_exports.string()).default([])
5242
+ caveats: external_exports.array(external_exports.string()).default([]),
5243
+
5244
+ floorFreshness: FloorFreshnessSchema.optional(),
5245
+
5246
+ floorRegion: FloorRegionSchema.optional(),
5247
+
5248
+ lensCompositeCorrection: LensCompositeCorrectionSchema.optional(),
5249
+
5250
+ apparatusResidualContamination: ApparatusResidualContaminationSchema.optional(),
5251
+
5252
+ decompositionMethodVersion: external_exports.string().optional()
4907
5253
  });
4908
5254
  var LifecycleTransitionStatusSchema = external_exports.enum([
4909
5255
  "draft",
@@ -4952,7 +5298,8 @@ var EvalRecommendationVerdictSchema = external_exports.enum([
4952
5298
  "contaminated",
4953
5299
  "insufficient-n",
4954
5300
  "degenerate",
4955
- "instrument-limited"
5301
+ "instrument-limited",
5302
+ "stale-floor"
4956
5303
  ]);
4957
5304
  var EvalRecommendationCheckSchema = external_exports.object({
4958
5305
  name: external_exports.string().min(1).max(128),
@@ -5368,115 +5715,1010 @@ external_exports.object({
5368
5715
  external_exports.enum(["classificationMode"]);
5369
5716
  external_exports.enum(["prefix-match", "absent-defaulted"]);
5370
5717
 
5371
- var HolonographGradeAfterReportError = class extends Error {
5372
- constructor() {
5373
- super(
5374
- "gradeObserver: cannot grade observers after reportOutcome has flushed. Call gradeObserver(...) for each observer FIRST, then call reportOutcome(...) once."
5375
- );
5376
- this.name = "HolonographGradeAfterReportError";
5377
- }
5378
- };
5379
- var HolonographObserverNotFoundError = class extends Error {
5380
- constructor(lightSourceId, known) {
5381
- super(
5382
- `gradeObserver: no observer record matches lightSourceId "${lightSourceId}". Known observers: ${known.length > 0 ? known.join(", ") : "<none>"}`
5383
- );
5384
- this.name = "HolonographObserverNotFoundError";
5385
- }
5386
- };
5387
- var HolonographNoObserversError = class extends Error {
5388
- constructor() {
5389
- super(
5390
- "gradeObserver: this response has no observer records \u2014 the routing was single-vendor. Use reportOutcome(...) to grade the primary."
5391
- );
5392
- this.name = "HolonographNoObserversError";
5393
- }
5394
- };
5395
- var HolonographMarkerPairingWarningError = class extends Error {
5396
- constructor(pairing) {
5397
- super(
5398
- `availability.mark: server reported pairing severity "${pairing.severity}"` + (pairing.note !== null ? ` \u2014 ${pairing.note}` : "") + (pairing.unpairedClosers.length > 0 ? ` (unpaired closers: ${pairing.unpairedClosers.join(", ")})` : "")
5399
- );
5400
- this.pairing = pairing;
5401
- this.name = "HolonographMarkerPairingWarningError";
5402
- }
5403
- pairing;
5404
- };
5718
+ var RELIABILITY_DISPOSITIONS = ["flagged", "assessed", "not-applicable"];
5719
+ var ReliabilityDispositionSchema = external_exports.enum(RELIABILITY_DISPOSITIONS);
5720
+ var RELIABILITY_FIRING_STAGES = ["config", "score", "window"];
5721
+ var ReliabilityFiringStageSchema = external_exports.enum(RELIABILITY_FIRING_STAGES);
5722
+ var ReliabilityCorpusFindingSchema = external_exports.object({
5405
5723
 
5406
- var InProcessTransport = class {
5407
- mediator;
5408
- gateExecutor;
5409
- store;
5410
- constructor(opts) {
5411
- this.mediator = opts.mediator;
5412
- this.gateExecutor = opts.gateExecutor;
5413
- this.store = opts.store;
5414
- }
5415
- async dispatch(req) {
5416
- return this.gateExecutor ? this.gateExecutor.callWithGates(req) : this.mediator.call(req);
5417
- }
5418
- async appendEvent(event) {
5419
- if (!this.store) return event.eventId;
5420
- return this.store.append(event);
5421
- }
5724
+ entryId: external_exports.string().min(1),
5422
5725
 
5423
- get topology() {
5424
- return this.mediator.topology;
5425
- }
5426
- };
5726
+ failureMode: external_exports.string().min(1),
5427
5727
 
5428
- var BoundedEmitBuffer = class {
5429
- capacity;
5430
- items = [];
5431
- _offeredTotal = 0;
5432
- _droppedTotal = 0;
5728
+ disposition: ReliabilityDispositionSchema,
5433
5729
 
5434
- constructor(capacity) {
5435
- if (!Number.isInteger(capacity) || capacity < 1) {
5436
- throw new RangeError(
5437
- `BoundedEmitBuffer capacity must be a positive integer, got ${String(capacity)}`
5438
- );
5439
- }
5440
- this.capacity = capacity;
5441
- }
5730
+ remediation: external_exports.string().min(1).nullable(),
5442
5731
 
5443
- offer(item) {
5444
- this._offeredTotal += 1;
5445
- if (this.items.length >= this.capacity) {
5446
- this._droppedTotal += 1;
5447
- return false;
5448
- }
5449
- this.items.push(item);
5450
- return true;
5451
- }
5732
+ firesAt: ReliabilityFiringStageSchema,
5452
5733
 
5453
- drain() {
5454
- if (this.items.length === 0) return [];
5455
- const out = this.items;
5456
- this.items = [];
5457
- return out;
5458
- }
5734
+ tier: external_exports.literal("deterministic"),
5459
5735
 
5460
- get size() {
5461
- return this.items.length;
5462
- }
5736
+ evidence: external_exports.record(external_exports.union([external_exports.string(), external_exports.number(), external_exports.boolean()])).optional()
5737
+ });
5738
+ external_exports.object({
5463
5739
 
5464
- get maxSize() {
5465
- return this.capacity;
5466
- }
5740
+ corpusVersion: external_exports.string().min(1),
5467
5741
 
5468
- get offeredTotal() {
5469
- return this._offeredTotal;
5470
- }
5742
+ corpusHash: external_exports.string().min(1),
5471
5743
 
5472
- get droppedTotal() {
5473
- return this._droppedTotal;
5474
- }
5475
- };
5744
+ findings: external_exports.array(ReliabilityCorpusFindingSchema)
5745
+ });
5746
+ var ReliabilityCorpusEntryRateSchema = external_exports.object({
5747
+ entryId: external_exports.string().min(1),
5476
5748
 
5477
- var CompletenessAccounting = class {
5478
- constructor(lensVersion, config, hooks = {}) {
5479
- this.lensVersion = lensVersion;
5749
+ evaluated: external_exports.number().int().nonnegative(),
5750
+
5751
+ flagged: external_exports.number().int().nonnegative(),
5752
+
5753
+ assessed: external_exports.number().int().nonnegative(),
5754
+
5755
+ notApplicable: external_exports.number().int().nonnegative(),
5756
+
5757
+ firingRateAmongApplicable: external_exports.number().min(0).max(1).nullable()
5758
+ });
5759
+ var ReliabilityCorpusRatesSchema = external_exports.object({
5760
+ corpusVersion: external_exports.string().min(1),
5761
+ corpusHash: external_exports.string().min(1),
5762
+
5763
+ evaluationCount: external_exports.number().int().nonnegative(),
5764
+ perEntry: external_exports.array(ReliabilityCorpusEntryRateSchema)
5765
+ });
5766
+ var TraceClaimCheckSchema = external_exports.object({
5767
+
5768
+ tool: external_exports.string().min(1),
5769
+
5770
+ invoked: external_exports.boolean(),
5771
+ disposition: external_exports.enum(["corroborated", "contradicted"])
5772
+ });
5773
+ var TRACE_CORROBORATION_DISPOSITIONS = [
5774
+ "contradicted",
5775
+ "corroborated",
5776
+ "no-marker-to-check",
5777
+ "not-applicable"
5778
+ ];
5779
+ var TraceCorroborationDispositionSchema = external_exports.enum(TRACE_CORROBORATION_DISPOSITIONS);
5780
+ var TraceCorroborationSchema = external_exports.object({
5781
+
5782
+ disposition: TraceCorroborationDispositionSchema,
5783
+
5784
+ tier: external_exports.literal("deterministic"),
5785
+
5786
+ claims: external_exports.array(TraceClaimCheckSchema)
5787
+ });
5788
+ var MatchTierSchema = external_exports.discriminatedUnion("kind", [
5789
+
5790
+ external_exports.object({ kind: external_exports.literal("exact") }),
5791
+
5792
+ external_exports.object({ kind: external_exports.literal("normalized") }),
5793
+
5794
+ external_exports.object({ kind: external_exports.literal("fuzzy"), threshold: external_exports.number().min(0).max(1) })
5795
+ ]);
5796
+ var GROUNDING_CLAIM_DISPOSITIONS = [
5797
+ "present-in-scope",
5798
+ "truncated-out",
5799
+ "not-found"
5800
+ ];
5801
+ var GroundingClaimDispositionSchema = external_exports.enum(GROUNDING_CLAIM_DISPOSITIONS);
5802
+ var GroundingClaimCheckSchema = external_exports.object({
5803
+
5804
+ datum: external_exports.string().min(1),
5805
+ disposition: GroundingClaimDispositionSchema,
5806
+
5807
+ matchTier: MatchTierSchema.optional(),
5808
+
5809
+ charOffset: external_exports.number().int().nonnegative().optional()
5810
+ });
5811
+ var GROUNDING_COVERAGE_DISPOSITIONS = [
5812
+ "present-in-scope",
5813
+ "truncated-out",
5814
+ "not-found",
5815
+ "no-marker-to-check",
5816
+ "not-applicable"
5817
+ ];
5818
+ var GroundingCoverageDispositionSchema = external_exports.enum(GROUNDING_COVERAGE_DISPOSITIONS);
5819
+ var GroundingCoverageSchema = external_exports.object({
5820
+ disposition: GroundingCoverageDispositionSchema,
5821
+
5822
+ tier: external_exports.literal("deterministic"),
5823
+
5824
+ claims: external_exports.array(GroundingClaimCheckSchema)
5825
+ });
5826
+ var VERDICT_RELIABILITY_TIERS = ["question", "trust", "review"];
5827
+ var VerdictReliabilityTierSchema = external_exports.enum(VERDICT_RELIABILITY_TIERS);
5828
+ external_exports.object({
5829
+
5830
+ tier: VerdictReliabilityTierSchema,
5831
+
5832
+ drivers: external_exports.array(external_exports.string()),
5833
+
5834
+ trace: TraceCorroborationSchema,
5835
+
5836
+ grounding: GroundingCoverageSchema
5837
+ });
5838
+ var VerdictReliabilityTierTallySchema = external_exports.object({
5839
+ question: external_exports.number().int().nonnegative(),
5840
+ trust: external_exports.number().int().nonnegative(),
5841
+ review: external_exports.number().int().nonnegative(),
5842
+ total: external_exports.number().int().nonnegative()
5843
+ });
5844
+ var FlaggedVerdictSchema = external_exports.object({
5845
+
5846
+ eventId: external_exports.string().min(1),
5847
+
5848
+ correlationId: external_exports.string().min(1).optional(),
5849
+
5850
+ occurredAt: external_exports.string().min(1),
5851
+ surfaceId: external_exports.string().min(1),
5852
+ dimensionId: external_exports.string().min(1),
5853
+
5854
+ drivers: external_exports.array(external_exports.string())
5855
+ });
5856
+ external_exports.object({
5857
+
5858
+ eventCount: external_exports.number().int().nonnegative(),
5859
+
5860
+ tierTally: VerdictReliabilityTierTallySchema,
5861
+
5862
+ flagged: external_exports.array(FlaggedVerdictSchema),
5863
+
5864
+ corpusRates: ReliabilityCorpusRatesSchema
5865
+ });
5866
+ var ESCALATION_REASONS = ["both-checks-not-applicable"];
5867
+ var EscalationReasonSchema = external_exports.enum(ESCALATION_REASONS);
5868
+ external_exports.object({
5869
+
5870
+ targetEventId: external_exports.string().min(1),
5871
+ surfaceId: external_exports.string().min(1),
5872
+ dimensionId: external_exports.string().min(1),
5873
+
5874
+ reason: EscalationReasonSchema
5875
+ });
5876
+ var JudgeVerdictSchema = external_exports.object({
5877
+
5878
+ score: external_exports.number().optional(),
5879
+
5880
+ passed: external_exports.boolean()
5881
+ });
5882
+ external_exports.object({
5883
+
5884
+ targetEventId: external_exports.string().min(1),
5885
+ surfaceId: external_exports.string().min(1),
5886
+ dimensionId: external_exports.string().min(1),
5887
+
5888
+ blind: external_exports.literal(true),
5889
+
5890
+ firstVerdict: JudgeVerdictSchema,
5891
+
5892
+ secondVerdict: JudgeVerdictSchema,
5893
+
5894
+ secondJudge: JudgeIdentitySchema,
5895
+
5896
+ secondJudgeInstrumentVersion: external_exports.string().min(1)
5897
+ });
5898
+ external_exports.object({
5899
+ escalatedCount: external_exports.number().int().nonnegative(),
5900
+ agreeCount: external_exports.number().int().nonnegative(),
5901
+ disagreeCount: external_exports.number().int().nonnegative(),
5902
+ agreementRate: external_exports.number().min(0).max(1).nullable()
5903
+ });
5904
+
5905
+ var TrajectoryPredicateSchema = external_exports.enum([
5906
+ "p3-disclaim-then-recover",
5907
+ "p2-user-reask",
5908
+ "p1-and-t4"
5909
+ ]);
5910
+ var TrajectoryEvidenceRoleSchema = external_exports.enum([
5911
+ "refusal",
5912
+ "recovery",
5913
+ "user-reask",
5914
+ "availability-unused"
5915
+ ]);
5916
+ var TrajectoryFindingEvidenceSchema = external_exports.object({
5917
+
5918
+ turnIndex: external_exports.number().int().nonnegative(),
5919
+
5920
+ eventId: external_exports.string().min(1),
5921
+
5922
+ occurredAt: external_exports.string().min(1),
5923
+
5924
+ role: TrajectoryEvidenceRoleSchema,
5925
+
5926
+ note: external_exports.string().max(512).optional()
5927
+ });
5928
+ var TrajectoryFindingSchema = external_exports.object({
5929
+
5930
+ predicate: TrajectoryPredicateSchema,
5931
+
5932
+ conversationId: external_exports.string().min(1),
5933
+
5934
+ surfaceId: SurfaceIdSchema,
5935
+
5936
+ offendingTurnIndices: external_exports.array(external_exports.number().int().nonnegative()).min(1),
5937
+
5938
+ evidence: external_exports.array(TrajectoryFindingEvidenceSchema).min(1),
5939
+
5940
+ detectedAt: external_exports.string().min(1).optional()
5941
+ });
5942
+ external_exports.object({
5943
+
5944
+ trajectoryCount: external_exports.number().int().nonnegative(),
5945
+
5946
+ nullKeyEventCount: external_exports.number().int().nonnegative(),
5947
+
5948
+ coarseKeyEventCount: external_exports.number().int().nonnegative(),
5949
+
5950
+ evaluatedTurnCount: external_exports.number().int().nonnegative(),
5951
+
5952
+ noOutputTextTurnCount: external_exports.number().int().nonnegative(),
5953
+
5954
+ predicatesEvaluated: external_exports.array(TrajectoryPredicateSchema),
5955
+
5956
+ findings: external_exports.array(TrajectoryFindingSchema)
5957
+ });
5958
+
5959
+ var LessonsDraftingSurfaceKeySchema = external_exports.enum([
5960
+ "skillDrafting",
5961
+ "lessonDrafting",
5962
+ "fixtureGeneration"
5963
+ ]);
5964
+ LessonsDraftingSurfaceKeySchema.options;
5965
+ var LessonsCapabilityStatusSchema = external_exports.enum(["available", "unavailable", "degraded"]);
5966
+ var LessonsCapabilityReasonSchema = external_exports.enum(["opted-out", "enablement-changed"]);
5967
+ external_exports.object({
5968
+ status: LessonsCapabilityStatusSchema,
5969
+
5970
+ reason: LessonsCapabilityReasonSchema.optional(),
5971
+
5972
+ missingKeys: external_exports.array(LessonsDraftingSurfaceKeySchema).optional()
5973
+ });
5974
+
5975
+ var ALL_FINDING_SOURCES = [
5976
+ "verdict-reliability",
5977
+ "judge-liveness",
5978
+ "trajectory",
5979
+ "orthogonality-hypothesis",
5980
+ "coverage-gap",
5981
+ "quarantine-candidate",
5982
+ "retirement-candidate",
5983
+ "dark-mass-blindspot",
5984
+ "emission-gap",
5985
+ "reach-gap"
5986
+ ];
5987
+ var FindingSourceSchema = external_exports.enum(ALL_FINDING_SOURCES);
5988
+ var ALL_FINDING_GRAINS = ["run", "conversation", "structural"];
5989
+ var FindingGrainSchema = external_exports.enum(ALL_FINDING_GRAINS);
5990
+ var FindingRefSchema = external_exports.object({
5991
+ primary: external_exports.object({
5992
+ grain: FindingGrainSchema,
5993
+
5994
+ id: external_exports.string().min(1)
5995
+ }),
5996
+ attributes: external_exports.object({
5997
+ source: FindingSourceSchema,
5998
+ surfaceId: SurfaceIdSchema,
5999
+ dimensionId: DimensionIdSchema.optional(),
6000
+
6001
+ driver: external_exports.string().min(1).optional(),
6002
+
6003
+ predicate: external_exports.string().min(1).optional(),
6004
+
6005
+ axis: external_exports.string().min(1).optional(),
6006
+
6007
+ clusterId: external_exports.string().min(1).optional()
6008
+ })
6009
+ });
6010
+ var ALL_TRIAGE_DISPOSITIONS = ["confirmed-defect", "false-alarm", "acknowledged"];
6011
+ var TriageDispositionSchema = external_exports.enum(ALL_TRIAGE_DISPOSITIONS);
6012
+ var TriageRecordSchema = external_exports.object({
6013
+
6014
+ findingRef: FindingRefSchema,
6015
+ disposition: TriageDispositionSchema,
6016
+
6017
+ rationale: external_exports.string().min(1),
6018
+
6019
+ approverId: external_exports.string().min(1),
6020
+
6021
+ occurredAt: external_exports.string().datetime(),
6022
+
6023
+ evidenceSnapshotRef: external_exports.string().min(1).optional(),
6024
+
6025
+ asOf: external_exports.string().datetime().optional(),
6026
+
6027
+ proposalRef: external_exports.string().min(1).optional()
6028
+ });
6029
+ var ALL_TRIAGE_STATES = [
6030
+ "untriaged",
6031
+ "confirmed-defect",
6032
+ "false-alarm",
6033
+ "acknowledged",
6034
+ "resolved"
6035
+ ];
6036
+ var TriageStateSchema = external_exports.enum(ALL_TRIAGE_STATES);
6037
+ var ALL_PROPOSAL_KINDS = [
6038
+ "grounding-cap-bump",
6039
+ "adjust-threshold",
6040
+ "fix-rubric-ref",
6041
+ "gate-dimension",
6042
+ "predicate-downweight",
6043
+ "retire-surface",
6044
+ "release-from-quarantine",
6045
+ "declare-axis",
6046
+ "author-fixture"
6047
+ ];
6048
+ var ProposalKindSchema = external_exports.enum(ALL_PROPOSAL_KINDS);
6049
+ var ALL_PROPOSAL_STATUSES = ["pending", "approved", "rejected"];
6050
+ var ProposalStatusSchema = external_exports.enum(ALL_PROPOSAL_STATUSES);
6051
+ var ALL_PROPOSAL_AVAILABILITIES = ["minted", "none-for-source", "not-applicable"];
6052
+ external_exports.enum(ALL_PROPOSAL_AVAILABILITIES);
6053
+ external_exports.object({
6054
+ proposalRef: external_exports.string().min(1),
6055
+ kind: ProposalKindSchema,
6056
+
6057
+ findingRef: FindingRefSchema,
6058
+
6059
+ summary: external_exports.string().min(1),
6060
+
6061
+ approverId: external_exports.string().min(1),
6062
+ occurredAt: external_exports.string().datetime(),
6063
+ status: ProposalStatusSchema.default("pending")
6064
+ });
6065
+ var ALL_ATTENTION_SEVERITIES = ["alarm", "needs-review", "coverage"];
6066
+ var AttentionSeveritySchema = external_exports.enum(ALL_ATTENTION_SEVERITIES);
6067
+ var VerdictReliabilityEvidenceSchema = external_exports.object({
6068
+ kind: external_exports.literal("verdict-reliability"),
6069
+
6070
+ driver: external_exports.string().min(1),
6071
+
6072
+ sampleCorrelationIds: external_exports.array(external_exports.string().min(1)),
6073
+
6074
+ sampleEventIds: external_exports.array(external_exports.string().min(1))
6075
+ });
6076
+ var OrthogonalityEvidenceSchema = external_exports.object({
6077
+ kind: external_exports.literal("orthogonality-hypothesis"),
6078
+
6079
+ axis: external_exports.string().min(1),
6080
+
6081
+ etaSquared: external_exports.number()
6082
+ });
6083
+ var TrajectoryEvidenceSchema = external_exports.object({
6084
+ kind: external_exports.literal("trajectory"),
6085
+
6086
+ predicate: TrajectoryPredicateSchema,
6087
+
6088
+ conversationId: external_exports.string().min(1)
6089
+ });
6090
+ var JudgeDispatchReasonSchema = external_exports.enum([
6091
+ "never-dispatched",
6092
+ "unloadable-rubric",
6093
+ "missing-ref",
6094
+ "unspecified"
6095
+ ]);
6096
+ var JudgeLivenessEvidenceSchema = external_exports.object({
6097
+ kind: external_exports.literal("judge-liveness"),
6098
+
6099
+ variant: external_exports.enum(["not-dispatching", "not-lens-dispatched"]),
6100
+
6101
+ dimensionId: DimensionIdSchema.optional(),
6102
+
6103
+ observedCount: external_exports.number().int().nonnegative().optional(),
6104
+
6105
+ dominantReason: JudgeDispatchReasonSchema.optional(),
6106
+
6107
+ surfaceId: SurfaceIdSchema.optional(),
6108
+
6109
+ inlineCount: external_exports.number().int().nonnegative().optional()
6110
+ });
6111
+ var CoverageGapEvidenceSchema = external_exports.object({
6112
+ kind: external_exports.literal("coverage-gap"),
6113
+
6114
+ altitude: external_exports.enum(["surface", "dimension"]),
6115
+
6116
+ surfaceStatus: external_exports.enum(["active", "deprecated"])
6117
+ });
6118
+ var RetirementCandidateEvidenceSchema = external_exports.object({
6119
+ kind: external_exports.literal("retirement-candidate"),
6120
+
6121
+ surfaceStatus: external_exports.enum(["active", "deprecated"])
6122
+ });
6123
+ var QuarantineCandidateEvidenceSchema = external_exports.object({
6124
+ kind: external_exports.literal("quarantine-candidate"),
6125
+
6126
+ candidateStream: external_exports.literal("parse-anomaly-frequent")
6127
+ });
6128
+ var EmissionGapEvidenceSchema = external_exports.object({
6129
+ kind: external_exports.literal("emission-gap"),
6130
+
6131
+ variant: external_exports.enum(["deployment-broken", "co-occurrence-gap", "no-events"]),
6132
+
6133
+ columnId: external_exports.string().min(1),
6134
+
6135
+ whenever: external_exports.string().min(1).optional()
6136
+ });
6137
+ var ReachGapEvidenceSchema = external_exports.object({
6138
+ kind: external_exports.literal("reach-gap"),
6139
+
6140
+ variant: external_exports.enum(["horizon", "shortfall"]),
6141
+
6142
+ surfaceId: SurfaceIdSchema,
6143
+
6144
+ unobservedStageCount: external_exports.number().int().nonnegative().optional(),
6145
+
6146
+ hasSuppressingStage: external_exports.boolean().optional(),
6147
+
6148
+ darkRate: external_exports.number().optional(),
6149
+
6150
+ darkCount: external_exports.number().int().nonnegative().optional()
6151
+ });
6152
+ var AttentionEvidenceSchema = external_exports.discriminatedUnion("kind", [
6153
+ VerdictReliabilityEvidenceSchema,
6154
+ OrthogonalityEvidenceSchema,
6155
+ TrajectoryEvidenceSchema,
6156
+ JudgeLivenessEvidenceSchema,
6157
+ CoverageGapEvidenceSchema,
6158
+ RetirementCandidateEvidenceSchema,
6159
+ QuarantineCandidateEvidenceSchema,
6160
+ EmissionGapEvidenceSchema,
6161
+ ReachGapEvidenceSchema
6162
+ ]);
6163
+ var AttentionFindingSchema = external_exports.object({
6164
+ findingRef: FindingRefSchema,
6165
+
6166
+ findingKey: external_exports.string().min(1),
6167
+ source: FindingSourceSchema,
6168
+ severity: AttentionSeveritySchema,
6169
+
6170
+ count: external_exports.number().int().positive(),
6171
+
6172
+ firstSeen: external_exports.string().min(1),
6173
+
6174
+ lastSeen: external_exports.string().min(1),
6175
+ evidence: AttentionEvidenceSchema
6176
+ });
6177
+ AttentionFindingSchema.extend({
6178
+
6179
+ triageState: TriageStateSchema,
6180
+
6181
+ latestTriage: TriageRecordSchema.optional()
6182
+ });
6183
+ var ExemplarJudgeDecisionSchema = external_exports.object({
6184
+ passed: external_exports.boolean(),
6185
+
6186
+ expected: external_exports.string().optional(),
6187
+
6188
+ actual: external_exports.string().optional(),
6189
+
6190
+ rationale: external_exports.string().optional()
6191
+ });
6192
+ var VerdictReliabilityExemplarSchema = external_exports.object({
6193
+ source: external_exports.literal("verdict-reliability"),
6194
+ eventId: external_exports.string().min(1),
6195
+ correlationId: external_exports.string().min(1).optional(),
6196
+ occurredAt: external_exports.string().min(1),
6197
+ dimensionId: DimensionIdSchema,
6198
+
6199
+ driver: external_exports.string().min(1),
6200
+ judge: ExemplarJudgeDecisionSchema,
6201
+
6202
+ prompt: external_exports.string().optional(),
6203
+
6204
+ response: external_exports.string().optional(),
6205
+
6206
+ traceClaims: external_exports.array(TraceClaimCheckSchema),
6207
+
6208
+ groundingClaims: external_exports.array(GroundingClaimCheckSchema)
6209
+ });
6210
+ var OrthogonalityGroupSchema = external_exports.object({
6211
+
6212
+ value: external_exports.string().min(1),
6213
+
6214
+ meanScore: external_exports.number(),
6215
+
6216
+ count: external_exports.number().int().nonnegative()
6217
+ });
6218
+ var InstrumentPartitionCellSchema = external_exports.object({
6219
+
6220
+ identity: external_exports.string().min(1),
6221
+
6222
+ n: external_exports.number().int().nonnegative(),
6223
+
6224
+ meanScore: external_exports.number()
6225
+ });
6226
+ var OrthogonalityExemplarSchema = external_exports.object({
6227
+ source: external_exports.literal("orthogonality-hypothesis"),
6228
+ dimensionId: DimensionIdSchema,
6229
+
6230
+ axis: external_exports.string().min(1),
6231
+
6232
+ etaSquared: external_exports.number(),
6233
+
6234
+ etaSquaredExpectedUnderNull: external_exports.number().nullable(),
6235
+
6236
+ omegaSquared: external_exports.number(),
6237
+
6238
+ adjustedPValue: external_exports.number().nullable(),
6239
+
6240
+ pValue: external_exports.number().nullable(),
6241
+
6242
+ scoredEventCount: external_exports.number().int().nonnegative(),
6243
+
6244
+ analyzedGroupCount: external_exports.number().int().nonnegative(),
6245
+
6246
+ groupsTruncated: external_exports.boolean(),
6247
+
6248
+ groupTimeOverlap: external_exports.number(),
6249
+
6250
+ instrumentHeterogeneous: external_exports.boolean(),
6251
+
6252
+ instrumentPartition: external_exports.array(InstrumentPartitionCellSchema),
6253
+
6254
+ identifierLike: external_exports.boolean(),
6255
+
6256
+ effectSizeUncertain: external_exports.boolean(),
6257
+
6258
+ scoreMax: external_exports.number().positive().nullable(),
6259
+
6260
+ groups: external_exports.array(OrthogonalityGroupSchema)
6261
+ });
6262
+ var TrajectoryTurnDetailSchema = external_exports.object({
6263
+
6264
+ turnIndex: external_exports.number().int().nonnegative(),
6265
+
6266
+ eventId: external_exports.string().min(1),
6267
+ occurredAt: external_exports.string().min(1),
6268
+ role: TrajectoryEvidenceRoleSchema,
6269
+
6270
+ note: external_exports.string().optional(),
6271
+
6272
+ text: external_exports.string().nullable()
6273
+ });
6274
+ var TrajectoryExemplarSchema = external_exports.object({
6275
+ source: external_exports.literal("trajectory"),
6276
+ conversationId: external_exports.string().min(1),
6277
+ surfaceId: SurfaceIdSchema,
6278
+
6279
+ predicate: TrajectoryPredicateSchema,
6280
+
6281
+ predicatesFired: external_exports.array(TrajectoryPredicateSchema),
6282
+
6283
+ turns: external_exports.array(TrajectoryTurnDetailSchema)
6284
+ });
6285
+ var JudgeDispatchFailureBreakdownSchema = external_exports.object({
6286
+ unloadableRubric: external_exports.number().int().nonnegative(),
6287
+ missingRef: external_exports.number().int().nonnegative(),
6288
+ neverDispatched: external_exports.number().int().nonnegative(),
6289
+ unspecified: external_exports.number().int().nonnegative()
6290
+ });
6291
+ var JudgeLivenessExemplarSchema = external_exports.object({
6292
+ source: external_exports.literal("judge-liveness"),
6293
+
6294
+ variant: external_exports.enum(["not-dispatching", "not-lens-dispatched"]),
6295
+
6296
+ dimensionId: DimensionIdSchema.optional(),
6297
+
6298
+ observedCount: external_exports.number().int().nonnegative().optional(),
6299
+
6300
+ dispatchedCount: external_exports.number().int().nonnegative().optional(),
6301
+
6302
+ failureSubtypes: JudgeDispatchFailureBreakdownSchema.optional(),
6303
+
6304
+ dominantReason: JudgeDispatchReasonSchema.optional(),
6305
+
6306
+ failureAction: external_exports.enum(["retry", "flag", "block"]).nullable().optional(),
6307
+
6308
+ rubricRef: external_exports.string().optional(),
6309
+
6310
+ surfaceId: SurfaceIdSchema.optional(),
6311
+
6312
+ inlineDimensionIds: external_exports.array(DimensionIdSchema).optional()
6313
+ });
6314
+ var CoverageGapExemplarSchema = external_exports.object({
6315
+ source: external_exports.literal("coverage-gap"),
6316
+
6317
+ altitude: external_exports.enum(["surface", "dimension"]),
6318
+ surfaceId: SurfaceIdSchema,
6319
+
6320
+ dimensionId: DimensionIdSchema.optional(),
6321
+ surfaceStatus: external_exports.enum(["active", "deprecated"]),
6322
+
6323
+ observedEventCount: external_exports.number().int().nonnegative(),
6324
+
6325
+ surfaceEventCount: external_exports.number().int().nonnegative(),
6326
+
6327
+ declaredDimensionCount: external_exports.number().int().nonnegative(),
6328
+
6329
+ observedFrom: external_exports.string().min(1),
6330
+
6331
+ observedTo: external_exports.string().min(1)
6332
+ });
6333
+ var RetirementCandidateExemplarSchema = external_exports.object({
6334
+ source: external_exports.literal("retirement-candidate"),
6335
+ surfaceId: SurfaceIdSchema,
6336
+ surfaceStatus: external_exports.enum(["active", "deprecated"]),
6337
+
6338
+ structuralConsumerCount: external_exports.number().int().nonnegative(),
6339
+
6340
+ declaredDimensionCount: external_exports.number().int().nonnegative(),
6341
+
6342
+ lastCapturedAt: external_exports.string().min(1)
6343
+ });
6344
+ var QuarantineParseAnomalySchema = external_exports.object({
6345
+
6346
+ field: external_exports.string().min(1),
6347
+
6348
+ recoveredAs: external_exports.string().min(1),
6349
+
6350
+ recoveryStrategy: external_exports.string().min(1),
6351
+
6352
+ rawValue: external_exports.string().nullable()
6353
+ });
6354
+ var QuarantineCandidateExemplarSchema = external_exports.object({
6355
+ source: external_exports.literal("quarantine-candidate"),
6356
+ surfaceId: SurfaceIdSchema,
6357
+
6358
+ candidateStream: external_exports.literal("parse-anomaly-frequent"),
6359
+
6360
+ count: external_exports.number().int().nonnegative(),
6361
+
6362
+ lifecycleState: QuarantineLifecycleStateSchema,
6363
+
6364
+ firstSeen: external_exports.string().min(1),
6365
+
6366
+ lastSeen: external_exports.string().min(1),
6367
+
6368
+ anomalies: external_exports.array(QuarantineParseAnomalySchema)
6369
+ });
6370
+ var EmissionGapExemplarSchema = external_exports.object({
6371
+ source: external_exports.literal("emission-gap"),
6372
+ variant: external_exports.enum(["deployment-broken", "co-occurrence-gap", "no-events"]),
6373
+ surfaceId: SurfaceIdSchema,
6374
+ columnId: external_exports.string().min(1),
6375
+
6376
+ control: ControlAttributeSchema,
6377
+
6378
+ visibility: VisibilityAttributeSchema,
6379
+
6380
+ description: external_exports.string().optional(),
6381
+
6382
+ observedEventCount: external_exports.number().int().nonnegative(),
6383
+
6384
+ emittedCount: external_exports.number().int().nonnegative(),
6385
+
6386
+ whenever: external_exports.string().min(1).optional(),
6387
+
6388
+ conditionMatchedCount: external_exports.number().int().nonnegative().optional(),
6389
+
6390
+ observedFrom: external_exports.string().min(1),
6391
+
6392
+ observedTo: external_exports.string().min(1),
6393
+
6394
+ renameCandidate: external_exports.string().min(1).optional()
6395
+ });
6396
+ var ReachGapStageSchema = external_exports.object({
6397
+
6398
+ id: external_exports.string().min(1),
6399
+
6400
+ kind: PostOutcomeStageKindSchema,
6401
+
6402
+ observability: PostOutcomeObservabilitySchema,
6403
+
6404
+ description: external_exports.string().optional()
6405
+ });
6406
+ var ReachShortfallSchema = external_exports.object({
6407
+ delivered: external_exports.number().int().nonnegative(),
6408
+ dark: external_exports.number().int().nonnegative(),
6409
+ inFlight: external_exports.number().int().nonnegative(),
6410
+
6411
+ settled: external_exports.number().int().nonnegative(),
6412
+
6413
+ darkRate: external_exports.number().nullable(),
6414
+
6415
+ medianDarkAgeMs: external_exports.number().nullable(),
6416
+
6417
+ byLastStage: external_exports.array(
6418
+ external_exports.object({ stageId: external_exports.string().nullable(), dark: external_exports.number().int().nonnegative() })
6419
+ )
6420
+ });
6421
+ var ReachGapExemplarSchema = external_exports.object({
6422
+ source: external_exports.literal("reach-gap"),
6423
+
6424
+ variant: external_exports.enum(["horizon", "shortfall"]),
6425
+ surfaceId: SurfaceIdSchema,
6426
+
6427
+ scoredOutcomeCount: external_exports.number().int().nonnegative(),
6428
+
6429
+ stages: external_exports.array(ReachGapStageSchema),
6430
+
6431
+ unobservedStageCount: external_exports.number().int().nonnegative().optional(),
6432
+
6433
+ hasSuppressingStage: external_exports.boolean().optional(),
6434
+
6435
+ shortfall: ReachShortfallSchema.optional(),
6436
+
6437
+ observedFrom: external_exports.string().min(1),
6438
+
6439
+ observedTo: external_exports.string().min(1)
6440
+ });
6441
+ var AttentionExemplarSchema = external_exports.discriminatedUnion("source", [
6442
+ VerdictReliabilityExemplarSchema,
6443
+ OrthogonalityExemplarSchema,
6444
+ TrajectoryExemplarSchema,
6445
+ JudgeLivenessExemplarSchema,
6446
+ CoverageGapExemplarSchema,
6447
+ RetirementCandidateExemplarSchema,
6448
+ QuarantineCandidateExemplarSchema,
6449
+ EmissionGapExemplarSchema,
6450
+ ReachGapExemplarSchema
6451
+ ]);
6452
+ var AttentionSampleRefSchema = external_exports.object({
6453
+ eventId: external_exports.string().min(1),
6454
+ correlationId: external_exports.string().min(1).optional(),
6455
+ occurredAt: external_exports.string().min(1)
6456
+ });
6457
+ external_exports.object({
6458
+ findingKey: external_exports.string().min(1),
6459
+ exemplar: AttentionExemplarSchema.nullable(),
6460
+ sampleCount: external_exports.number().int().nonnegative(),
6461
+ samples: external_exports.array(AttentionSampleRefSchema),
6462
+
6463
+ reAdjudicable: external_exports.boolean().optional()
6464
+ });
6465
+
6466
+ var ReachFootprintSchema = external_exports.object({
6467
+
6468
+ correlationId: external_exports.string().min(1),
6469
+
6470
+ surfaceId: SurfaceIdSchema,
6471
+
6472
+ stageId: external_exports.string().min(1),
6473
+
6474
+ occurredAt: external_exports.string().datetime()
6475
+ });
6476
+ external_exports.union([
6477
+ ReachFootprintSchema,
6478
+ external_exports.object({ footprints: external_exports.array(ReachFootprintSchema).min(1) })
6479
+ ]);
6480
+ var ALL_REACH_DISPOSITIONS = [
6481
+ "in-flight",
6482
+ "delivered",
6483
+ "dark",
6484
+ "superseded",
6485
+ "expired"
6486
+ ];
6487
+ external_exports.enum(ALL_REACH_DISPOSITIONS);
6488
+
6489
+ var FacetCoverageEntrySchema = external_exports.object({
6490
+ facet: external_exports.string().min(1),
6491
+ scoredCount: external_exports.number().int().nonnegative(),
6492
+ source: external_exports.enum(["facet", "default"]),
6493
+ defaultReason: RubricDefaultReasonSchema.optional()
6494
+ });
6495
+ var FacetDefaultBreakdownSchema = external_exports.object({
6496
+
6497
+ total: external_exports.number().int().nonnegative(),
6498
+
6499
+ noBespokeRef: external_exports.number().int().nonnegative(),
6500
+
6501
+ unmatchedValue: external_exports.number().int().nonnegative(),
6502
+
6503
+ pinUnresolved: external_exports.number().int().nonnegative()
6504
+ });
6505
+ var FacetCoverageReportSchema = external_exports.object({
6506
+ surfaceId: SurfaceIdSchema,
6507
+ dimensionId: DimensionIdSchema,
6508
+
6509
+ facet: external_exports.string().min(1),
6510
+
6511
+ scoredCount: external_exports.number().int().nonnegative(),
6512
+
6513
+ scoredOnDefault: external_exports.number().int().nonnegative(),
6514
+
6515
+ untaggedCount: external_exports.number().int().nonnegative(),
6516
+
6517
+ facetsSeen: external_exports.number().int().nonnegative(),
6518
+
6519
+ bespokeCount: external_exports.number().int().nonnegative(),
6520
+
6521
+ defaultOnly: FacetDefaultBreakdownSchema,
6522
+
6523
+ facets: external_exports.array(FacetCoverageEntrySchema)
6524
+ });
6525
+ external_exports.object({
6526
+ reports: external_exports.array(FacetCoverageReportSchema)
6527
+ });
6528
+
6529
+ var MULTIPLEX_RUN_MAX_VENDORS = 8;
6530
+ var MultiplexRunTokensSchema = external_exports.object({
6531
+ input: external_exports.number().nonnegative(),
6532
+ output: external_exports.number().nonnegative(),
6533
+ cacheRead: external_exports.number().nonnegative().optional(),
6534
+ cacheWrite: external_exports.number().nonnegative().optional()
6535
+ });
6536
+ external_exports.object({
6537
+
6538
+ sourceEventId: external_exports.string().min(1).optional(),
6539
+
6540
+ sourceCorrelationId: external_exports.string().min(1).optional(),
6541
+
6542
+ targetSurfaceId: external_exports.string().min(1).optional(),
6543
+
6544
+ vendorIds: external_exports.array(external_exports.string().min(1)).min(2).max(MULTIPLEX_RUN_MAX_VENDORS),
6545
+
6546
+ label: external_exports.string().min(1).max(128).regex(/^[A-Za-z0-9._-]+$/, "label must match [A-Za-z0-9._-]"),
6547
+
6548
+ approverId: external_exports.string().min(1),
6549
+
6550
+ acknowledgedEstimateUsd: external_exports.number().nonnegative().optional()
6551
+ }).refine((b) => b.sourceEventId === void 0 !== (b.sourceCorrelationId === void 0), {
6552
+ message: "provide exactly one of sourceEventId or sourceCorrelationId"
6553
+ });
6554
+ var MultiplexRunVendorEstimateSchema = external_exports.object({
6555
+ vendorId: external_exports.string(),
6556
+ estimatedUsd: external_exports.number().nonnegative().nullable(),
6557
+ priced: external_exports.boolean()
6558
+ });
6559
+ var MultiplexRunEstimateSchema = external_exports.object({
6560
+ totalUsd: external_exports.number().nonnegative(),
6561
+ thresholdUsd: external_exports.number().nonnegative(),
6562
+ perVendor: external_exports.array(MultiplexRunVendorEstimateSchema),
6563
+ basis: external_exports.literal("source-tokens"),
6564
+ sourceTokens: MultiplexRunTokensSchema,
6565
+
6566
+ unpricedVendorIds: external_exports.array(external_exports.string())
6567
+ });
6568
+ var MultiplexRunDimensionSchema = external_exports.object({
6569
+ dimensionId: external_exports.string(),
6570
+ passed: external_exports.boolean(),
6571
+
6572
+ score: external_exports.number().nullable()
6573
+ });
6574
+ var MultiplexRunLegSchema = external_exports.object({
6575
+ vendorId: external_exports.string(),
6576
+ role: external_exports.enum(["primary", "observer"]),
6577
+ callId: external_exports.string(),
6578
+ correlationId: external_exports.string(),
6579
+ occurredAt: external_exports.string(),
6580
+
6581
+ servedModel: external_exports.string().nullable(),
6582
+
6583
+ response: external_exports.string().nullable(),
6584
+ tokens: MultiplexRunTokensSchema,
6585
+ latencyMs: external_exports.number().nullable(),
6586
+ costUsd: external_exports.number().nullable(),
6587
+
6588
+ dimensions: external_exports.array(MultiplexRunDimensionSchema),
6589
+
6590
+ gateAction: external_exports.string().optional()
6591
+ });
6592
+ var MultiplexRunFailureSchema = external_exports.object({
6593
+ vendorId: external_exports.string(),
6594
+ error: external_exports.string()
6595
+ });
6596
+ external_exports.discriminatedUnion("status", [
6597
+ external_exports.object({
6598
+ status: external_exports.literal("confirmation-required"),
6599
+ estimate: MultiplexRunEstimateSchema
6600
+ }),
6601
+ external_exports.object({
6602
+ status: external_exports.literal("ran"),
6603
+ correlationId: external_exports.string(),
6604
+ surfaceId: external_exports.string(),
6605
+ label: external_exports.string(),
6606
+ estimate: MultiplexRunEstimateSchema,
6607
+ legs: external_exports.array(MultiplexRunLegSchema),
6608
+ failed: external_exports.array(MultiplexRunFailureSchema).optional(),
6609
+ scoredDuringRun: external_exports.boolean()
6610
+ })
6611
+ ]);
6612
+
6613
+ var HolonographGradeAfterReportError = class extends Error {
6614
+ constructor() {
6615
+ super(
6616
+ "gradeObserver: cannot grade observers after reportOutcome has flushed. Call gradeObserver(...) for each observer FIRST, then call reportOutcome(...) once."
6617
+ );
6618
+ this.name = "HolonographGradeAfterReportError";
6619
+ }
6620
+ };
6621
+ var HolonographObserverNotFoundError = class extends Error {
6622
+ constructor(lightSourceId, known) {
6623
+ super(
6624
+ `gradeObserver: no observer record matches lightSourceId "${lightSourceId}". Known observers: ${known.length > 0 ? known.join(", ") : "<none>"}`
6625
+ );
6626
+ this.name = "HolonographObserverNotFoundError";
6627
+ }
6628
+ };
6629
+ var HolonographNoObserversError = class extends Error {
6630
+ constructor() {
6631
+ super(
6632
+ "gradeObserver: this response has no observer records \u2014 the routing was single-vendor. Use reportOutcome(...) to grade the primary."
6633
+ );
6634
+ this.name = "HolonographNoObserversError";
6635
+ }
6636
+ };
6637
+ var HolonographMarkerPairingWarningError = class extends Error {
6638
+ constructor(pairing) {
6639
+ super(
6640
+ `availability.mark: server reported pairing severity "${pairing.severity}"` + (pairing.note !== null ? ` \u2014 ${pairing.note}` : "") + (pairing.unpairedClosers.length > 0 ? ` (unpaired closers: ${pairing.unpairedClosers.join(", ")})` : "")
6641
+ );
6642
+ this.pairing = pairing;
6643
+ this.name = "HolonographMarkerPairingWarningError";
6644
+ }
6645
+ pairing;
6646
+ };
6647
+
6648
+ var InProcessTransport = class {
6649
+ mediator;
6650
+ gateExecutor;
6651
+ store;
6652
+ constructor(opts) {
6653
+ this.mediator = opts.mediator;
6654
+ this.gateExecutor = opts.gateExecutor;
6655
+ this.store = opts.store;
6656
+ }
6657
+ async dispatch(req) {
6658
+ return this.gateExecutor ? this.gateExecutor.callWithGates(req) : this.mediator.call(req);
6659
+ }
6660
+ async appendEvent(event) {
6661
+ if (!this.store) return event.eventId;
6662
+ return this.store.append(event);
6663
+ }
6664
+
6665
+ get topology() {
6666
+ return this.mediator.topology;
6667
+ }
6668
+ };
6669
+
6670
+ var BoundedEmitBuffer = class {
6671
+ capacity;
6672
+ items = [];
6673
+ _offeredTotal = 0;
6674
+ _droppedTotal = 0;
6675
+
6676
+ constructor(capacity) {
6677
+ if (!Number.isInteger(capacity) || capacity < 1) {
6678
+ throw new RangeError(
6679
+ `BoundedEmitBuffer capacity must be a positive integer, got ${String(capacity)}`
6680
+ );
6681
+ }
6682
+ this.capacity = capacity;
6683
+ }
6684
+
6685
+ offer(item) {
6686
+ this._offeredTotal += 1;
6687
+ if (this.items.length >= this.capacity) {
6688
+ this._droppedTotal += 1;
6689
+ return false;
6690
+ }
6691
+ this.items.push(item);
6692
+ return true;
6693
+ }
6694
+
6695
+ drain() {
6696
+ if (this.items.length === 0) return [];
6697
+ const out = this.items;
6698
+ this.items = [];
6699
+ return out;
6700
+ }
6701
+
6702
+ get size() {
6703
+ return this.items.length;
6704
+ }
6705
+
6706
+ get maxSize() {
6707
+ return this.capacity;
6708
+ }
6709
+
6710
+ get offeredTotal() {
6711
+ return this._offeredTotal;
6712
+ }
6713
+
6714
+ get droppedTotal() {
6715
+ return this._droppedTotal;
6716
+ }
6717
+ };
6718
+
6719
+ var CompletenessAccounting = class {
6720
+ constructor(lensVersion, config, hooks = {}) {
6721
+ this.lensVersion = lensVersion;
5480
6722
  this.config = config;
5481
6723
  this.hooks = hooks;
5482
6724
  }
@@ -6290,12 +7532,22 @@ var HolonographClient = class {
6290
7532
 
6291
7533
  onUnknownColumn;
6292
7534
 
7535
+ onUnknownColumnExplicit;
7536
+
7537
+ unknownColumnDeprecationWarned = false;
7538
+
6293
7539
  declaredColumns;
6294
7540
 
6295
7541
  warnedColumns = new Set();
6296
7542
 
6297
7543
  refreshedColumnsOnce = false;
6298
7544
 
7545
+ onCoverageDivergence;
7546
+
7547
+ coverageDivergenceChecked = false;
7548
+
7549
+ emitNonBlocking;
7550
+
6299
7551
  messages;
6300
7552
 
6301
7553
  contract;
@@ -6330,6 +7582,9 @@ var HolonographClient = class {
6330
7582
  this.lensVersion = options.lensVersion;
6331
7583
  this.substrate = options.substrate;
6332
7584
  this.onUnknownColumn = isHttpOptions(options) ? options.onUnknownColumn ?? "warn" : "ignore";
7585
+ this.onUnknownColumnExplicit = isHttpOptions(options) && options.onUnknownColumn !== void 0;
7586
+ this.onCoverageDivergence = isHttpOptions(options) ? options.onCoverageDivergence ?? "warn" : "ignore";
7587
+ this.emitNonBlocking = isHttpOptions(options) && options.emit?.mode !== void 0 && options.emit.mode !== "sync";
6333
7588
  this.messages = { create: (req) => this.messagesCreate(req) };
6334
7589
  this.contract = { register: (c) => this.registerContract(c) };
6335
7590
  this.availability = { mark: (req, opts) => this.markAvailability(req, opts) };
@@ -6411,10 +7666,13 @@ var HolonographClient = class {
6411
7666
  return this.declaredColumns;
6412
7667
  }
6413
7668
 
6414
- apparatusStampedColumns(light, judgeIdentity) {
7669
+ apparatusStampedColumns(light, judgeIdentity, rubricDispatch) {
6415
7670
  const columns = { ...this.substrate.columns };
6416
7671
  if (light.servedModel !== void 0) columns[SERVED_MODEL_COLUMN_ID] = light.servedModel;
6417
7672
  if (judgeIdentity !== void 0) Object.assign(columns, judgeIdentityColumns(judgeIdentity));
7673
+ if (rubricDispatch !== void 0) {
7674
+ Object.assign(columns, rubricDispatchColumns(rubricDispatch));
7675
+ }
6418
7676
  return columns;
6419
7677
  }
6420
7678
 
@@ -6426,14 +7684,31 @@ var HolonographClient = class {
6426
7684
  (k) => k !== SERVED_MODEL_COLUMN_ID && !k.startsWith(JUDGE_RESERVED_COLUMN_NAMESPACE_PREFIX)
6427
7685
  );
6428
7686
  if (keys.length === 0) return;
7687
+ const apparatusSpellArounds = keys.filter((k) => isApparatusFacetSpelling(k));
7688
+ const substrateKeys = keys.filter((k) => !isApparatusFacetSpelling(k));
7689
+ if (apparatusSpellArounds.length > 0) {
7690
+ if (this.onUnknownColumn === "throw") {
7691
+ throw new Error(
7692
+ `Holonograph: substrate column(s) collide with apparatus-owned lens identity: ${apparatusSpellArounds.join(", ")}. These normalize to columns the apparatus stamps itself (read the 'judge.*' / 'light_source_served_model' columns) \u2014 remove them from your substrate. (onUnknownColumn: 'throw')`
7693
+ );
7694
+ }
7695
+ const toWarn2 = apparatusSpellArounds.filter((k) => !this.warnedColumns.has(k));
7696
+ if (toWarn2.length > 0) {
7697
+ for (const k of toWarn2) this.warnedColumns.add(k);
7698
+ console.warn(
7699
+ `Holonograph: substrate column(s) collide with apparatus-owned lens identity: ${toWarn2.join(", ")}. The apparatus stamps its own identity ('judge.*', 'light_source_served_model'); a substrate look-alike is not read as an axis \u2014 read the apparatus-stamped columns instead. (onUnknownColumn: 'throw' to block, 'ignore' to silence.)`
7700
+ );
7701
+ }
7702
+ }
7703
+ if (substrateKeys.length === 0) return;
6429
7704
  const declared = await this.fetchDeclaredColumns();
6430
7705
  if (declared === null || declared.size === 0) return;
6431
- let unknown = keys.filter((k) => !declared.has(k));
7706
+ let unknown = substrateKeys.filter((k) => !declared.has(k));
6432
7707
  if (unknown.length > 0 && !this.refreshedColumnsOnce) {
6433
7708
  this.refreshedColumnsOnce = true;
6434
7709
  const refreshed = await this.fetchDeclaredColumns(true);
6435
7710
  if (refreshed === null || refreshed.size === 0) return;
6436
- unknown = keys.filter((k) => !refreshed.has(k));
7711
+ unknown = substrateKeys.filter((k) => !refreshed.has(k));
6437
7712
  }
6438
7713
  if (unknown.length === 0) return;
6439
7714
  if (this.onUnknownColumn === "throw") {
@@ -6447,6 +7722,42 @@ var HolonographClient = class {
6447
7722
  console.warn(
6448
7723
  `Holonograph: substrate column(s) declared in no surface contract: ${toWarn.join(", ")}. They are still emitted, but the lens won't recognize them \u2014 declare them on the contract or fix the typo. (onUnknownColumn: 'throw' to block, 'ignore' to silence.)`
6449
7724
  );
7725
+ if (!this.onUnknownColumnExplicit && !this.unknownColumnDeprecationWarned) {
7726
+ this.unknownColumnDeprecationWarned = true;
7727
+ console.warn(
7728
+ `Holonograph: DEPRECATION \u2014 the default onUnknownColumn will change from 'warn' to 'throw' in the next @holonograph/client major, so an undeclared substrate column will be REJECTED rather than logged. Declare your columns on the surface contract, or set onUnknownColumn: 'warn' explicitly to keep warn-and-continue. (This notice fires once.)`
7729
+ );
7730
+ }
7731
+ }
7732
+
7733
+ async maybeSurfaceCoverageDivergence() {
7734
+ const getEmission = this.transport.getEmission?.bind(this.transport);
7735
+ if (this.onCoverageDivergence === "ignore" || this.emitNonBlocking || // never block the fast-resolve emit modes
7736
+ this.coverageDivergenceChecked || getEmission === void 0) {
7737
+ return;
7738
+ }
7739
+ this.coverageDivergenceChecked = true;
7740
+ const audit = await getEmission().catch(() => void 0);
7741
+ if (audit === void 0) return;
7742
+ const undeclared = [];
7743
+ const missing = [];
7744
+ const apparatus = [];
7745
+ for (const surface of audit.surfaces) {
7746
+ for (const col of surface.undeclaredObserved) undeclared.push(`${surface.surfaceId}.${col}`);
7747
+ for (const row of surface.columns) {
7748
+ if (row.verdict === "missing") missing.push(`${surface.surfaceId}.${row.columnId}`);
7749
+ }
7750
+ for (const col of surface.apparatusObserved) apparatus.push(`${surface.surfaceId}.${col}`);
7751
+ }
7752
+ if (undeclared.length === 0 && missing.length === 0) return;
7753
+ const parts = [];
7754
+ if (undeclared.length > 0) parts.push(`emitted-but-undeclared: ${undeclared.join(", ")}`);
7755
+ if (missing.length > 0) {
7756
+ parts.push(`declared-but-never-emitted (missing): ${missing.join(", ")}`);
7757
+ }
7758
+ console.warn(
7759
+ `Holonograph: declared-vs-emitted coverage divergence \u2014 ${parts.join("; ")}. See GET /holonograph/emission for the full audit` + (apparatus.length > 0 ? ` (apparatus columns observed: ${apparatus.join(", ")})` : "") + `. (onCoverageDivergence: 'ignore' to silence.)`
7760
+ );
6450
7761
  }
6451
7762
  async registerContract(contract) {
6452
7763
  if (typeof this.transport.postContract !== "function") {
@@ -6520,6 +7831,7 @@ var HolonographClient = class {
6520
7831
  };
6521
7832
  if (d.score !== void 0) dim.score = d.score;
6522
7833
  if (d.rationale !== void 0) dim.rationale = d.rationale;
7834
+ if (d.judge !== void 0) dim.judge = d.judge;
6523
7835
  return dim;
6524
7836
  }),
6525
7837
  cohortTags: primaryCohortTags,
@@ -6544,12 +7856,17 @@ var HolonographClient = class {
6544
7856
  substrate: {
6545
7857
  ...this.substrate,
6546
7858
  lightSourceIdentifier: callResult.record.lightSourceId,
6547
- columns: this.apparatusStampedColumns(callResult.record.light, outcome.judgeIdentity)
7859
+ columns: this.apparatusStampedColumns(
7860
+ callResult.record.light,
7861
+ outcome.judgeIdentity,
7862
+ outcome.rubricDispatch
7863
+ )
6548
7864
  },
6549
7865
  surface
6550
7866
  });
6551
7867
  await this.validateSubstrateColumns(event.substrate?.columns);
6552
7868
  await this.transport.appendEvent(event);
7869
+ await this.maybeSurfaceCoverageDivergence();
6553
7870
  if (callResult.observerRecords && callResult.observerRecords.length > 0) {
6554
7871
  const siblingCohortTags = baseCohortTags;
6555
7872
  for (const observerRecord of callResult.observerRecords) {
@@ -6589,6 +7906,7 @@ var HolonographClient = class {
6589
7906
  };
6590
7907
  if (d.score !== void 0) dim.score = d.score;
6591
7908
  if (d.rationale !== void 0) dim.rationale = d.rationale;
7909
+ if (d.judge !== void 0) dim.judge = d.judge;
6592
7910
  return dim;
6593
7911
  }),
6594
7912
  cohortTags: observerCohortTags,