@gate-forge/core 0.4.0 → 0.6.1

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 (106) hide show
  1. package/dist/baselines/index.js +1 -1
  2. package/dist/baselines/index.js.map +1 -1
  3. package/dist/classifier/classify.d.ts +1 -0
  4. package/dist/classifier/classify.d.ts.map +1 -1
  5. package/dist/classifier/classify.js +66 -10
  6. package/dist/classifier/classify.js.map +1 -1
  7. package/dist/config/index.d.ts +3 -1
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +16 -0
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/fingerprints.d.ts +35 -4
  12. package/dist/fingerprints.d.ts.map +1 -1
  13. package/dist/fingerprints.js +58 -5
  14. package/dist/fingerprints.js.map +1 -1
  15. package/dist/index.d.ts +46 -14
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +40 -12
  18. package/dist/index.js.map +1 -1
  19. package/dist/mapping/resolve.d.ts +6 -2
  20. package/dist/mapping/resolve.d.ts.map +1 -1
  21. package/dist/mapping/resolve.js +122 -17
  22. package/dist/mapping/resolve.js.map +1 -1
  23. package/dist/policy/behavior.d.ts +44 -0
  24. package/dist/policy/behavior.d.ts.map +1 -0
  25. package/dist/policy/behavior.js +373 -0
  26. package/dist/policy/behavior.js.map +1 -0
  27. package/dist/policy/coverage.d.ts +4 -3
  28. package/dist/policy/coverage.d.ts.map +1 -1
  29. package/dist/policy/coverage.js +12 -6
  30. package/dist/policy/coverage.js.map +1 -1
  31. package/dist/policy/evaluate.d.ts +23 -0
  32. package/dist/policy/evaluate.d.ts.map +1 -1
  33. package/dist/policy/index.d.ts +1 -0
  34. package/dist/policy/index.d.ts.map +1 -1
  35. package/dist/policy/index.js +1 -0
  36. package/dist/policy/index.js.map +1 -1
  37. package/dist/receipt/index.d.ts +56 -4
  38. package/dist/receipt/index.d.ts.map +1 -1
  39. package/dist/receipt/index.js +139 -5
  40. package/dist/receipt/index.js.map +1 -1
  41. package/dist/report/index.js +4 -19
  42. package/dist/report/index.js.map +1 -1
  43. package/dist/schemas/behavior-catalog.d.ts +2868 -0
  44. package/dist/schemas/behavior-catalog.d.ts.map +1 -0
  45. package/dist/schemas/behavior-catalog.js +103 -0
  46. package/dist/schemas/behavior-catalog.js.map +1 -0
  47. package/dist/schemas/behavior-evidence.d.ts +174 -0
  48. package/dist/schemas/behavior-evidence.d.ts.map +1 -0
  49. package/dist/schemas/behavior-evidence.js +157 -0
  50. package/dist/schemas/behavior-evidence.js.map +1 -0
  51. package/dist/schemas/behavior-policy.d.ts +6214 -0
  52. package/dist/schemas/behavior-policy.d.ts.map +1 -0
  53. package/dist/schemas/behavior-policy.js +896 -0
  54. package/dist/schemas/behavior-policy.js.map +1 -0
  55. package/dist/schemas/classification-policy.d.ts +52 -0
  56. package/dist/schemas/classification-policy.d.ts.map +1 -1
  57. package/dist/schemas/classification-policy.js +93 -0
  58. package/dist/schemas/classification-policy.js.map +1 -1
  59. package/dist/schemas/execution-result.d.ts +4 -4
  60. package/dist/schemas/gate-receipt.d.ts +10 -3
  61. package/dist/schemas/gate-receipt.d.ts.map +1 -1
  62. package/dist/schemas/gate-receipt.js +46 -3
  63. package/dist/schemas/gate-receipt.js.map +1 -1
  64. package/dist/schemas/index.d.ts +3 -0
  65. package/dist/schemas/index.d.ts.map +1 -1
  66. package/dist/schemas/index.js +3 -0
  67. package/dist/schemas/index.js.map +1 -1
  68. package/dist/schemas/obligation.d.ts +1 -0
  69. package/dist/schemas/obligation.d.ts.map +1 -1
  70. package/dist/schemas/obligation.js +9 -0
  71. package/dist/schemas/obligation.js.map +1 -1
  72. package/dist/schemas/runtime-config.d.ts +103 -0
  73. package/dist/schemas/runtime-config.d.ts.map +1 -0
  74. package/dist/schemas/runtime-config.js +168 -0
  75. package/dist/schemas/runtime-config.js.map +1 -0
  76. package/dist/schemas/test-catalog.d.ts +20 -2
  77. package/dist/schemas/test-catalog.d.ts.map +1 -1
  78. package/dist/schemas/test-catalog.js +13 -0
  79. package/dist/schemas/test-catalog.js.map +1 -1
  80. package/dist/schemas/test-map.d.ts +4 -0
  81. package/dist/schemas/test-map.d.ts.map +1 -1
  82. package/dist/schemas/test-map.js +24 -1
  83. package/dist/schemas/test-map.js.map +1 -1
  84. package/dist/schemas/verdict.d.ts +11 -0
  85. package/dist/schemas/verdict.d.ts.map +1 -1
  86. package/dist/schemas/verdict.js +33 -6
  87. package/dist/schemas/verdict.js.map +1 -1
  88. package/dist/testing/gate-runner.d.ts.map +1 -1
  89. package/dist/testing/gate-runner.js +2 -7
  90. package/dist/testing/gate-runner.js.map +1 -1
  91. package/dist/verdict/behavior.d.ts +87 -0
  92. package/dist/verdict/behavior.d.ts.map +1 -0
  93. package/dist/verdict/behavior.js +1328 -0
  94. package/dist/verdict/behavior.js.map +1 -0
  95. package/dist/verdict/evaluate.d.ts +10 -0
  96. package/dist/verdict/evaluate.d.ts.map +1 -1
  97. package/dist/verdict/evaluate.js +188 -27
  98. package/dist/verdict/evaluate.js.map +1 -1
  99. package/dist/verdict/index.d.ts +6 -0
  100. package/dist/verdict/index.d.ts.map +1 -1
  101. package/dist/verdict/index.js +6 -0
  102. package/dist/verdict/index.js.map +1 -1
  103. package/dist/verdict/pack-verifiers.d.ts.map +1 -1
  104. package/dist/verdict/pack-verifiers.js +124 -33
  105. package/dist/verdict/pack-verifiers.js.map +1 -1
  106. package/package.json +1 -1
@@ -0,0 +1,373 @@
1
+ /**
2
+ * Behavior-policy compiler (plan 2026-09-19 §4.1/§4.7): turns a
3
+ * validated behavior document plus the current resource graph into a
4
+ * deterministic catalog, obligations, and blocking entries.
5
+ *
6
+ * Core accepts validated data only. YAML loading stays in the CLI.
7
+ * Duplicate/contradictory documents fail as PolicyEvaluationError
8
+ * (exit 2). Missing/stale graph references become BlockingEntry values
9
+ * with ENDPOINT_BEHAVIOR_MISSING / BEHAVIOR_REFERENCE_STALE.
10
+ */
11
+ import { sha256Canonical } from '../canonical-json.js';
12
+ import { HTTP_ENDPOINT_RESOURCE_KIND } from '../graph/schema.js';
13
+ import { compareStrings } from '../graph/util.js';
14
+ import { BEHAVIOR_CATALOG_DOMAIN, BEHAVIOR_REQUIREMENTS_DOMAIN, BehaviorCatalogSchema, } from '../schemas/behavior-catalog.js';
15
+ import { BEHAVIOR_CASE_DOMAIN, BEHAVIOR_HTTP_METHODS, BehaviorPolicySchema, HTTP_REQUEST_OBSERVED, TRANSPORT_ONLY_CONTRACTS, } from '../schemas/behavior-policy.js';
16
+ import { ObligationSchema } from '../schemas/obligation.js';
17
+ import { CAUSE_NEXT_ACTIONS } from '../schemas/verdict.js';
18
+ import { BlockingEntrySchema, PolicyEvaluationError, } from './evaluate.js';
19
+ /** Policy id stamped on every obligation compiled from a behavior document. */
20
+ export const BEHAVIOR_POLICY_ID = 'behavior-policy';
21
+ /** Canonical empty-catalog digest (never an omitted field). */
22
+ export const EMPTY_BEHAVIOR_CATALOG_DIGEST = sha256Canonical({
23
+ domain: BEHAVIOR_CATALOG_DOMAIN,
24
+ schemaVersion: 1,
25
+ cases: [],
26
+ requirements: {},
27
+ dependencies: {},
28
+ });
29
+ /**
30
+ * Parses unknown input as a behavior policy. Unknown versions, extra
31
+ * keys, and semantic schema failures are config errors (exit 2).
32
+ *
33
+ * Args:
34
+ * input (unknown): decoded YAML/JSON document.
35
+ *
36
+ * Returns:
37
+ * BehaviorPolicy: the validated document.
38
+ */
39
+ export function parseBehaviorPolicy(input) {
40
+ const parsed = BehaviorPolicySchema.safeParse(input);
41
+ if (!parsed.success) {
42
+ const issue = parsed.error.issues[0];
43
+ const path = issue?.path.length ? issue.path.join('.') : '<root>';
44
+ throw new PolicyEvaluationError(`behavior policy is invalid at ${path}: ${issue?.message ?? parsed.error.message}`);
45
+ }
46
+ return parsed.data;
47
+ }
48
+ /**
49
+ * Compiles a validated behavior policy against the current graph.
50
+ *
51
+ * Args:
52
+ * input (CompileBehaviorPolicyInput): graph plus validated policy.
53
+ *
54
+ * Returns:
55
+ * CompileBehaviorPolicyResult: catalog, obligations, blocking entries.
56
+ */
57
+ export function compileBehaviorPolicy(input) {
58
+ const policy = BehaviorPolicySchema.parse(input.policy);
59
+ const endpointsById = new Map();
60
+ const resourcesById = new Map();
61
+ for (const resource of input.graph.resources) {
62
+ if (resource.id === null)
63
+ continue;
64
+ resourcesById.set(resource.id, resource);
65
+ if (resource.kind === HTTP_ENDPOINT_RESOURCE_KIND) {
66
+ endpointsById.set(resource.id, resource);
67
+ }
68
+ }
69
+ const declaredEndpoints = new Map();
70
+ for (const endpoint of policy.endpoints) {
71
+ declaredEndpoints.set(endpoint.resourceId, endpoint);
72
+ }
73
+ const declaredResources = new Map();
74
+ for (const resource of policy.resources) {
75
+ declaredResources.set(resource.resourceId, resource);
76
+ }
77
+ const blocking = [];
78
+ const compiled = [];
79
+ const obligationCases = new Map();
80
+ for (const [resourceId, resource] of [...endpointsById.entries()].sort((a, b) => compareStrings(a[0], b[0]))) {
81
+ const declared = declaredEndpoints.get(resourceId);
82
+ if (declared === undefined) {
83
+ blocking.push(block('finding', resourceId, resource.name, `discovered endpoint '${resourceId}' has no approved behavioral declaration`, resource.location, 'ENDPOINT_BEHAVIOR_MISSING'));
84
+ continue;
85
+ }
86
+ const operational = isHealthOperations(resource);
87
+ if (declared.disposition?.kind === 'operational-only' && !operational) {
88
+ throw new PolicyEvaluationError(`operational-only disposition on '${resourceId}' is illegal: the route is not positively classified health-operations`);
89
+ }
90
+ const staleEffect = declared.effects.find((effect) => !resourcesById.has(effect.resourceId));
91
+ if (staleEffect !== undefined) {
92
+ blocking.push(block('stale-reference', resourceId, resource.name, `behavior policy declares effect '${staleEffect.resourceId}' for endpoint '${resourceId}' which is not in the current graph`, resource.location, 'BEHAVIOR_REFERENCE_STALE'));
93
+ continue;
94
+ }
95
+ const linkedError = linkedResourceConflict(resource, declared.effects);
96
+ if (linkedError !== null) {
97
+ blocking.push(block('finding', resourceId, resource.name, linkedError, resource.location, 'BEHAVIOR_BINDING_MISMATCH'));
98
+ continue;
99
+ }
100
+ const sourceFiles = sortedUnique([
101
+ resource.source,
102
+ ...declared.effects.flatMap((effect) => {
103
+ const target = resourcesById.get(effect.resourceId);
104
+ return target === undefined ? [] : [target.source];
105
+ }),
106
+ ]);
107
+ if (declared.disposition?.kind === 'out-of-scope') {
108
+ continue;
109
+ }
110
+ const effects = sortEffects(declared.effects);
111
+ if (declared.disposition?.kind === 'operational-only') {
112
+ const hasTransport = declared.cases.some((item) => TRANSPORT_ONLY_CONTRACTS.has(item.contract));
113
+ collectSubject({
114
+ resourceId,
115
+ endpointResourceId: resourceId,
116
+ resource,
117
+ effects,
118
+ cases: hasTransport ? declared.cases : [...declared.cases, operationalTransportCase(resource)],
119
+ sourceFiles,
120
+ compiled,
121
+ obligationCases,
122
+ });
123
+ continue;
124
+ }
125
+ collectSubject({
126
+ resourceId,
127
+ endpointResourceId: resourceId,
128
+ resource,
129
+ effects,
130
+ cases: declared.cases,
131
+ sourceFiles,
132
+ compiled,
133
+ obligationCases,
134
+ });
135
+ }
136
+ for (const declared of policy.endpoints) {
137
+ if (endpointsById.has(declared.resourceId))
138
+ continue;
139
+ blocking.push(block('stale-reference', declared.resourceId, declared.resourceId, `behavior policy references endpoint '${declared.resourceId}' which is not in the current graph`, null, 'BEHAVIOR_REFERENCE_STALE'));
140
+ }
141
+ for (const declared of policy.resources) {
142
+ const resource = resourcesById.get(declared.resourceId);
143
+ if (resource === undefined) {
144
+ blocking.push(block('stale-reference', declared.resourceId, declared.resourceId, `behavior policy references resource '${declared.resourceId}' which is not in the current graph`, null, 'BEHAVIOR_REFERENCE_STALE'));
145
+ continue;
146
+ }
147
+ const staleEffect = declared.effects.find((effect) => !resourcesById.has(effect.resourceId));
148
+ if (staleEffect !== undefined) {
149
+ blocking.push(block('stale-reference', declared.resourceId, declared.resourceId, `behavior policy declares effect '${staleEffect.resourceId}' for resource '${declared.resourceId}' which is not in the current graph`, resource.location, 'BEHAVIOR_REFERENCE_STALE'));
150
+ continue;
151
+ }
152
+ collectSubject({
153
+ resourceId: declared.resourceId,
154
+ endpointResourceId: null,
155
+ resource,
156
+ effects: sortEffects(declared.effects),
157
+ cases: declared.cases,
158
+ sourceFiles: sortedUnique([resource.source]),
159
+ compiled,
160
+ obligationCases,
161
+ });
162
+ }
163
+ compiled.sort((a, b) => compareStrings(a.caseId, b.caseId));
164
+ const requirements = {};
165
+ const obligations = [];
166
+ for (const [obligationId, entry] of [...obligationCases.entries()].sort((a, b) => compareStrings(a[0], b[0]))) {
167
+ const caseIds = compiled
168
+ .filter((item) => item.obligationIds.includes(obligationId))
169
+ .map((item) => item.caseId)
170
+ .sort(compareStrings);
171
+ requirements[obligationId] = caseIds;
172
+ const requirementsDigest = sha256Canonical({
173
+ domain: BEHAVIOR_REQUIREMENTS_DOMAIN,
174
+ obligationId,
175
+ specifications: [...entry.specs].sort((a, b) => compareStrings(canonicalKey(a), canonicalKey(b))),
176
+ });
177
+ obligations.push(ObligationSchema.parse({
178
+ ...entry.obligation,
179
+ requirementsDigest,
180
+ }));
181
+ }
182
+ const dependencies = {};
183
+ for (const item of compiled) {
184
+ const ids = sortedUnique(item.effects.map((effect) => effect.resourceId));
185
+ dependencies[item.resourceId] = ids;
186
+ }
187
+ const catalogBody = {
188
+ schemaVersion: 1,
189
+ cases: compiled,
190
+ requirements,
191
+ dependencies,
192
+ };
193
+ const catalogDigest = compiled.length === 0
194
+ ? EMPTY_BEHAVIOR_CATALOG_DIGEST
195
+ : sha256Canonical({ domain: BEHAVIOR_CATALOG_DOMAIN, ...catalogBody });
196
+ const catalog = BehaviorCatalogSchema.parse({ ...catalogBody, catalogDigest });
197
+ return {
198
+ catalog,
199
+ obligations: obligations.sort((a, b) => compareStrings(a.id, b.id)),
200
+ blocking: blocking.sort((a, b) => {
201
+ const byKind = compareStrings(a.kind, b.kind);
202
+ if (byKind !== 0)
203
+ return byKind;
204
+ return compareStrings(a.resourceId ?? '', b.resourceId ?? '');
205
+ }),
206
+ };
207
+ }
208
+ /**
209
+ * Compiles every case of one subject into catalog entries and obligation drafts.
210
+ *
211
+ * Args:
212
+ * input (CollectInput): subject, cases, and accumulators.
213
+ */
214
+ function collectSubject(input) {
215
+ const lifecycle = input.resource.classification?.lifecycle ?? {
216
+ create: true,
217
+ read: true,
218
+ update: true,
219
+ delete: true,
220
+ deleteSemantics: 'hard',
221
+ };
222
+ for (const definition of input.cases) {
223
+ const spec = canonicalizeCase(definition);
224
+ const specDigest = sha256Canonical(spec);
225
+ const caseId = sha256Canonical({
226
+ domain: BEHAVIOR_CASE_DOMAIN,
227
+ resourceId: input.resourceId,
228
+ id: definition.id,
229
+ });
230
+ const obligationId = `${input.resourceId}:${definition.contract}`;
231
+ const compiled = {
232
+ caseId,
233
+ specDigest,
234
+ resourceId: input.resourceId,
235
+ endpointResourceId: input.endpointResourceId,
236
+ obligationIds: [obligationId],
237
+ definition,
238
+ effects: input.effects,
239
+ sourceFiles: input.sourceFiles,
240
+ };
241
+ input.compiled.push(compiled);
242
+ const existing = input.obligationCases.get(obligationId);
243
+ if (existing === undefined) {
244
+ input.obligationCases.set(obligationId, {
245
+ obligation: ObligationSchema.parse({
246
+ schemaVersion: 1,
247
+ id: obligationId,
248
+ resourceId: input.resourceId,
249
+ contract: definition.contract,
250
+ policyId: BEHAVIOR_POLICY_ID,
251
+ lifecycle,
252
+ }),
253
+ specs: [spec],
254
+ });
255
+ }
256
+ else {
257
+ existing.specs.push(spec);
258
+ }
259
+ }
260
+ }
261
+ /**
262
+ * Builds the synthetic transport-only case for an operational-only route
263
+ * from the endpoint's own method and canonical path.
264
+ *
265
+ * Args:
266
+ * resource (GraphResource): classified health-operations endpoint.
267
+ *
268
+ * Returns:
269
+ * BehaviorCase: request-observed case with empty state.
270
+ */
271
+ function operationalTransportCase(resource) {
272
+ const methodRaw = resource.attributes['method'];
273
+ const method = typeof methodRaw === 'string' && BEHAVIOR_HTTP_METHODS.includes(methodRaw)
274
+ ? methodRaw
275
+ : 'GET';
276
+ const pathRaw = resource.attributes['canonicalPath'];
277
+ const pathTemplate = typeof pathRaw === 'string' && pathRaw.startsWith('/') ? pathRaw : '/';
278
+ return {
279
+ id: 'operational-transport',
280
+ contract: HTTP_REQUEST_OBSERVED,
281
+ channel: 'engine-http',
282
+ fixture: 'operational',
283
+ actor: 'anonymous',
284
+ action: {
285
+ kind: 'request',
286
+ method,
287
+ pathTemplate,
288
+ path: {},
289
+ query: {},
290
+ body: { encoding: 'json', fields: {} },
291
+ credentialVariant: 'valid',
292
+ },
293
+ expect: {
294
+ statuses: [200],
295
+ response: [],
296
+ state: [],
297
+ },
298
+ };
299
+ }
300
+ /**
301
+ * True when detector attributes positively classify health-operations only.
302
+ *
303
+ * Args:
304
+ * resource (GraphResource): discovered endpoint.
305
+ *
306
+ * Returns:
307
+ * boolean: true only for a single health-operations capability and no business link.
308
+ */
309
+ function isHealthOperations(resource) {
310
+ const linked = resource.attributes['linkedResourceName'];
311
+ if (typeof linked === 'string' && linked.length > 0)
312
+ return false;
313
+ const capabilities = resource.attributes['capabilities'];
314
+ return Array.isArray(capabilities) && capabilities.length === 1 && capabilities[0] === 'health-operations';
315
+ }
316
+ /**
317
+ * Detects a conflict between source-derived linkedResourceName and declared effects.
318
+ *
319
+ * Args:
320
+ * resource (GraphResource): discovered endpoint.
321
+ * effects (EffectScope[]): owner-declared effects.
322
+ *
323
+ * Returns:
324
+ * string | null: blocking detail, or null when consistent.
325
+ */
326
+ function linkedResourceConflict(resource, effects) {
327
+ const linked = resource.attributes['linkedResourceName'];
328
+ if (typeof linked !== 'string' || linked.length === 0)
329
+ return null;
330
+ const matches = effects.some((effect) => {
331
+ const name = effect.resourceId.includes('.')
332
+ ? effect.resourceId.slice(effect.resourceId.indexOf('.') + 1)
333
+ : effect.resourceId;
334
+ return name === linked || effect.resourceId === linked;
335
+ });
336
+ if (matches)
337
+ return null;
338
+ return (`endpoint '${resource.id ?? resource.name}' source link '${linked}' conflicts with declared ` +
339
+ 'effect resource ids (source facts cannot be overridden silently)');
340
+ }
341
+ function sortEffects(effects) {
342
+ return [...effects].sort((a, b) => compareStrings(a.id, b.id));
343
+ }
344
+ function sortedUnique(values) {
345
+ return [...new Set(values)].sort(compareStrings);
346
+ }
347
+ function canonicalizeCase(definition) {
348
+ return {
349
+ id: definition.id,
350
+ contract: definition.contract,
351
+ channel: definition.channel,
352
+ fixture: definition.fixture,
353
+ actor: definition.actor,
354
+ action: definition.action,
355
+ expect: definition.expect,
356
+ controlCase: definition.controlCase ?? null,
357
+ };
358
+ }
359
+ function canonicalKey(value) {
360
+ return JSON.stringify(value);
361
+ }
362
+ function block(kind, resourceId, name, detail, location, cause) {
363
+ return BlockingEntrySchema.parse({
364
+ kind,
365
+ resourceId,
366
+ name,
367
+ detail,
368
+ location,
369
+ cause,
370
+ nextAction: CAUSE_NEXT_ACTIONS[cause],
371
+ });
372
+ }
373
+ //# sourceMappingURL=behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior.js","sourceRoot":"","sources":["../../src/policy/behavior.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export interface MappedCoverage {
17
17
  table: string;
18
18
  /** The covered operation. */
19
19
  operation: CoverageOperation;
20
- /** Declared test kind; ONLY `browser-e2e` satisfies closed-world coverage. */
20
+ /** Declared test kind; only real-UI kinds (`browser-e2e`, `observed-e2e`) satisfy closed-world coverage. */
21
21
  testKind: string;
22
22
  }
23
23
  /** Configuration-error finding: the policy names a table the inventory cannot see. */
@@ -63,8 +63,9 @@ export interface CoveragePolicyResult {
63
63
  * silently dropped table is a violation);
64
64
  * - dispositioned table → excused (the disposition is a trusted owner
65
65
  * act recorded in config, never an agent self-approval);
66
- * - otherwise each required operation without a `browser-e2e` mapping →
67
- * blocking `CRUD_COVERAGE_MISSING`.
66
+ * - otherwise each required operation without a real-UI
67
+ * (`browser-e2e`/`observed-e2e`) mapping → blocking
68
+ * `CRUD_COVERAGE_MISSING`.
68
69
  *
69
70
  * Args:
70
71
  * tables: the policy's table entries (validated `CoveragePolicySchema`).
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/policy/coverage.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEtF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC1C;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,sFAAsF;AACtF,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,8DAA8D;IAC9D,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACnD,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAKD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,SAAS,EAAE,SAAS,sBAAsB,EAAE,EAC5C,cAAc,GAAE,SAAS,cAAc,EAAO,GAC7C,oBAAoB,CA4EtB"}
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/policy/coverage.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEtF;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC1C;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,4GAA4G;IAC5G,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,sFAAsF;AACtF,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,8DAA8D;IAC9D,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACnD,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAKD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,SAAS,EAAE,SAAS,sBAAsB,EAAE,EAC5C,cAAc,GAAE,SAAS,cAAc,EAAO,GAC7C,oBAAoB,CAgFtB"}
@@ -13,7 +13,8 @@
13
13
  * silently dropped table is a violation, never coverage.
14
14
  * - Inventory tables the policy does NOT enumerate are violations too
15
15
  * (the policy is closed-world over the inventory).
16
- * - Only `browser-e2e` mappings satisfy (plan §3.2: api-e2e cannot
16
+ * - Only real-UI mappings satisfy (`browser-e2e` engine-driven and
17
+ * `observed-e2e` suite-driven-over-proxy; plan §3.2: api-e2e cannot
17
18
  * substitute for browser behavior); the mapping subsystem may pass an
18
19
  * empty list for now — the honest result is that enabled, undispositioned
19
20
  * tables block until mappings or dispositions exist.
@@ -34,8 +35,9 @@ const CRUD_COVERAGE_MISSING_CAUSE = CAUSE_NEXT_ACTIONS['CRUD_COVERAGE_MISSING'];
34
35
  * silently dropped table is a violation);
35
36
  * - dispositioned table → excused (the disposition is a trusted owner
36
37
  * act recorded in config, never an agent self-approval);
37
- * - otherwise each required operation without a `browser-e2e` mapping →
38
- * blocking `CRUD_COVERAGE_MISSING`.
38
+ * - otherwise each required operation without a real-UI
39
+ * (`browser-e2e`/`observed-e2e`) mapping → blocking
40
+ * `CRUD_COVERAGE_MISSING`.
39
41
  *
40
42
  * Args:
41
43
  * tables: the policy's table entries (validated `CoveragePolicySchema`).
@@ -76,9 +78,13 @@ export function evaluateCoveragePolicy(tables, inventory, mappedCoverage = []) {
76
78
  if (table.disposition !== undefined)
77
79
  continue;
78
80
  for (const operation of table.requiredOperations) {
81
+ // Real-UI coverage (plan §3.2 + Observe channel): `browser-e2e`
82
+ // (engine-driven) and `observed-e2e` (suite-driven over the session
83
+ // proxy with independent adapter reads) are both genuine browser
84
+ // journeys — either covers. Every other kind contributes nothing.
79
85
  const covered = mappedCoverage.some((mapping) => mapping.table === table.name &&
80
86
  mapping.operation === operation &&
81
- mapping.testKind === 'browser-e2e');
87
+ (mapping.testKind === 'browser-e2e' || mapping.testKind === 'observed-e2e'));
82
88
  if (covered)
83
89
  continue;
84
90
  blocking.push({
@@ -86,8 +92,8 @@ export function evaluateCoveragePolicy(tables, inventory, mappedCoverage = []) {
86
92
  cause: 'CRUD_COVERAGE_MISSING',
87
93
  table: table.name,
88
94
  operation,
89
- detail: `coverage policy: table '${table.name}' has no mapped browser-e2e '${operation}' ` +
90
- 'coverage and no owner disposition',
95
+ detail: `coverage policy: table '${table.name}' has no mapped real-UI ` +
96
+ `'${operation}' coverage (browser-e2e or observed-e2e) and no owner disposition`,
91
97
  nextAction: CRUD_COVERAGE_MISSING_CAUSE,
92
98
  });
93
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/policy/coverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/policy/coverage.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,17 @@ export declare const BlockingEntrySchema: z.ZodObject<{
86
86
  DIAGNOSTIC_TEST_FAILURE: "DIAGNOSTIC_TEST_FAILURE";
87
87
  DIAGNOSTIC_RUN_INCOMPLETE: "DIAGNOSTIC_RUN_INCOMPLETE";
88
88
  DIAGNOSTIC_RESULT_STALE: "DIAGNOSTIC_RESULT_STALE";
89
+ ENDPOINT_BEHAVIOR_MISSING: "ENDPOINT_BEHAVIOR_MISSING";
90
+ BEHAVIOR_REFERENCE_STALE: "BEHAVIOR_REFERENCE_STALE";
91
+ BEHAVIOR_CASE_UNMAPPED: "BEHAVIOR_CASE_UNMAPPED";
92
+ BEHAVIOR_CASE_MISSING: "BEHAVIOR_CASE_MISSING";
93
+ BEHAVIOR_BINDING_MISMATCH: "BEHAVIOR_BINDING_MISMATCH";
94
+ BEHAVIOR_EFFECT_MISMATCH: "BEHAVIOR_EFFECT_MISMATCH";
95
+ OBSERVATION_SCOPE_INCOMPLETE: "OBSERVATION_SCOPE_INCOMPLETE";
96
+ BEHAVIOR_UNEXPECTED_EFFECT: "BEHAVIOR_UNEXPECTED_EFFECT";
97
+ ENFORCEMENT_BOUNDARY_UNVERIFIED: "ENFORCEMENT_BOUNDARY_UNVERIFIED";
98
+ RUNTIME_PREPARATION_FAILED: "RUNTIME_PREPARATION_FAILED";
99
+ RUNTIME_READINESS_FAILED: "RUNTIME_READINESS_FAILED";
89
100
  }>>>;
90
101
  nextAction: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
102
  }, z.core.$strict>;
@@ -158,6 +169,7 @@ export declare const PolicyEvaluationResultSchema: z.ZodObject<{
158
169
  archiveFields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
159
170
  updateableFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
160
171
  }, z.core.$strict>;
172
+ requirementsDigest: z.ZodOptional<z.ZodString>;
161
173
  }, z.core.$strict>>;
162
174
  blocking: z.ZodArray<z.ZodObject<{
163
175
  kind: z.ZodEnum<{
@@ -196,6 +208,17 @@ export declare const PolicyEvaluationResultSchema: z.ZodObject<{
196
208
  DIAGNOSTIC_TEST_FAILURE: "DIAGNOSTIC_TEST_FAILURE";
197
209
  DIAGNOSTIC_RUN_INCOMPLETE: "DIAGNOSTIC_RUN_INCOMPLETE";
198
210
  DIAGNOSTIC_RESULT_STALE: "DIAGNOSTIC_RESULT_STALE";
211
+ ENDPOINT_BEHAVIOR_MISSING: "ENDPOINT_BEHAVIOR_MISSING";
212
+ BEHAVIOR_REFERENCE_STALE: "BEHAVIOR_REFERENCE_STALE";
213
+ BEHAVIOR_CASE_UNMAPPED: "BEHAVIOR_CASE_UNMAPPED";
214
+ BEHAVIOR_CASE_MISSING: "BEHAVIOR_CASE_MISSING";
215
+ BEHAVIOR_BINDING_MISMATCH: "BEHAVIOR_BINDING_MISMATCH";
216
+ BEHAVIOR_EFFECT_MISMATCH: "BEHAVIOR_EFFECT_MISMATCH";
217
+ OBSERVATION_SCOPE_INCOMPLETE: "OBSERVATION_SCOPE_INCOMPLETE";
218
+ BEHAVIOR_UNEXPECTED_EFFECT: "BEHAVIOR_UNEXPECTED_EFFECT";
219
+ ENFORCEMENT_BOUNDARY_UNVERIFIED: "ENFORCEMENT_BOUNDARY_UNVERIFIED";
220
+ RUNTIME_PREPARATION_FAILED: "RUNTIME_PREPARATION_FAILED";
221
+ RUNTIME_READINESS_FAILED: "RUNTIME_READINESS_FAILED";
199
222
  }>>>;
200
223
  nextAction: z.ZodOptional<z.ZodNullable<z.ZodString>>;
201
224
  }, z.core.$strict>>;
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/policy/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsC,KAAK,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAG5G,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGzG,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAK1D;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,yDAAyD;AACzD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsC5B,CAAC;AAEL,qCAAqC;AACrC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAKjF;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;kBAM9B,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,sEAAsE;AACtE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAcrC,CAAC;AAEL,+CAA+C;AAC/C,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE;IACT,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3D,GACA,OAAO,CAaT;AAED,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,iEAAiE;IACjE,QAAQ,EAAE,UAAU,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAmErF"}
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/policy/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsC,KAAK,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAG5G,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGzG,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAK1D;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,yDAAyD;AACzD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsC5B,CAAC;AAEL,qCAAqC;AACrC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAKjF;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;kBAM9B,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,sEAAsE;AACtE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAcrC,CAAC;AAEL,+CAA+C;AAC/C,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE;IACT,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3D,GACA,OAAO,CAaT;AAED,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,iEAAiE;IACjE,QAAQ,EAAE,UAAU,CAAC;IACrB,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAmErF"}
@@ -12,4 +12,5 @@ export { CRUD_CONTRACT_PREFIX, PERSISTENCE_CONTRACT_PREFIX, BlockingEntrySchema,
12
12
  export type { BlockingEntry, ClaimAssessment, PolicyEvaluationInput, PolicyEvaluationResult, } from './evaluate.js';
13
13
  export { evaluateCoveragePolicy, type CoverageInventoryTable, type MappedCoverage, type CoverageConfigError, type CoverageBlockingFinding, type CoveragePolicyResult, } from './coverage.js';
14
14
  export { TRUSTED_POLICY_DOMAIN, trustedPolicyDigest, policyWeakenedCandidate, type TrustedPolicyInput, type PolicyWeakeningCheck, } from './trusted.js';
15
+ export { BEHAVIOR_POLICY_ID, EMPTY_BEHAVIOR_CATALOG_DIGEST, compileBehaviorPolicy, parseBehaviorPolicy, type CompileBehaviorPolicyInput, type CompileBehaviorPolicyResult, } from './behavior.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,eAAe,CAAC"}
@@ -11,4 +11,5 @@
11
11
  export { CRUD_CONTRACT_PREFIX, PERSISTENCE_CONTRACT_PREFIX, BlockingEntrySchema, ClaimAssessmentSchema, PolicyEvaluationError, PolicyEvaluationResultSchema, classificationBlockedIdentity, evaluatePolicies, lifecycleAllowsContract, } from './evaluate.js';
12
12
  export { evaluateCoveragePolicy, } from './coverage.js';
13
13
  export { TRUSTED_POLICY_DOMAIN, trustedPolicyDigest, policyWeakenedCandidate, } from './trusted.js';
14
+ export { BEHAVIOR_POLICY_ID, EMPTY_BEHAVIOR_CATALOG_DIGEST, compileBehaviorPolicy, parseBehaviorPolicy, } from './behavior.js';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,sBAAsB,GAMvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,sBAAsB,GAMvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,eAAe,CAAC"}