@gate-forge/core 0.7.1 → 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.
- package/dist/classifier/bind.d.ts +2 -0
- package/dist/classifier/bind.d.ts.map +1 -1
- package/dist/classifier/bind.js +8 -0
- package/dist/classifier/bind.js.map +1 -1
- package/dist/classifier/classify.d.ts +2 -0
- package/dist/classifier/classify.d.ts.map +1 -1
- package/dist/classifier/classify.js +127 -2
- package/dist/classifier/classify.js.map +1 -1
- package/dist/classifier/index.d.ts +2 -2
- package/dist/classifier/index.d.ts.map +1 -1
- package/dist/classifier/index.js +1 -1
- package/dist/classifier/index.js.map +1 -1
- package/dist/classifier/schema.d.ts +54 -0
- package/dist/classifier/schema.d.ts.map +1 -1
- package/dist/classifier/schema.js +17 -0
- package/dist/classifier/schema.js.map +1 -1
- package/dist/config/index.d.ts +173 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +296 -1
- package/dist/config/index.js.map +1 -1
- package/dist/graph/schema.d.ts +34 -0
- package/dist/graph/schema.d.ts.map +1 -1
- package/dist/index.d.ts +80 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -6
- package/dist/index.js.map +1 -1
- package/dist/mapping/resolve.d.ts +22 -1
- package/dist/mapping/resolve.d.ts.map +1 -1
- package/dist/mapping/resolve.js +71 -25
- package/dist/mapping/resolve.js.map +1 -1
- package/dist/policy/evaluate.d.ts +30 -0
- package/dist/policy/evaluate.d.ts.map +1 -1
- package/dist/policy/evaluate.js +22 -12
- package/dist/policy/evaluate.js.map +1 -1
- package/dist/quarantine/index.d.ts +82 -0
- package/dist/quarantine/index.d.ts.map +1 -0
- package/dist/quarantine/index.js +194 -0
- package/dist/quarantine/index.js.map +1 -0
- package/dist/receipt/index.d.ts +65 -1
- package/dist/receipt/index.d.ts.map +1 -1
- package/dist/receipt/index.js +115 -1
- package/dist/receipt/index.js.map +1 -1
- package/dist/report/human-message.d.ts +33 -0
- package/dist/report/human-message.d.ts.map +1 -0
- package/dist/report/human-message.js +33 -0
- package/dist/report/human-message.js.map +1 -0
- package/dist/report/index.d.ts +183 -9
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +296 -22
- package/dist/report/index.js.map +1 -1
- package/dist/schemas/adoption.d.ts +2 -0
- package/dist/schemas/adoption.d.ts.map +1 -1
- package/dist/schemas/adoption.js +6 -0
- package/dist/schemas/adoption.js.map +1 -1
- package/dist/schemas/behavior-catalog.d.ts +12 -0
- package/dist/schemas/behavior-catalog.d.ts.map +1 -1
- package/dist/schemas/behavior-evidence.d.ts +40 -0
- package/dist/schemas/behavior-evidence.d.ts.map +1 -1
- package/dist/schemas/behavior-evidence.js +9 -0
- package/dist/schemas/behavior-evidence.js.map +1 -1
- package/dist/schemas/behavior-policy.d.ts +26 -0
- package/dist/schemas/behavior-policy.d.ts.map +1 -1
- package/dist/schemas/behavior-policy.js +37 -1
- package/dist/schemas/behavior-policy.js.map +1 -1
- package/dist/schemas/execution-result.d.ts +17 -5
- package/dist/schemas/execution-result.d.ts.map +1 -1
- package/dist/schemas/execution-result.js +57 -2
- package/dist/schemas/execution-result.js.map +1 -1
- package/dist/schemas/gate-receipt.d.ts +25 -2
- package/dist/schemas/gate-receipt.d.ts.map +1 -1
- package/dist/schemas/gate-receipt.js +181 -2
- package/dist/schemas/gate-receipt.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/policy.d.ts +19 -0
- package/dist/schemas/policy.d.ts.map +1 -1
- package/dist/schemas/policy.js +36 -0
- package/dist/schemas/policy.js.map +1 -1
- package/dist/schemas/quarantine.d.ts +25 -0
- package/dist/schemas/quarantine.d.ts.map +1 -0
- package/dist/schemas/quarantine.js +34 -0
- package/dist/schemas/quarantine.js.map +1 -0
- package/dist/schemas/queue-observer.d.ts +195 -0
- package/dist/schemas/queue-observer.d.ts.map +1 -0
- package/dist/schemas/queue-observer.js +190 -0
- package/dist/schemas/queue-observer.js.map +1 -0
- package/dist/schemas/run-record.d.ts +57 -0
- package/dist/schemas/run-record.d.ts.map +1 -0
- package/dist/schemas/run-record.js +108 -0
- package/dist/schemas/run-record.js.map +1 -0
- package/dist/schemas/runtime-config.d.ts +67 -0
- package/dist/schemas/runtime-config.d.ts.map +1 -1
- package/dist/schemas/runtime-config.js +75 -1
- package/dist/schemas/runtime-config.js.map +1 -1
- package/dist/schemas/signature-profile.d.ts +99 -0
- package/dist/schemas/signature-profile.d.ts.map +1 -0
- package/dist/schemas/signature-profile.js +197 -0
- package/dist/schemas/signature-profile.js.map +1 -0
- package/dist/schemas/test-map.d.ts +4 -0
- package/dist/schemas/test-map.d.ts.map +1 -1
- package/dist/schemas/test-map.js +12 -0
- package/dist/schemas/test-map.js.map +1 -1
- package/dist/schemas/verdict.d.ts +19 -4
- package/dist/schemas/verdict.d.ts.map +1 -1
- package/dist/schemas/verdict.js +38 -4
- package/dist/schemas/verdict.js.map +1 -1
- package/dist/strictness.d.ts +102 -0
- package/dist/strictness.d.ts.map +1 -0
- package/dist/strictness.js +92 -0
- package/dist/strictness.js.map +1 -0
- package/dist/supervision/index.js +6 -6
- package/dist/supervision/index.js.map +1 -1
- package/dist/twin-paths.d.ts +125 -0
- package/dist/twin-paths.d.ts.map +1 -0
- package/dist/twin-paths.js +233 -0
- package/dist/twin-paths.js.map +1 -0
- package/dist/verdict/behavior.d.ts.map +1 -1
- package/dist/verdict/behavior.js +284 -10
- package/dist/verdict/behavior.js.map +1 -1
- package/dist/verdict/cause.d.ts.map +1 -1
- package/dist/verdict/cause.js +18 -0
- package/dist/verdict/cause.js.map +1 -1
- package/dist/verdict/evaluate.d.ts +54 -0
- package/dist/verdict/evaluate.d.ts.map +1 -1
- package/dist/verdict/evaluate.js +278 -12
- package/dist/verdict/evaluate.js.map +1 -1
- package/dist/verdict/index.d.ts +3 -3
- package/dist/verdict/index.d.ts.map +1 -1
- package/dist/verdict/index.js +3 -3
- package/dist/verdict/index.js.map +1 -1
- package/dist/verdict/pack-verifiers.d.ts +17 -3
- package/dist/verdict/pack-verifiers.d.ts.map +1 -1
- package/dist/verdict/pack-verifiers.js +47 -8
- package/dist/verdict/pack-verifiers.js.map +1 -1
- package/dist/verdict/registry.d.ts +19 -0
- package/dist/verdict/registry.d.ts.map +1 -1
- package/dist/verdict/registry.js +21 -0
- package/dist/verdict/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnE;AAUD,kEAAkE;AAClE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,8DAA8D;AAC9D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;kBAgB/B,CAAC;AAEL,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kBA0B7B,CAAC;AAEL,8BAA8B;AAC9B,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnE;AAUD,kEAAkE;AAClE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,8DAA8D;AAC9D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;kBASlB,CAAC;AAEZ,kCAAkC;AAClC,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,6EAA6E;AAC7E,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aAK5B,CAAC;AAGL;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;kBAgB/B,CAAC;AAEL,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kBA0B7B,CAAC;AAEL,8BAA8B;AAC9B,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4F5B,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -47,6 +47,35 @@ export const SERVICE_URL_PLACEHOLDER = '${service:<id>:url}';
|
|
|
47
47
|
export const DEFAULT_PREPARE_TIMEOUT_SECONDS = 600;
|
|
48
48
|
/** Default budget for one service readiness probe, in seconds. */
|
|
49
49
|
export const DEFAULT_READY_TIMEOUT_SECONDS = 60;
|
|
50
|
+
/**
|
|
51
|
+
* One managed-run recipe step (managed-run plan (2026-09-29), Part B): the app-owned
|
|
52
|
+
* lifecycle command Gateforge sequences for `gateforge run`. Commands
|
|
53
|
+
* are argv lists (never a shell string), each step carries its own
|
|
54
|
+
* timeout, and a step may be retried a bounded number of times.
|
|
55
|
+
*/
|
|
56
|
+
export const RecipeStepSchema = z
|
|
57
|
+
.object({
|
|
58
|
+
/** Commands to run in order; the first non-zero exit fails the step. */
|
|
59
|
+
commands: z.array(z.array(z.string().min(1)).min(1)).min(1),
|
|
60
|
+
/** Wall-clock budget for the whole step (default 600s). */
|
|
61
|
+
timeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
62
|
+
/** Extra attempts after the first failure (0 = run once, the default). */
|
|
63
|
+
retries: z.number().int().min(0).max(10).optional(),
|
|
64
|
+
})
|
|
65
|
+
.strict();
|
|
66
|
+
/** Default wall-clock budget for one managed-run recipe step, in seconds. */
|
|
67
|
+
export const DEFAULT_RECIPE_STEP_TIMEOUT_SECONDS = 600;
|
|
68
|
+
/**
|
|
69
|
+
* Environment file a recipe may load, as a PATH only. An entry carrying
|
|
70
|
+
* a value (`NAME=value`) is rejected: the recipe never holds secret
|
|
71
|
+
* material, and `gateforge run` never prints the values it loads.
|
|
72
|
+
*/
|
|
73
|
+
export const RecipeEnvFileSchema = z
|
|
74
|
+
.string()
|
|
75
|
+
.min(1)
|
|
76
|
+
.refine((value) => !value.includes('='), {
|
|
77
|
+
message: 'env_files entries are paths only — put the secret in the file, never inline',
|
|
78
|
+
});
|
|
50
79
|
/**
|
|
51
80
|
* One service readiness probe: a log line matching `log` (regex source
|
|
52
81
|
* over the captured stdout+stderr) OR an `http` GET returning 2xx.
|
|
@@ -122,6 +151,16 @@ export const RuntimeConfigSchema = z
|
|
|
122
151
|
.object({
|
|
123
152
|
/** Command to run in the checkout (package-manager install, build). */
|
|
124
153
|
command: z.string().min(1).optional(),
|
|
154
|
+
/**
|
|
155
|
+
* Managed-run preparation commands (managed-run plan (2026-09-29), Part B):
|
|
156
|
+
* argv lists `gateforge run` executes before the recipe
|
|
157
|
+
* lifecycle. Absent = no preparation step.
|
|
158
|
+
*/
|
|
159
|
+
commands: z.array(z.array(z.string().min(1)).min(1)).min(1).optional(),
|
|
160
|
+
/** Wall-clock budget for `gateforge run`'s preparation step. */
|
|
161
|
+
runTimeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
162
|
+
/** Extra attempts of the preparation step after a failure. */
|
|
163
|
+
runRetries: z.number().int().min(0).max(10).optional(),
|
|
125
164
|
/**
|
|
126
165
|
* Repo-relative dependency directories explicitly allowed to be
|
|
127
166
|
* reused from the user repository (linked, never copied as
|
|
@@ -129,12 +168,47 @@ export const RuntimeConfigSchema = z
|
|
|
129
168
|
*/
|
|
130
169
|
reuse: z.array(RuntimeReusePathSchema).optional(),
|
|
131
170
|
timeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
171
|
+
preflight: z.array(z.object({
|
|
172
|
+
name: z.string().min(1),
|
|
173
|
+
command: z.string().min(1),
|
|
174
|
+
timeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
175
|
+
}).strict()).optional(),
|
|
132
176
|
})
|
|
133
177
|
.strict()
|
|
134
178
|
.optional(),
|
|
179
|
+
health: z.array(z.object({
|
|
180
|
+
name: z.string().min(1),
|
|
181
|
+
tcp: z.string().min(1).optional(),
|
|
182
|
+
http: z.string().url().optional(),
|
|
183
|
+
command: z.string().min(1).optional(),
|
|
184
|
+
logAbsent: z.object({
|
|
185
|
+
command: z.string().min(1),
|
|
186
|
+
pattern: z.string().min(1),
|
|
187
|
+
}).strict().optional(),
|
|
188
|
+
tls: z.boolean().optional(),
|
|
189
|
+
timeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
190
|
+
}).strict().superRefine((probe, ctx) => {
|
|
191
|
+
const kinds = [probe.tcp !== undefined, probe.http !== undefined, probe.command !== undefined, probe.logAbsent !== undefined].filter(Boolean).length;
|
|
192
|
+
if (kinds !== 1)
|
|
193
|
+
ctx.addIssue({ code: 'custom', path: ['tcp'], message: "health requires exactly one of 'tcp', 'http', 'command', or 'logAbsent'" });
|
|
194
|
+
if (probe.tls === true && probe.http === undefined)
|
|
195
|
+
ctx.addIssue({ code: 'custom', path: ['tls'], message: "'tls' requires an 'http' health probe" });
|
|
196
|
+
})).optional(),
|
|
197
|
+
/** Managed-run lifecycle: start the candidate's own services. */
|
|
198
|
+
services_up: RecipeStepSchema.optional(),
|
|
199
|
+
/** Managed-run lifecycle: stop those services (always the last step). */
|
|
200
|
+
services_down: RecipeStepSchema.optional(),
|
|
201
|
+
/** Managed-run lifecycle: reset the database/state under test. */
|
|
202
|
+
reset: RecipeStepSchema.optional(),
|
|
203
|
+
/** Managed-run lifecycle: seed the fixture the suite expects. */
|
|
204
|
+
seed: RecipeStepSchema.optional(),
|
|
205
|
+
/** Managed-run lifecycle: readiness probe for the started services. */
|
|
206
|
+
healthcheck: RecipeStepSchema.optional(),
|
|
207
|
+
/** Environment files the recipe loads, as paths only (no values). */
|
|
208
|
+
env_files: z.array(RecipeEnvFileSchema).optional(),
|
|
135
209
|
/** Candidate-owned services to start, probe, and clean up. */
|
|
136
210
|
services: z.array(RuntimeServiceSchema).optional(),
|
|
137
|
-
/** Operator environment
|
|
211
|
+
/** Operator environment names allowed through to commands, services and supervised tests. */
|
|
138
212
|
envAllowlist: z.array(z.string().min(1)).optional(),
|
|
139
213
|
/** Whole-run execution budget handed to the supervised gate. */
|
|
140
214
|
executionTimeoutSeconds: z.number().int().min(1).max(3600).optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1G,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACtC,CAAC;AAED,6EAA6E;AAC7E,MAAM,sBAAsB,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CAAC,4BAA4B,EAAE;IACpC,OAAO,EAAE,4EAA4E;CACtF,CAAC,CAAC;AAEL,kEAAkE;AAClE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D,sEAAsE;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,kEAAkE;AAClE,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACzF,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,OAAO,EAAE,gFAAgF;SAC1F,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAKL;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,yCAAyC,CAAC;IACpF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,sBAAsB;CAC9B,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnE,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,aAAa,CAAC;YACrB,OAAO,EAAE,qBAAqB,OAAO,CAAC,EAAE,0EAA0E;SACnH,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACzD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,4EAA4E;SAC5G,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAKL;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,aAAa,EAAE,kBAAkB;IACjC,uEAAuE;IACvE,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,uEAAuE;QACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrC;;;;WAIG;QACH,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;QACjD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine-side signature profiles for behavior cases (plan 2026-09-25
|
|
3
|
+
* Phase 1): the ONE grammar a `signatureProfile` string may use, parsed
|
|
4
|
+
* and validated identically by the config schema (fail fast, at config
|
|
5
|
+
* time) and by the witness-owned request driver (fail closed, at run
|
|
6
|
+
* time).
|
|
7
|
+
*
|
|
8
|
+
* Grammar (a media-type style name plus bounded parameters):
|
|
9
|
+
*
|
|
10
|
+
* hmac-sha256
|
|
11
|
+
* hmac-sha256;header=x-hub-signature-256
|
|
12
|
+
* hmac-sha256;timestampHeader=x-webhook-timestamp;toleranceMs=300000
|
|
13
|
+
* hmac-sha256;attemptHeader=x-webhook-attempt;attempt=2
|
|
14
|
+
* hmac-sha256;forgery=signature
|
|
15
|
+
*
|
|
16
|
+
* Why a string and not a nested object: the case action travels from
|
|
17
|
+
* the compiled catalog into the witness, and `signatureProfile` is the
|
|
18
|
+
* single declared key that channel already carries. The profile names
|
|
19
|
+
* what the ENGINE does with a secret it holds — never what a suite
|
|
20
|
+
* claims. A suite cannot ask for a signature it made up: the profile
|
|
21
|
+
* can only select a header name, a timestamp window, an attempt
|
|
22
|
+
* counter, or ask the engine to perform a signature forgery itself.
|
|
23
|
+
*
|
|
24
|
+
* Trust invariants (unchanged by this grammar):
|
|
25
|
+
* - the secret is read from the trusted lease's actor material and
|
|
26
|
+
* never leaves the witness process;
|
|
27
|
+
* - the signature is computed over the EXACT bytes the driver sends,
|
|
28
|
+
* never over a re-serialization;
|
|
29
|
+
* - a `forgery` is performed by the engine, deterministically, and
|
|
30
|
+
* never reveals the secret.
|
|
31
|
+
*/
|
|
32
|
+
/** Signature algorithms a profile may name. */
|
|
33
|
+
export declare const BEHAVIOR_SIGNATURE_ALGORITHMS: readonly ["hmac-sha256"];
|
|
34
|
+
/** Inferred signature algorithm name. */
|
|
35
|
+
export type BehaviorSignatureAlgorithm = (typeof BEHAVIOR_SIGNATURE_ALGORITHMS)[number];
|
|
36
|
+
/**
|
|
37
|
+
* The deterministic forgeries the engine may perform itself.
|
|
38
|
+
*
|
|
39
|
+
* Only the SIGNATURE side: the engine binds the submitted bytes to the
|
|
40
|
+
* declared fixture, so a body the engine altered after signing is not
|
|
41
|
+
* evidence of anything (the grader refuses it outright). A forged
|
|
42
|
+
* signature is the honest negative case — the body the receiver verifies
|
|
43
|
+
* is exactly the body the owner declared.
|
|
44
|
+
*/
|
|
45
|
+
export declare const BEHAVIOR_SIGNATURE_FORGERIES: readonly ["none", "signature"];
|
|
46
|
+
/** Inferred forgery name. */
|
|
47
|
+
export type BehaviorSignatureForgery = (typeof BEHAVIOR_SIGNATURE_FORGERIES)[number];
|
|
48
|
+
/**
|
|
49
|
+
* The engine-only carrier of a webhook signing secret inside a trusted
|
|
50
|
+
* lease's actor material. It is consumed here, never forwarded as a
|
|
51
|
+
* request header.
|
|
52
|
+
*/
|
|
53
|
+
export declare const BEHAVIOR_SIGNING_SECRET_HEADER = "x-gateforge-signing-secret";
|
|
54
|
+
/** Default signature header the profiles stamp. */
|
|
55
|
+
export declare const DEFAULT_SIGNATURE_HEADER = "x-signature";
|
|
56
|
+
/** Default timestamp header the `hmac-sha256` profile stamps. */
|
|
57
|
+
export declare const DEFAULT_SIGNATURE_TIMESTAMP_HEADER = "x-webhook-timestamp";
|
|
58
|
+
/** Default attempt header the `hmac-sha256` profile stamps. */
|
|
59
|
+
export declare const DEFAULT_SIGNATURE_ATTEMPT_HEADER = "x-webhook-attempt";
|
|
60
|
+
/** A parsed, validated signature profile. */
|
|
61
|
+
export interface BehaviorSignatureProfile {
|
|
62
|
+
/** The signing algorithm over the exact request bytes. */
|
|
63
|
+
algorithm: BehaviorSignatureAlgorithm;
|
|
64
|
+
/** Header carrying the hex digest. */
|
|
65
|
+
header: string;
|
|
66
|
+
/** Header carrying the engine's timestamp, or null when unstamped. */
|
|
67
|
+
timestampHeader: string | null;
|
|
68
|
+
/** Tolerance the engine requires of its own stamp, in ms. */
|
|
69
|
+
toleranceMs: number | null;
|
|
70
|
+
/** Header carrying the delivery attempt number, or null when absent. */
|
|
71
|
+
attemptHeader: string | null;
|
|
72
|
+
/** The attempt number the engine stamps (1 when no header). */
|
|
73
|
+
attempt: number;
|
|
74
|
+
/** The forgery the engine performs, or `none`. */
|
|
75
|
+
forgery: BehaviorSignatureForgery;
|
|
76
|
+
}
|
|
77
|
+
/** A parsed profile or the exact reason it was refused. */
|
|
78
|
+
export type SignatureProfileResult = {
|
|
79
|
+
ok: true;
|
|
80
|
+
profile: BehaviorSignatureProfile;
|
|
81
|
+
} | {
|
|
82
|
+
ok: false;
|
|
83
|
+
error: string;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Parses one `signatureProfile` string into a validated profile.
|
|
87
|
+
*
|
|
88
|
+
* Args:
|
|
89
|
+
* text (string): the declared profile, name plus optional
|
|
90
|
+
* `;key=value` parameters.
|
|
91
|
+
*
|
|
92
|
+
* Returns:
|
|
93
|
+
* SignatureProfileResult: the profile, or the reason it was refused.
|
|
94
|
+
* An unknown algorithm, an unknown parameter, a malformed value, or a
|
|
95
|
+
* reserved header name never yields a default — the caller fails
|
|
96
|
+
* closed.
|
|
97
|
+
*/
|
|
98
|
+
export declare function parseBehaviorSignatureProfile(text: string): SignatureProfileResult;
|
|
99
|
+
//# sourceMappingURL=signature-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-profile.d.ts","sourceRoot":"","sources":["../../src/schemas/signature-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,6BAA6B,0BAA2B,CAAC;AAEtE,yCAAyC;AACzC,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAExF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,gCAAiC,CAAC;AAE3E,6BAA6B;AAC7B,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E,mDAAmD;AACnD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,iEAAiE;AACjE,eAAO,MAAM,kCAAkC,wBAAwB,CAAC;AAExE,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,sBAAsB,CAAC;AAKpE,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,SAAS,EAAE,0BAA0B,CAAC;IACtC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,EAAE,wBAAwB,CAAC;CACnC;AAqBD,2DAA2D;AAC3D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAkFlF"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine-side signature profiles for behavior cases (plan 2026-09-25
|
|
3
|
+
* Phase 1): the ONE grammar a `signatureProfile` string may use, parsed
|
|
4
|
+
* and validated identically by the config schema (fail fast, at config
|
|
5
|
+
* time) and by the witness-owned request driver (fail closed, at run
|
|
6
|
+
* time).
|
|
7
|
+
*
|
|
8
|
+
* Grammar (a media-type style name plus bounded parameters):
|
|
9
|
+
*
|
|
10
|
+
* hmac-sha256
|
|
11
|
+
* hmac-sha256;header=x-hub-signature-256
|
|
12
|
+
* hmac-sha256;timestampHeader=x-webhook-timestamp;toleranceMs=300000
|
|
13
|
+
* hmac-sha256;attemptHeader=x-webhook-attempt;attempt=2
|
|
14
|
+
* hmac-sha256;forgery=signature
|
|
15
|
+
*
|
|
16
|
+
* Why a string and not a nested object: the case action travels from
|
|
17
|
+
* the compiled catalog into the witness, and `signatureProfile` is the
|
|
18
|
+
* single declared key that channel already carries. The profile names
|
|
19
|
+
* what the ENGINE does with a secret it holds — never what a suite
|
|
20
|
+
* claims. A suite cannot ask for a signature it made up: the profile
|
|
21
|
+
* can only select a header name, a timestamp window, an attempt
|
|
22
|
+
* counter, or ask the engine to perform a signature forgery itself.
|
|
23
|
+
*
|
|
24
|
+
* Trust invariants (unchanged by this grammar):
|
|
25
|
+
* - the secret is read from the trusted lease's actor material and
|
|
26
|
+
* never leaves the witness process;
|
|
27
|
+
* - the signature is computed over the EXACT bytes the driver sends,
|
|
28
|
+
* never over a re-serialization;
|
|
29
|
+
* - a `forgery` is performed by the engine, deterministically, and
|
|
30
|
+
* never reveals the secret.
|
|
31
|
+
*/
|
|
32
|
+
/** Signature algorithms a profile may name. */
|
|
33
|
+
export const BEHAVIOR_SIGNATURE_ALGORITHMS = ['hmac-sha256'];
|
|
34
|
+
/**
|
|
35
|
+
* The deterministic forgeries the engine may perform itself.
|
|
36
|
+
*
|
|
37
|
+
* Only the SIGNATURE side: the engine binds the submitted bytes to the
|
|
38
|
+
* declared fixture, so a body the engine altered after signing is not
|
|
39
|
+
* evidence of anything (the grader refuses it outright). A forged
|
|
40
|
+
* signature is the honest negative case — the body the receiver verifies
|
|
41
|
+
* is exactly the body the owner declared.
|
|
42
|
+
*/
|
|
43
|
+
export const BEHAVIOR_SIGNATURE_FORGERIES = ['none', 'signature'];
|
|
44
|
+
/**
|
|
45
|
+
* The engine-only carrier of a webhook signing secret inside a trusted
|
|
46
|
+
* lease's actor material. It is consumed here, never forwarded as a
|
|
47
|
+
* request header.
|
|
48
|
+
*/
|
|
49
|
+
export const BEHAVIOR_SIGNING_SECRET_HEADER = 'x-gateforge-signing-secret';
|
|
50
|
+
/** Default signature header the profiles stamp. */
|
|
51
|
+
export const DEFAULT_SIGNATURE_HEADER = 'x-signature';
|
|
52
|
+
/** Default timestamp header the `hmac-sha256` profile stamps. */
|
|
53
|
+
export const DEFAULT_SIGNATURE_TIMESTAMP_HEADER = 'x-webhook-timestamp';
|
|
54
|
+
/** Default attempt header the `hmac-sha256` profile stamps. */
|
|
55
|
+
export const DEFAULT_SIGNATURE_ATTEMPT_HEADER = 'x-webhook-attempt';
|
|
56
|
+
/** Header names the engine refuses to sign with or send. */
|
|
57
|
+
const FORBIDDEN_HEADERS = new Set([BEHAVIOR_SIGNING_SECRET_HEADER]);
|
|
58
|
+
/** One profile parameter the grammar accepts. */
|
|
59
|
+
const PARAMETER_NAMES = new Set([
|
|
60
|
+
'header',
|
|
61
|
+
'timestampHeader',
|
|
62
|
+
'toleranceMs',
|
|
63
|
+
'attemptHeader',
|
|
64
|
+
'attempt',
|
|
65
|
+
'forgery',
|
|
66
|
+
]);
|
|
67
|
+
/** Upper bound on a declared clock tolerance (24 h). */
|
|
68
|
+
const MAX_TOLERANCE_MS = 86_400_000;
|
|
69
|
+
/** Upper bound on a declared attempt number. */
|
|
70
|
+
const MAX_ATTEMPT = 1000;
|
|
71
|
+
/** Header-name grammar (RFC 7230 token, deliberately narrow). */
|
|
72
|
+
const HEADER_NAME = /^[A-Za-z0-9][A-Za-z0-9-]{0,63}$/;
|
|
73
|
+
/**
|
|
74
|
+
* Parses one `signatureProfile` string into a validated profile.
|
|
75
|
+
*
|
|
76
|
+
* Args:
|
|
77
|
+
* text (string): the declared profile, name plus optional
|
|
78
|
+
* `;key=value` parameters.
|
|
79
|
+
*
|
|
80
|
+
* Returns:
|
|
81
|
+
* SignatureProfileResult: the profile, or the reason it was refused.
|
|
82
|
+
* An unknown algorithm, an unknown parameter, a malformed value, or a
|
|
83
|
+
* reserved header name never yields a default — the caller fails
|
|
84
|
+
* closed.
|
|
85
|
+
*/
|
|
86
|
+
export function parseBehaviorSignatureProfile(text) {
|
|
87
|
+
const parts = text.split(';');
|
|
88
|
+
const name = (parts[0] ?? '').trim();
|
|
89
|
+
if (BEHAVIOR_SIGNATURE_ALGORITHMS.includes(name) === false) {
|
|
90
|
+
return {
|
|
91
|
+
ok: false,
|
|
92
|
+
error: `unsupported signature profile '${name}' — supported: ` +
|
|
93
|
+
`${BEHAVIOR_SIGNATURE_ALGORITHMS.join(', ')} (with optional ;key=value parameters ` +
|
|
94
|
+
`${[...PARAMETER_NAMES].sort().join(', ')})`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const profile = {
|
|
98
|
+
algorithm: name,
|
|
99
|
+
header: DEFAULT_SIGNATURE_HEADER,
|
|
100
|
+
timestampHeader: DEFAULT_SIGNATURE_TIMESTAMP_HEADER,
|
|
101
|
+
toleranceMs: null,
|
|
102
|
+
attemptHeader: DEFAULT_SIGNATURE_ATTEMPT_HEADER,
|
|
103
|
+
attempt: 1,
|
|
104
|
+
forgery: 'none',
|
|
105
|
+
};
|
|
106
|
+
const seen = new Set();
|
|
107
|
+
for (const part of parts.slice(1)) {
|
|
108
|
+
if (part.trim().length === 0)
|
|
109
|
+
continue;
|
|
110
|
+
const separator = part.indexOf('=');
|
|
111
|
+
if (separator < 0)
|
|
112
|
+
return { ok: false, error: `signature profile parameter '${part}' must be key=value` };
|
|
113
|
+
const key = part.slice(0, separator).trim();
|
|
114
|
+
const value = part.slice(separator + 1).trim();
|
|
115
|
+
if (PARAMETER_NAMES.has(key) === false) {
|
|
116
|
+
return { ok: false, error: `unknown signature profile parameter '${key}'` };
|
|
117
|
+
}
|
|
118
|
+
if (seen.has(key))
|
|
119
|
+
return { ok: false, error: `duplicate signature profile parameter '${key}'` };
|
|
120
|
+
seen.add(key);
|
|
121
|
+
if (key === 'header') {
|
|
122
|
+
const header = headerError(value);
|
|
123
|
+
if (header !== null)
|
|
124
|
+
return { ok: false, error: header };
|
|
125
|
+
profile.header = value;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (key === 'timestampHeader') {
|
|
129
|
+
if (value === 'none') {
|
|
130
|
+
profile.timestampHeader = null;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const header = headerError(value);
|
|
134
|
+
if (header !== null)
|
|
135
|
+
return { ok: false, error: header };
|
|
136
|
+
profile.timestampHeader = value;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (key === 'attemptHeader') {
|
|
140
|
+
if (value === 'none') {
|
|
141
|
+
profile.attemptHeader = null;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const header = headerError(value);
|
|
145
|
+
if (header !== null)
|
|
146
|
+
return { ok: false, error: header };
|
|
147
|
+
profile.attemptHeader = value;
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (key === 'toleranceMs') {
|
|
151
|
+
const parsed = integerError(value, 0, MAX_TOLERANCE_MS);
|
|
152
|
+
if (parsed !== null)
|
|
153
|
+
return { ok: false, error: `signature profile toleranceMs: ${parsed}` };
|
|
154
|
+
profile.toleranceMs = Number(value);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (key === 'attempt') {
|
|
158
|
+
const parsed = integerError(value, 1, MAX_ATTEMPT);
|
|
159
|
+
if (parsed !== null)
|
|
160
|
+
return { ok: false, error: `signature profile attempt: ${parsed}` };
|
|
161
|
+
profile.attempt = Number(value);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (BEHAVIOR_SIGNATURE_FORGERIES.includes(value) === false) {
|
|
165
|
+
return {
|
|
166
|
+
ok: false,
|
|
167
|
+
error: `signature profile forgery must be one of ${BEHAVIOR_SIGNATURE_FORGERIES.join(', ')} (got '${value}')`,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
profile.forgery = value;
|
|
171
|
+
}
|
|
172
|
+
if (profile.timestampHeader === null)
|
|
173
|
+
profile.toleranceMs = null;
|
|
174
|
+
if (profile.attemptHeader === null)
|
|
175
|
+
profile.attempt = 1;
|
|
176
|
+
return { ok: true, profile };
|
|
177
|
+
}
|
|
178
|
+
/** Rejects a malformed or reserved header name; null when legal. */
|
|
179
|
+
function headerError(value) {
|
|
180
|
+
if (HEADER_NAME.test(value) === false) {
|
|
181
|
+
return `'${value}' is not a legal header name`;
|
|
182
|
+
}
|
|
183
|
+
if (FORBIDDEN_HEADERS.has(value.toLowerCase())) {
|
|
184
|
+
return `'${value}' is reserved for the engine-side signing secret and can never be stamped`;
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
/** Rejects a non-integer or out-of-range value; null when legal. */
|
|
189
|
+
function integerError(value, min, max) {
|
|
190
|
+
if (/^\d+$/.test(value) === false)
|
|
191
|
+
return `'${value}' is not a non-negative integer`;
|
|
192
|
+
const parsed = Number(value);
|
|
193
|
+
if (parsed < min || parsed > max)
|
|
194
|
+
return `'${value}' is outside [${String(min)}, ${String(max)}]`;
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=signature-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-profile.js","sourceRoot":"","sources":["../../src/schemas/signature-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,9 +60,11 @@ export declare const TestMapEntrySchema: z.ZodObject<{
|
|
|
60
60
|
integration: "integration";
|
|
61
61
|
component: "component";
|
|
62
62
|
}>>;
|
|
63
|
+
source: z.ZodOptional<z.ZodLiteral<"annotation">>;
|
|
63
64
|
categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
64
65
|
claims: z.ZodArray<z.ZodString>;
|
|
65
66
|
caseIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
67
|
+
twinOf: z.ZodOptional<z.ZodString>;
|
|
66
68
|
reason: z.ZodString;
|
|
67
69
|
}, z.core.$strict>;
|
|
68
70
|
/** Inferred test-map-entry type. */
|
|
@@ -92,9 +94,11 @@ export declare const TestMapSchema: z.ZodObject<{
|
|
|
92
94
|
integration: "integration";
|
|
93
95
|
component: "component";
|
|
94
96
|
}>>;
|
|
97
|
+
source: z.ZodOptional<z.ZodLiteral<"annotation">>;
|
|
95
98
|
categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
96
99
|
claims: z.ZodArray<z.ZodString>;
|
|
97
100
|
caseIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
101
|
+
twinOf: z.ZodOptional<z.ZodString>;
|
|
98
102
|
reason: z.ZodString;
|
|
99
103
|
}, z.core.$strict>>;
|
|
100
104
|
}, z.core.$strict>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-map.d.ts","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;kBAWpB,CAAC;AAEZ,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"test-map.d.ts","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;kBAWpB,CAAC;AAEZ,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;kBAmD3B,CAAC;AAEL,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4BtB,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/schemas/test-map.js
CHANGED
|
@@ -57,6 +57,8 @@ export const TestMapEntrySchema = z
|
|
|
57
57
|
selector: TestSelectorSchema,
|
|
58
58
|
/** Declared kind; resolves `unknown`, never observed mocking (§5.3). */
|
|
59
59
|
kind: TestKindSchema.optional(),
|
|
60
|
+
/** Origin marker for entries generated from test annotations. */
|
|
61
|
+
source: z.literal('annotation').optional(),
|
|
60
62
|
/** Behavior-category labels (hints only, never proof; §3.2). */
|
|
61
63
|
categories: z.array(z.string().min(1)).optional(),
|
|
62
64
|
/** Claimed obligation ids — at least one; `'*'` never parses. */
|
|
@@ -66,6 +68,16 @@ export const TestMapEntrySchema = z
|
|
|
66
68
|
* Optional: absence is not proof. Duplicate ids fail closed.
|
|
67
69
|
*/
|
|
68
70
|
caseIds: z.array(z.string().min(1)).optional(),
|
|
71
|
+
/**
|
|
72
|
+
* Twin path coverage (E64): the logical key of the RAW test this
|
|
73
|
+
* witnessed test is the twin of. Additive and purely declarative —
|
|
74
|
+
* it grants nothing, claims nothing, and is read only when
|
|
75
|
+
* `enforcement.twinPaths` is configured (absent = the run never
|
|
76
|
+
* looks at it). With it, a run can say which two tests are meant to
|
|
77
|
+
* cover the same request path, so a divergence between them is a
|
|
78
|
+
* named finding instead of an invisible one.
|
|
79
|
+
*/
|
|
80
|
+
twinOf: z.string().min(1, 'twinOf must be a non-empty logical key of the raw twin').optional(),
|
|
69
81
|
/** Required free-text why (a declaration must be reviewable). */
|
|
70
82
|
reason: z
|
|
71
83
|
.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-map.js","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-map.js","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,10 @@ export type UnresolvedReason = z.infer<typeof UnresolvedReasonSchema>;
|
|
|
35
35
|
/**
|
|
36
36
|
* Stable cause codes for the shared report model (plan §5.4, ADR 0005).
|
|
37
37
|
* Blocking-obligation causes name WHY an obligation is not satisfied and
|
|
38
|
-
* select its next action
|
|
39
|
-
*
|
|
40
|
-
* obligation verdicts. The seven verdict
|
|
41
|
-
* enrich
|
|
38
|
+
* select its next action. `DIAGNOSTIC_*` codes advise on the separate
|
|
39
|
+
* diagnostic run; `TEST_MAP_OUT_OF_SYNC` advises on generated mappings.
|
|
40
|
+
* These report advisories are never obligation verdicts. The seven verdict
|
|
41
|
+
* VALUES are unchanged; causes enrich reports without weakening contracts.
|
|
42
42
|
*/
|
|
43
43
|
export declare const CauseCodeSchema: z.ZodEnum<{
|
|
44
44
|
TEST_INVENTORY_INCOMPLETE: "TEST_INVENTORY_INCOMPLETE";
|
|
@@ -46,6 +46,7 @@ export declare const CauseCodeSchema: z.ZodEnum<{
|
|
|
46
46
|
TEST_MAPPING_MISSING: "TEST_MAPPING_MISSING";
|
|
47
47
|
TEST_MAPPING_AMBIGUOUS: "TEST_MAPPING_AMBIGUOUS";
|
|
48
48
|
TEST_MAPPING_STALE: "TEST_MAPPING_STALE";
|
|
49
|
+
TEST_MAP_OUT_OF_SYNC: "TEST_MAP_OUT_OF_SYNC";
|
|
49
50
|
EVIDENCE_NOT_COLLECTED: "EVIDENCE_NOT_COLLECTED";
|
|
50
51
|
VERIFIER_UNSUPPORTED: "VERIFIER_UNSUPPORTED";
|
|
51
52
|
TEST_NOT_EXECUTED: "TEST_NOT_EXECUTED";
|
|
@@ -72,6 +73,20 @@ export declare const CauseCodeSchema: z.ZodEnum<{
|
|
|
72
73
|
ENFORCEMENT_BOUNDARY_UNVERIFIED: "ENFORCEMENT_BOUNDARY_UNVERIFIED";
|
|
73
74
|
RUNTIME_PREPARATION_FAILED: "RUNTIME_PREPARATION_FAILED";
|
|
74
75
|
RUNTIME_READINESS_FAILED: "RUNTIME_READINESS_FAILED";
|
|
76
|
+
QUARANTINE_EXPIRED: "QUARANTINE_EXPIRED";
|
|
77
|
+
MIGRATION_MISSING: "MIGRATION_MISSING";
|
|
78
|
+
MIGRATION_LINEAGE_BROKEN: "MIGRATION_LINEAGE_BROKEN";
|
|
79
|
+
MIGRATION_DOWNGRADE_NOOP: "MIGRATION_DOWNGRADE_NOOP";
|
|
80
|
+
MIGRATION_DRIFT: "MIGRATION_DRIFT";
|
|
81
|
+
MIGRATION_ROUNDTRIP_FAILED: "MIGRATION_ROUNDTRIP_FAILED";
|
|
82
|
+
MIGRATION_DATA_LOST: "MIGRATION_DATA_LOST";
|
|
83
|
+
MIGRATION_CONFLICT: "MIGRATION_CONFLICT";
|
|
84
|
+
MIGRATION_SCRATCH_UNSAFE: "MIGRATION_SCRATCH_UNSAFE";
|
|
85
|
+
ADAPTER_CANNOT_WITNESS: "ADAPTER_CANNOT_WITNESS";
|
|
86
|
+
ADAPTER_VOLATILE_FIELD_SKIPPED: "ADAPTER_VOLATILE_FIELD_SKIPPED";
|
|
87
|
+
RESOURCE_SINGLETON_PER_TENANT: "RESOURCE_SINGLETON_PER_TENANT";
|
|
88
|
+
RESPONSE_FIELD_MISSING_FROM_MODEL: "RESPONSE_FIELD_MISSING_FROM_MODEL";
|
|
89
|
+
TWIN_PATH_DIVERGENT: "TWIN_PATH_DIVERGENT";
|
|
75
90
|
}>;
|
|
76
91
|
/** Inferred cause-code union. */
|
|
77
92
|
export type CauseCode = z.infer<typeof CauseCodeSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../../src/schemas/verdict.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;EAQxB,CAAC;AAEH,8BAA8B;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB;;;;;;;;kBASxB,CAAC;AAEZ,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../../src/schemas/verdict.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;EAQxB,CAAC;AAEH,8BAA8B;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB;;;;;;;;kBASxB,CAAC;AAEZ,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C1B,CAAC;AAEH,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CA8EjE,CAAC"}
|