@gate-forge/core 0.1.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 (242) hide show
  1. package/LICENSE +202 -0
  2. package/dist/baselines/adoption.d.ts +76 -0
  3. package/dist/baselines/adoption.d.ts.map +1 -0
  4. package/dist/baselines/adoption.js +163 -0
  5. package/dist/baselines/adoption.js.map +1 -0
  6. package/dist/baselines/index.d.ts +102 -0
  7. package/dist/baselines/index.d.ts.map +1 -0
  8. package/dist/baselines/index.js +186 -0
  9. package/dist/baselines/index.js.map +1 -0
  10. package/dist/canonical-json.d.ts +51 -0
  11. package/dist/canonical-json.d.ts.map +1 -0
  12. package/dist/canonical-json.js +112 -0
  13. package/dist/canonical-json.js.map +1 -0
  14. package/dist/classifier/bind.d.ts +64 -0
  15. package/dist/classifier/bind.d.ts.map +1 -0
  16. package/dist/classifier/bind.js +188 -0
  17. package/dist/classifier/bind.js.map +1 -0
  18. package/dist/classifier/classify.d.ts +154 -0
  19. package/dist/classifier/classify.d.ts.map +1 -0
  20. package/dist/classifier/classify.js +1207 -0
  21. package/dist/classifier/classify.js.map +1 -0
  22. package/dist/classifier/glob.d.ts +48 -0
  23. package/dist/classifier/glob.d.ts.map +1 -0
  24. package/dist/classifier/glob.js +104 -0
  25. package/dist/classifier/glob.js.map +1 -0
  26. package/dist/classifier/index.d.ts +10 -0
  27. package/dist/classifier/index.d.ts.map +1 -0
  28. package/dist/classifier/index.js +21 -0
  29. package/dist/classifier/index.js.map +1 -0
  30. package/dist/classifier/schema.d.ts +150 -0
  31. package/dist/classifier/schema.d.ts.map +1 -0
  32. package/dist/classifier/schema.js +139 -0
  33. package/dist/classifier/schema.js.map +1 -0
  34. package/dist/config/index.d.ts +259 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +523 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/fingerprints.d.ts +56 -0
  39. package/dist/fingerprints.d.ts.map +1 -0
  40. package/dist/fingerprints.js +59 -0
  41. package/dist/fingerprints.js.map +1 -0
  42. package/dist/graph/build.d.ts +16 -0
  43. package/dist/graph/build.d.ts.map +1 -0
  44. package/dist/graph/build.js +423 -0
  45. package/dist/graph/build.js.map +1 -0
  46. package/dist/graph/index.d.ts +12 -0
  47. package/dist/graph/index.d.ts.map +1 -0
  48. package/dist/graph/index.js +10 -0
  49. package/dist/graph/index.js.map +1 -0
  50. package/dist/graph/schema.d.ts +448 -0
  51. package/dist/graph/schema.d.ts.map +1 -0
  52. package/dist/graph/schema.js +237 -0
  53. package/dist/graph/schema.js.map +1 -0
  54. package/dist/graph/symbols.d.ts +129 -0
  55. package/dist/graph/symbols.d.ts.map +1 -0
  56. package/dist/graph/symbols.js +177 -0
  57. package/dist/graph/symbols.js.map +1 -0
  58. package/dist/graph/util.d.ts +40 -0
  59. package/dist/graph/util.d.ts.map +1 -0
  60. package/dist/graph/util.js +41 -0
  61. package/dist/graph/util.js.map +1 -0
  62. package/dist/index.d.ts +683 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +563 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/mapping/resolve.d.ts +177 -0
  67. package/dist/mapping/resolve.d.ts.map +1 -0
  68. package/dist/mapping/resolve.js +523 -0
  69. package/dist/mapping/resolve.js.map +1 -0
  70. package/dist/policy/coverage.d.ts +79 -0
  71. package/dist/policy/coverage.d.ts.map +1 -0
  72. package/dist/policy/coverage.js +119 -0
  73. package/dist/policy/coverage.js.map +1 -0
  74. package/dist/policy/evaluate.d.ts +275 -0
  75. package/dist/policy/evaluate.d.ts.map +1 -0
  76. package/dist/policy/evaluate.js +382 -0
  77. package/dist/policy/evaluate.js.map +1 -0
  78. package/dist/policy/index.d.ts +15 -0
  79. package/dist/policy/index.d.ts.map +1 -0
  80. package/dist/policy/index.js +14 -0
  81. package/dist/policy/index.js.map +1 -0
  82. package/dist/policy/trusted.d.ts +59 -0
  83. package/dist/policy/trusted.d.ts.map +1 -0
  84. package/dist/policy/trusted.js +96 -0
  85. package/dist/policy/trusted.js.map +1 -0
  86. package/dist/provenance.d.ts +170 -0
  87. package/dist/provenance.d.ts.map +1 -0
  88. package/dist/provenance.js +306 -0
  89. package/dist/provenance.js.map +1 -0
  90. package/dist/receipt/index.d.ts +74 -0
  91. package/dist/receipt/index.d.ts.map +1 -0
  92. package/dist/receipt/index.js +154 -0
  93. package/dist/receipt/index.js.map +1 -0
  94. package/dist/report/index.d.ts +100 -0
  95. package/dist/report/index.d.ts.map +1 -0
  96. package/dist/report/index.js +355 -0
  97. package/dist/report/index.js.map +1 -0
  98. package/dist/schemas/adoption.d.ts +40 -0
  99. package/dist/schemas/adoption.d.ts.map +1 -0
  100. package/dist/schemas/adoption.js +87 -0
  101. package/dist/schemas/adoption.js.map +1 -0
  102. package/dist/schemas/baseline.d.ts +19 -0
  103. package/dist/schemas/baseline.d.ts.map +1 -0
  104. package/dist/schemas/baseline.js +45 -0
  105. package/dist/schemas/baseline.js.map +1 -0
  106. package/dist/schemas/claim.d.ts +32 -0
  107. package/dist/schemas/claim.d.ts.map +1 -0
  108. package/dist/schemas/claim.js +34 -0
  109. package/dist/schemas/claim.js.map +1 -0
  110. package/dist/schemas/classification-policy.d.ts +84 -0
  111. package/dist/schemas/classification-policy.d.ts.map +1 -0
  112. package/dist/schemas/classification-policy.js +130 -0
  113. package/dist/schemas/classification-policy.js.map +1 -0
  114. package/dist/schemas/classification-signal.d.ts +125 -0
  115. package/dist/schemas/classification-signal.d.ts.map +1 -0
  116. package/dist/schemas/classification-signal.js +126 -0
  117. package/dist/schemas/classification-signal.js.map +1 -0
  118. package/dist/schemas/classification.d.ts +120 -0
  119. package/dist/schemas/classification.d.ts.map +1 -0
  120. package/dist/schemas/classification.js +154 -0
  121. package/dist/schemas/classification.js.map +1 -0
  122. package/dist/schemas/common.d.ts +73 -0
  123. package/dist/schemas/common.d.ts.map +1 -0
  124. package/dist/schemas/common.js +60 -0
  125. package/dist/schemas/common.js.map +1 -0
  126. package/dist/schemas/coverage-policy.d.ts +89 -0
  127. package/dist/schemas/coverage-policy.d.ts.map +1 -0
  128. package/dist/schemas/coverage-policy.js +81 -0
  129. package/dist/schemas/coverage-policy.js.map +1 -0
  130. package/dist/schemas/evidence.d.ts +65 -0
  131. package/dist/schemas/evidence.d.ts.map +1 -0
  132. package/dist/schemas/evidence.js +64 -0
  133. package/dist/schemas/evidence.js.map +1 -0
  134. package/dist/schemas/execution-result.d.ts +214 -0
  135. package/dist/schemas/execution-result.d.ts.map +1 -0
  136. package/dist/schemas/execution-result.js +240 -0
  137. package/dist/schemas/execution-result.js.map +1 -0
  138. package/dist/schemas/gate-receipt.d.ts +86 -0
  139. package/dist/schemas/gate-receipt.d.ts.map +1 -0
  140. package/dist/schemas/gate-receipt.js +193 -0
  141. package/dist/schemas/gate-receipt.js.map +1 -0
  142. package/dist/schemas/index.d.ts +22 -0
  143. package/dist/schemas/index.d.ts.map +1 -0
  144. package/dist/schemas/index.js +22 -0
  145. package/dist/schemas/index.js.map +1 -0
  146. package/dist/schemas/obligation.d.ts +37 -0
  147. package/dist/schemas/obligation.d.ts.map +1 -0
  148. package/dist/schemas/obligation.js +46 -0
  149. package/dist/schemas/obligation.js.map +1 -0
  150. package/dist/schemas/plugin.d.ts +19 -0
  151. package/dist/schemas/plugin.d.ts.map +1 -0
  152. package/dist/schemas/plugin.js +20 -0
  153. package/dist/schemas/plugin.js.map +1 -0
  154. package/dist/schemas/policy.d.ts +73 -0
  155. package/dist/schemas/policy.d.ts.map +1 -0
  156. package/dist/schemas/policy.js +46 -0
  157. package/dist/schemas/policy.js.map +1 -0
  158. package/dist/schemas/resource.d.ts +26 -0
  159. package/dist/schemas/resource.d.ts.map +1 -0
  160. package/dist/schemas/resource.js +29 -0
  161. package/dist/schemas/resource.js.map +1 -0
  162. package/dist/schemas/run-manifest.d.ts +72 -0
  163. package/dist/schemas/run-manifest.d.ts.map +1 -0
  164. package/dist/schemas/run-manifest.js +125 -0
  165. package/dist/schemas/run-manifest.js.map +1 -0
  166. package/dist/schemas/runner-adapter.d.ts +169 -0
  167. package/dist/schemas/runner-adapter.d.ts.map +1 -0
  168. package/dist/schemas/runner-adapter.js +2 -0
  169. package/dist/schemas/runner-adapter.js.map +1 -0
  170. package/dist/schemas/test-catalog.d.ts +472 -0
  171. package/dist/schemas/test-catalog.d.ts.map +1 -0
  172. package/dist/schemas/test-catalog.js +311 -0
  173. package/dist/schemas/test-catalog.js.map +1 -0
  174. package/dist/schemas/test-map.d.ts +99 -0
  175. package/dist/schemas/test-map.d.ts.map +1 -0
  176. package/dist/schemas/test-map.js +103 -0
  177. package/dist/schemas/test-map.js.map +1 -0
  178. package/dist/schemas/verdict.d.ts +73 -0
  179. package/dist/schemas/verdict.d.ts.map +1 -0
  180. package/dist/schemas/verdict.js +92 -0
  181. package/dist/schemas/verdict.js.map +1 -0
  182. package/dist/schemas/waiver.d.ts +36 -0
  183. package/dist/schemas/waiver.d.ts.map +1 -0
  184. package/dist/schemas/waiver.js +42 -0
  185. package/dist/schemas/waiver.js.map +1 -0
  186. package/dist/supervision/index.d.ts +170 -0
  187. package/dist/supervision/index.d.ts.map +1 -0
  188. package/dist/supervision/index.js +354 -0
  189. package/dist/supervision/index.js.map +1 -0
  190. package/dist/testing/clock.d.ts +50 -0
  191. package/dist/testing/clock.d.ts.map +1 -0
  192. package/dist/testing/clock.js +75 -0
  193. package/dist/testing/clock.js.map +1 -0
  194. package/dist/testing/env.d.ts +66 -0
  195. package/dist/testing/env.d.ts.map +1 -0
  196. package/dist/testing/env.js +106 -0
  197. package/dist/testing/env.js.map +1 -0
  198. package/dist/testing/gate-runner.d.ts +141 -0
  199. package/dist/testing/gate-runner.d.ts.map +1 -0
  200. package/dist/testing/gate-runner.js +173 -0
  201. package/dist/testing/gate-runner.js.map +1 -0
  202. package/dist/testing/gf19.d.ts +106 -0
  203. package/dist/testing/gf19.d.ts.map +1 -0
  204. package/dist/testing/gf19.js +282 -0
  205. package/dist/testing/gf19.js.map +1 -0
  206. package/dist/testing/index.d.ts +20 -0
  207. package/dist/testing/index.d.ts.map +1 -0
  208. package/dist/testing/index.js +14 -0
  209. package/dist/testing/index.js.map +1 -0
  210. package/dist/testing/red-probe.d.ts +138 -0
  211. package/dist/testing/red-probe.d.ts.map +1 -0
  212. package/dist/testing/red-probe.js +251 -0
  213. package/dist/testing/red-probe.js.map +1 -0
  214. package/dist/testing/temp-repo.d.ts +126 -0
  215. package/dist/testing/temp-repo.d.ts.map +1 -0
  216. package/dist/testing/temp-repo.js +214 -0
  217. package/dist/testing/temp-repo.js.map +1 -0
  218. package/dist/verdict/cause.d.ts +99 -0
  219. package/dist/verdict/cause.d.ts.map +1 -0
  220. package/dist/verdict/cause.js +206 -0
  221. package/dist/verdict/cause.js.map +1 -0
  222. package/dist/verdict/evaluate.d.ts +135 -0
  223. package/dist/verdict/evaluate.d.ts.map +1 -0
  224. package/dist/verdict/evaluate.js +1513 -0
  225. package/dist/verdict/evaluate.js.map +1 -0
  226. package/dist/verdict/index.d.ts +21 -0
  227. package/dist/verdict/index.d.ts.map +1 -0
  228. package/dist/verdict/index.js +20 -0
  229. package/dist/verdict/index.js.map +1 -0
  230. package/dist/verdict/pack-verifiers.d.ts +97 -0
  231. package/dist/verdict/pack-verifiers.d.ts.map +1 -0
  232. package/dist/verdict/pack-verifiers.js +763 -0
  233. package/dist/verdict/pack-verifiers.js.map +1 -0
  234. package/dist/verdict/registry.d.ts +180 -0
  235. package/dist/verdict/registry.d.ts.map +1 -0
  236. package/dist/verdict/registry.js +67 -0
  237. package/dist/verdict/registry.js.map +1 -0
  238. package/dist/waivers/index.d.ts +103 -0
  239. package/dist/waivers/index.d.ts.map +1 -0
  240. package/dist/waivers/index.js +192 -0
  241. package/dist/waivers/index.js.map +1 -0
  242. package/package.json +40 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Obligation schema (plan §4.5): a concrete test requirement generated
3
+ * from a resource and a policy. Obligation ids are
4
+ * `<resourceId>:<contract>` (e.g. `tenant.accounts:crud:update`) and the
5
+ * fingerprint over their identity is what baselines store (pin #2).
6
+ *
7
+ * Id grammar: the id splits at the FIRST colon — `resourceId` never
8
+ * contains a colon, `contract` may (e.g. `crud:update`).
9
+ */
10
+ import { z } from 'zod';
11
+ import { ContractNameSchema, SchemaVersionField } from './common.js';
12
+ import { LifecycleSchema } from './classification.js';
13
+ /**
14
+ * The obligation artifact. `lifecycle` carries the classification
15
+ * lifecycle attributes relevant to this obligation — it is part of the
16
+ * fingerprint identity (pin #2), so it must travel with the obligation.
17
+ */
18
+ export const ObligationSchema = z
19
+ .object({
20
+ schemaVersion: SchemaVersionField,
21
+ /** `<resourceId>:<contract>`. */
22
+ id: z.string().min(1),
23
+ /** Resource the obligation attaches to (no colons — it is the id prefix). */
24
+ resourceId: z
25
+ .string()
26
+ .min(1)
27
+ .regex(/^[^:]+$/, "resourceId must not contain ':' (ids split at the first colon)"),
28
+ /** Contract name required by the policy, e.g. `crud:update`. */
29
+ contract: ContractNameSchema,
30
+ /** Policy id that generated this obligation. */
31
+ policyId: z.string().min(1),
32
+ /** Classification lifecycle attributes relevant to this contract. */
33
+ lifecycle: LifecycleSchema,
34
+ })
35
+ .strict()
36
+ .superRefine((obligation, ctx) => {
37
+ const expected = `${obligation.resourceId}:${obligation.contract}`;
38
+ if (obligation.id !== expected) {
39
+ ctx.addIssue({
40
+ code: 'custom',
41
+ path: ['id'],
42
+ message: `obligation id must be '<resourceId>:<contract>': expected '${expected}', got '${obligation.id}'`,
43
+ });
44
+ }
45
+ });
46
+ //# sourceMappingURL=obligation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obligation.js","sourceRoot":"","sources":["../../src/schemas/obligation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,aAAa,EAAE,kBAAkB;IACjC,iCAAiC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,6EAA6E;IAC7E,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,KAAK,CAAC,SAAS,EAAE,gEAAgE,CAAC;IACrF,gEAAgE;IAChE,QAAQ,EAAE,kBAAkB;IAC5B,gDAAgD;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,qEAAqE;IACrE,SAAS,EAAE,eAAe;CAC3B,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;IAC/B,MAAM,QAAQ,GAAG,GAAG,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnE,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,8DAA8D,QAAQ,WAAW,UAAU,CAAC,EAAE,GAAG;SAC3G,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * PluginRegistration schema: the pinned identity of a plugin as it
3
+ * appears in run manifests (pin #4) and the GPP/3 handshake (pin #5).
4
+ * Mismatch between the registered and the answering plugin identity is
5
+ * a fail-closed protocol error (GF-12/18, enforced by plugin-protocol).
6
+ */
7
+ import { z } from 'zod';
8
+ /** Pinned plugin identity. */
9
+ export declare const PluginRegistrationSchema: z.ZodObject<{
10
+ id: z.ZodString;
11
+ version: z.ZodString;
12
+ transport: z.ZodEnum<{
13
+ subprocess: "subprocess";
14
+ "in-process": "in-process";
15
+ }>;
16
+ }, z.core.$strict>;
17
+ /** Inferred plugin-registration shape. */
18
+ export type PluginRegistration = z.infer<typeof PluginRegistrationSchema>;
19
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/schemas/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8BAA8B;AAC9B,eAAO,MAAM,wBAAwB;;;;;;;kBAS1B,CAAC;AAEZ,0CAA0C;AAC1C,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * PluginRegistration schema: the pinned identity of a plugin as it
3
+ * appears in run manifests (pin #4) and the GPP/3 handshake (pin #5).
4
+ * Mismatch between the registered and the answering plugin identity is
5
+ * a fail-closed protocol error (GF-12/18, enforced by plugin-protocol).
6
+ */
7
+ import { z } from 'zod';
8
+ import { TransportSchema } from './common.js';
9
+ /** Pinned plugin identity. */
10
+ export const PluginRegistrationSchema = z
11
+ .object({
12
+ /** Plugin id, e.g. `gateforge.pack-sqlalchemy`. */
13
+ id: z.string().min(1),
14
+ /** Plugin version string (semver recommended, not required). */
15
+ version: z.string().min(1),
16
+ /** How the engine talks to this plugin (ADR 0002). */
17
+ transport: TransportSchema,
18
+ })
19
+ .strict();
20
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/schemas/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,8BAA8B;AAC9B,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,mDAAmD;IACnD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,gEAAgE;IAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,sDAAsD;IACtD,SAAS,EAAE,eAAe;CAC3B,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Policy schemas (plan §4.4): declarative YAML mapping resource
3
+ * attributes to required test obligations. Policies are pure data —
4
+ * there is no code escape hatch (ADR 0002).
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Attribute matchers a resource must satisfy for the policy to apply.
9
+ * All provided matchers must match (AND semantics); omitted matchers are
10
+ * wildcard.
11
+ */
12
+ export declare const PolicyWhenSchema: z.ZodObject<{
13
+ kind: z.ZodOptional<z.ZodString>;
14
+ exposure: z.ZodOptional<z.ZodEnum<{
15
+ "user-facing": "user-facing";
16
+ internal: "internal";
17
+ }>>;
18
+ plane: z.ZodOptional<z.ZodEnum<{
19
+ tenant: "tenant";
20
+ master: "master";
21
+ global: "global";
22
+ }>>;
23
+ capability: z.ZodOptional<z.ZodString>;
24
+ consumed: z.ZodOptional<z.ZodBoolean>;
25
+ }, z.core.$strict>;
26
+ /** Inferred policy matcher shape. */
27
+ export type PolicyWhen = z.infer<typeof PolicyWhenSchema>;
28
+ /** One policy: when matched, require the listed contracts as obligations. */
29
+ export declare const PolicySchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ when: z.ZodObject<{
32
+ kind: z.ZodOptional<z.ZodString>;
33
+ exposure: z.ZodOptional<z.ZodEnum<{
34
+ "user-facing": "user-facing";
35
+ internal: "internal";
36
+ }>>;
37
+ plane: z.ZodOptional<z.ZodEnum<{
38
+ tenant: "tenant";
39
+ master: "master";
40
+ global: "global";
41
+ }>>;
42
+ capability: z.ZodOptional<z.ZodString>;
43
+ consumed: z.ZodOptional<z.ZodBoolean>;
44
+ }, z.core.$strict>;
45
+ require: z.ZodArray<z.ZodString>;
46
+ }, z.core.$strict>;
47
+ /** Inferred single-policy shape. */
48
+ export type Policy = z.infer<typeof PolicySchema>;
49
+ /** The policies document loaded from the path in `.gateforge.yml`. */
50
+ export declare const PolicyFileSchema: z.ZodObject<{
51
+ schemaVersion: z.ZodLiteral<1>;
52
+ policies: z.ZodArray<z.ZodObject<{
53
+ id: z.ZodString;
54
+ when: z.ZodObject<{
55
+ kind: z.ZodOptional<z.ZodString>;
56
+ exposure: z.ZodOptional<z.ZodEnum<{
57
+ "user-facing": "user-facing";
58
+ internal: "internal";
59
+ }>>;
60
+ plane: z.ZodOptional<z.ZodEnum<{
61
+ tenant: "tenant";
62
+ master: "master";
63
+ global: "global";
64
+ }>>;
65
+ capability: z.ZodOptional<z.ZodString>;
66
+ consumed: z.ZodOptional<z.ZodBoolean>;
67
+ }, z.core.$strict>;
68
+ require: z.ZodArray<z.ZodString>;
69
+ }, z.core.$strict>>;
70
+ }, z.core.$strict>;
71
+ /** Inferred policies-document shape. */
72
+ export type PolicyFile = z.infer<typeof PolicyFileSchema>;
73
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/schemas/policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;kBAalB,CAAC;AAEZ,qCAAqC;AACrC,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,6EAA6E;AAC7E,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;kBASd,CAAC;AAEZ,oCAAoC;AACpC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;kBAMlB,CAAC;AAEZ,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Policy schemas (plan §4.4): declarative YAML mapping resource
3
+ * attributes to required test obligations. Policies are pure data —
4
+ * there is no code escape hatch (ADR 0002).
5
+ */
6
+ import { z } from 'zod';
7
+ import { ContractNameSchema, ExposureSchema, PlaneSchema, SchemaVersionField } from './common.js';
8
+ /**
9
+ * Attribute matchers a resource must satisfy for the policy to apply.
10
+ * All provided matchers must match (AND semantics); omitted matchers are
11
+ * wildcard.
12
+ */
13
+ export const PolicyWhenSchema = z
14
+ .object({
15
+ /** Resource kind, e.g. `sqlalchemy.table`. */
16
+ kind: z.string().min(1).optional(),
17
+ /** Resource exposure. */
18
+ exposure: ExposureSchema.optional(),
19
+ /** Resource plane. */
20
+ plane: PlaneSchema.optional(),
21
+ /** Endpoint capability match: true when the resource's `capabilities` attribute contains this value. Non-endpoint resources never match. */
22
+ capability: z.string().min(1).optional(),
23
+ /** Endpoint consumption match: `true` matches resources whose `frontendConsumed` attribute is exactly `true`; `false` matches everything else (including non-endpoints). Omitted = wildcard. */
24
+ consumed: z.boolean().optional(),
25
+ })
26
+ .strict();
27
+ /** One policy: when matched, require the listed contracts as obligations. */
28
+ export const PolicySchema = z
29
+ .object({
30
+ /** Stable policy id; appears in obligation ids, reports, and SARIF rules. */
31
+ id: z.string().min(1),
32
+ /** Attribute matchers selecting the resources this policy applies to. */
33
+ when: PolicyWhenSchema,
34
+ /** Contract names to require (each becomes `<resourceId>:<contract>`). */
35
+ require: z.array(ContractNameSchema).min(1),
36
+ })
37
+ .strict();
38
+ /** The policies document loaded from the path in `.gateforge.yml`. */
39
+ export const PolicyFileSchema = z
40
+ .object({
41
+ schemaVersion: SchemaVersionField,
42
+ /** Policy list, evaluated in order. */
43
+ policies: z.array(PolicySchema).min(1),
44
+ })
45
+ .strict();
46
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/schemas/policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,yBAAyB;IACzB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;IACnC,sBAAsB;IACtB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,4IAA4I;IAC5I,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,gMAAgM;IAChM,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAKZ,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,6EAA6E;IAC7E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,yEAAyE;IACzE,IAAI,EAAE,gBAAgB;IACtB,0EAA0E;IAC1E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5C,CAAC;KACD,MAAM,EAAE,CAAC;AAKZ,sEAAsE;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,aAAa,EAAE,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Resource schema (plan §4.2): a stable, code-derived object that may
3
+ * carry obligations. Produced by detectors, keyed by a stable resource id.
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * A discovered resource. `attributes` is detector-defined payload data
8
+ * (e.g. table name, framework style) and is deliberately open — detectors
9
+ * own their attribute vocabulary. Identity, kind, and provenance are not.
10
+ */
11
+ export declare const ResourceSchema: z.ZodObject<{
12
+ schemaVersion: z.ZodLiteral<1>;
13
+ id: z.ZodString;
14
+ kind: z.ZodString;
15
+ source: z.ZodString;
16
+ location: z.ZodObject<{
17
+ file: z.ZodString;
18
+ line: z.ZodNumber;
19
+ col: z.ZodNumber;
20
+ }, z.core.$strict>;
21
+ detectorVersion: z.ZodString;
22
+ attributes: z.ZodRecord<z.ZodString, z.ZodUnknown>;
23
+ }, z.core.$strict>;
24
+ /** Inferred resource shape. */
25
+ export type Resource = z.infer<typeof ResourceSchema>;
26
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/schemas/resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;kBAgBhB,CAAC;AAEZ,+BAA+B;AAC/B,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Resource schema (plan §4.2): a stable, code-derived object that may
3
+ * carry obligations. Produced by detectors, keyed by a stable resource id.
4
+ */
5
+ import { z } from 'zod';
6
+ import { LocationSchema, SchemaVersionField } from './common.js';
7
+ /**
8
+ * A discovered resource. `attributes` is detector-defined payload data
9
+ * (e.g. table name, framework style) and is deliberately open — detectors
10
+ * own their attribute vocabulary. Identity, kind, and provenance are not.
11
+ */
12
+ export const ResourceSchema = z
13
+ .object({
14
+ schemaVersion: SchemaVersionField,
15
+ /** Stable resource id, e.g. `tenant.accounts`. */
16
+ id: z.string().min(1),
17
+ /** Detector framework kind, e.g. `sqlalchemy.table`. */
18
+ kind: z.string().min(1),
19
+ /** Repo-root-relative path of the file the resource was found in. */
20
+ source: z.string().min(1),
21
+ /** Exact source location of the declaration. */
22
+ location: LocationSchema,
23
+ /** Version of the detector that produced this resource. */
24
+ detectorVersion: z.string().min(1),
25
+ /** Detector-specific discovered attributes (open payload). */
26
+ attributes: z.record(z.string(), z.unknown()),
27
+ })
28
+ .strict();
29
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/schemas/resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,aAAa,EAAE,kBAAkB;IACjC,kDAAkD;IAClD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,wDAAwD;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,qEAAqE;IACrE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,gDAAgD;IAChD,QAAQ,EAAE,cAAc;IACxB,2DAA2D;IAC3D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,8DAA8D;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CAC9C,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * RunManifest schema (pin #4): identity of a single gateforge run. Every
3
+ * verdict and every witnessed evidence record references its run.
4
+ *
5
+ * `startedAt` comes from the injected clock (deterministic tests), never
6
+ * the wall clock. At shutdown the witness service appends the record ids
7
+ * it issued to the manifest (pin #7).
8
+ */
9
+ import { z } from 'zod';
10
+ /** Which changed-file provider backs the run (pin #5 of architecture contracts). */
11
+ export declare const ChangedProviderSchema: z.ZodEnum<{
12
+ "local-staged": "local-staged";
13
+ "github-pr": "github-pr";
14
+ "gitlab-mr": "gitlab-mr";
15
+ "all-files": "all-files";
16
+ }>;
17
+ /** Inferred changed-provider shape. */
18
+ export type ChangedProvider = z.infer<typeof ChangedProviderSchema>;
19
+ /**
20
+ * V2 evidence attestation envelope (plan §11.3): the witness's signed
21
+ * statement of its run context and issued record set. `attestationVersion`
22
+ * is an explicit literal — never a reinterpreted legacy field — so an old
23
+ * `{runId, recordIds}` MAC cannot authorize evidence even when it
24
+ * verifies under its own format.
25
+ */
26
+ export declare const AttestationSchema: z.ZodObject<{
27
+ attestationVersion: z.ZodLiteral<2>;
28
+ runId: z.ZodUUID;
29
+ invocationId: z.ZodUUID;
30
+ inputDigest: z.ZodString;
31
+ recordIds: z.ZodArray<z.ZodString>;
32
+ mac: z.ZodString;
33
+ }, z.core.$strict>;
34
+ /** Inferred v2 attestation envelope shape. */
35
+ export type Attestation = z.infer<typeof AttestationSchema>;
36
+ /** The run manifest artifact. */
37
+ export declare const RunManifestSchema: z.ZodObject<{
38
+ schemaVersion: z.ZodLiteral<1>;
39
+ runId: z.ZodUUID;
40
+ startedAt: z.ZodISODateTime;
41
+ gitSha: z.ZodNullable<z.ZodString>;
42
+ provider: z.ZodEnum<{
43
+ "local-staged": "local-staged";
44
+ "github-pr": "github-pr";
45
+ "gitlab-mr": "gitlab-mr";
46
+ "all-files": "all-files";
47
+ }>;
48
+ plugins: z.ZodArray<z.ZodObject<{
49
+ id: z.ZodString;
50
+ version: z.ZodString;
51
+ transport: z.ZodEnum<{
52
+ subprocess: "subprocess";
53
+ "in-process": "in-process";
54
+ }>;
55
+ }, z.core.$strict>>;
56
+ attestationScope: z.ZodNullable<z.ZodString>;
57
+ recordIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
58
+ recordIdsMac: z.ZodOptional<z.ZodString>;
59
+ invocationId: z.ZodOptional<z.ZodUUID>;
60
+ inputDigest: z.ZodOptional<z.ZodString>;
61
+ attestation: z.ZodOptional<z.ZodObject<{
62
+ attestationVersion: z.ZodLiteral<2>;
63
+ runId: z.ZodUUID;
64
+ invocationId: z.ZodUUID;
65
+ inputDigest: z.ZodString;
66
+ recordIds: z.ZodArray<z.ZodString>;
67
+ mac: z.ZodString;
68
+ }, z.core.$strict>>;
69
+ }, z.core.$strict>;
70
+ /** Inferred run-manifest shape. */
71
+ export type RunManifest = z.infer<typeof RunManifestSchema>;
72
+ //# sourceMappingURL=run-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-manifest.d.ts","sourceRoot":"","sources":["../../src/schemas/run-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,oFAAoF;AACpF,eAAO,MAAM,qBAAqB;;;;;EAKhC,CAAC;AAEH,uCAAuC;AACvC,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;kBA6BnB,CAAC;AAEZ,8CAA8C;AAC9C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,iCAAiC;AACjC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmEnB,CAAC;AAEZ,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * RunManifest schema (pin #4): identity of a single gateforge run. Every
3
+ * verdict and every witnessed evidence record references its run.
4
+ *
5
+ * `startedAt` comes from the injected clock (deterministic tests), never
6
+ * the wall clock. At shutdown the witness service appends the record ids
7
+ * it issued to the manifest (pin #7).
8
+ */
9
+ import { z } from 'zod';
10
+ import { SchemaVersionField } from './common.js';
11
+ import { PluginRegistrationSchema } from './plugin.js';
12
+ /** Which changed-file provider backs the run (pin #5 of architecture contracts). */
13
+ export const ChangedProviderSchema = z.enum([
14
+ 'local-staged',
15
+ 'github-pr',
16
+ 'gitlab-mr',
17
+ 'all-files',
18
+ ]);
19
+ /**
20
+ * V2 evidence attestation envelope (plan §11.3): the witness's signed
21
+ * statement of its run context and issued record set. `attestationVersion`
22
+ * is an explicit literal — never a reinterpreted legacy field — so an old
23
+ * `{runId, recordIds}` MAC cannot authorize evidence even when it
24
+ * verifies under its own format.
25
+ */
26
+ export const AttestationSchema = z
27
+ .object({
28
+ /** Envelope version; only `2` is produced or honored. */
29
+ attestationVersion: z.literal(2),
30
+ /** Witness run UUID this envelope attests. */
31
+ runId: z.uuid(),
32
+ /** Fresh invocation UUID minted by the trusted test-gates caller. */
33
+ invocationId: z.uuid(),
34
+ /** 64-char lowercase hex digest of the canonical input snapshot. */
35
+ inputDigest: z.string().regex(/^[0-9a-f]{64}$/, 'inputDigest must be 64-char lowercase hex'),
36
+ /** Issued record ids, sorted codepoint-wise and unique. */
37
+ recordIds: z
38
+ .array(z.string().regex(/^[0-9a-f]{64}$/, 'recordId must be 64-char lowercase hex'))
39
+ .superRefine((ids, ctx) => {
40
+ for (let index = 1; index < ids.length; index += 1) {
41
+ const previous = ids[index - 1];
42
+ const current = ids[index];
43
+ if (previous >= current) {
44
+ ctx.addIssue({
45
+ code: 'custom',
46
+ message: 'recordIds must be sorted codepoint-wise and unique',
47
+ });
48
+ return;
49
+ }
50
+ }
51
+ }),
52
+ /** HMAC-SHA256 over the v2 body with domain `gateforge.ledger.v2`. */
53
+ mac: z.string().regex(/^[0-9a-f]{64}$/, 'mac must be a 64-char lowercase hex HMAC'),
54
+ })
55
+ .strict();
56
+ /** The run manifest artifact. */
57
+ export const RunManifestSchema = z
58
+ .object({
59
+ schemaVersion: SchemaVersionField,
60
+ /** UUIDv4 identifying this run. */
61
+ runId: z.uuid(),
62
+ /** Run start instant, ISO-8601, from the injected clock. */
63
+ startedAt: z.iso.datetime(),
64
+ /** HEAD git sha of the repo under test, or null when unavailable. */
65
+ gitSha: z.string().regex(/^[0-9a-f]{40}$/, 'gitSha must be a 40-char lowercase sha1 hex').nullable(),
66
+ /** Changed-file provider backing this run. */
67
+ provider: ChangedProviderSchema,
68
+ /** Plugin set with pinned versions (handshake identity, pin #5). */
69
+ plugins: z.array(PluginRegistrationSchema),
70
+ /** Disposable-environment attestation scope, or null when unset. */
71
+ attestationScope: z.string().nullable(),
72
+ /**
73
+ * Record ids the witness issued this run (pin #7), appended at
74
+ * witness shutdown. Optional: the CLI writes the manifest without it
75
+ * before the suite runs; an unappended manifest (witness never
76
+ * finished) is still schema-valid but proves no issuance.
77
+ *
78
+ * TRUST: this list lives in the suite-writable state directory, so
79
+ * on its own it proves nothing — a hostile suite can write ids here
80
+ * as easily as it can fabricate records. It is trusted only through
81
+ * the v2 `attestation` envelope below (plan §11.3); this bare list
82
+ * never authorizes evidence.
83
+ */
84
+ recordIds: z.array(z.string().regex(/^[0-9a-f]{64}$/, 'recordId must be 64-char lowercase hex')).optional(),
85
+ /**
86
+ * LEGACY v1 HMAC-SHA256 (verifier-key keyed) over the canonical
87
+ * `{runId, recordIds}`. Readable for diagnostics only: it NEVER
88
+ * authorizes evidence (plan §11.3/§11.6). A verifying v1 MAC over a
89
+ * matching id set still demotes every witnessed record — only the
90
+ * v2 `attestation` envelope can authorize. New writers must not
91
+ * emit this field.
92
+ */
93
+ recordIdsMac: z
94
+ .string()
95
+ .regex(/^[0-9a-f]{64}$/, 'recordIdsMac must be a 64-char lowercase hex HMAC')
96
+ .optional(),
97
+ /**
98
+ * Fresh invocation UUID minted by the trusted test-gates caller for
99
+ * this run (plan §11.4). Stored publicly; its authenticity is
100
+ * established only by the v2 `attestation` MAC covering it. A new
101
+ * suite invocation mints a new value, so a previous invocation's
102
+ * records cannot satisfy the new run.
103
+ */
104
+ invocationId: z.uuid().optional(),
105
+ /**
106
+ * 64-char lowercase hex digest of the canonical input snapshot
107
+ * (plan §11.2) computed for this run's tested inputs. Stored
108
+ * publicly; authenticity comes from the v2 `attestation` MAC.
109
+ */
110
+ inputDigest: z
111
+ .string()
112
+ .regex(/^[0-9a-f]{64}$/, 'inputDigest must be 64-char lowercase hex')
113
+ .optional(),
114
+ /**
115
+ * The v2 evidence attestation envelope (plan §11.3), written by the
116
+ * witness at shutdown from its frozen bound context plus the ids it
117
+ * actually issued — never by reading suite-writable state. The live
118
+ * `GET /ledger-attestation` endpoint serves the same signed object.
119
+ * Absent (or invalid) means no evidence authorizes: evaluation fails
120
+ * closed for witnessed records.
121
+ */
122
+ attestation: AttestationSchema.optional(),
123
+ })
124
+ .strict();
125
+ //# sourceMappingURL=run-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-manifest.js","sourceRoot":"","sources":["../../src/schemas/run-manifest.ts"],"names":[],"mappings":"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"}