@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,169 @@
1
+ /**
2
+ * Runner-adapter contract (plan 2026-09-13 phase 2 item 6): the small
3
+ * interface every test-runner adapter implements so inventory, instance
4
+ * resolution, and execution have one shape.
5
+ *
6
+ * This module is TYPES ONLY (no runtime code): adapters live in their
7
+ * packs (the Playwright and bounded pytest adapters in
8
+ * `@gate-forge/pack-playwright/discovery`), while the contract belongs to
9
+ * the engine so CLI/pipeline code can depend on the shape without
10
+ * depending on a pack.
11
+ *
12
+ * Honesty rules baked into the contract:
13
+ * - `capabilities` is declared, never implied: an adapter that cannot
14
+ * execute says so (`not-wired-until-phase-4`); callers fail closed
15
+ * instead of guessing.
16
+ * - `execute` returns a structured outcome envelope — runner exit codes
17
+ * alone are never a gate result (plan §5.1 row "Execution result").
18
+ */
19
+ import type { TestCatalogEntry } from './test-catalog.js';
20
+ /** Availability of one adapter capability. */
21
+ export type RunnerCapability = 'available' | 'not-wired-until-phase-4' | 'unsupported';
22
+ /** The declared capabilities of one adapter. */
23
+ export interface RunnerCapabilities {
24
+ /** Enumerate the runner's tests into catalog entries. */
25
+ inventory: RunnerCapability;
26
+ /** Map a logical key to concrete runtime instances (project/param). */
27
+ resolveInstances: RunnerCapability;
28
+ /**
29
+ * Execute a selection under trusted supervision and return the
30
+ * structured outcome envelope. `not-wired-until-phase-4` until the
31
+ * trusted supervisor owns the run (plan phase 4).
32
+ */
33
+ execute: RunnerCapability;
34
+ }
35
+ /** One concrete runtime instance a logical test resolves to. */
36
+ export interface RunnerTestInstance {
37
+ /** The logical key the instance belongs to (§5.2 identity rules). */
38
+ logicalKey: string;
39
+ /** Runner project, e.g. `chromium` (framework IDs identify instances). */
40
+ project: string | null;
41
+ /**
42
+ * The framework's own instance id (playwright spec id, pytest node
43
+ * id). Framework IDs identify runtime instances; the logical key
44
+ * stays the stable mapping identity.
45
+ */
46
+ frameworkId: string;
47
+ }
48
+ /** The tests an execute call is asked to run (exact, never a wildcard). */
49
+ export interface RunnerSelection {
50
+ /** Exact logical keys selected for the run. */
51
+ logicalKeys: readonly string[];
52
+ }
53
+ /** Environment identity an execute call runs under (plan §3.3 rule 4). */
54
+ export interface RunnerExecutionEnv {
55
+ /** Absolute run-state directory (excluded from tracked inputs). */
56
+ stateDir: string;
57
+ /** Run id the execution binds to. */
58
+ runId: string;
59
+ /** Extra env the supervisor wires for the run (already sanitized). */
60
+ vars: Readonly<Record<string, string>>;
61
+ }
62
+ /** Per-instance outcome of a supervised execution (plan §5.1 row 4). */
63
+ export interface RunnerInstanceOutcome {
64
+ logicalKey: string;
65
+ /** The concrete instance that ran. */
66
+ project: string | null;
67
+ frameworkId: string;
68
+ /** passed | failed | skipped | fixme — first attempt, no retries. */
69
+ status: 'passed' | 'failed' | 'skipped' | 'fixme' | 'not-run';
70
+ /** Attempt number (1 = first attempt; required retries stay zero). */
71
+ attempt: number;
72
+ /**
73
+ * True when the instance is an expected failure (e.g. Playwright
74
+ * `test.fail()`): an expected-failure exemption never proves behavior
75
+ * (plan §3.3 rule 3) and supervision blocks on it.
76
+ */
77
+ expectedFailure?: boolean;
78
+ }
79
+ /**
80
+ * The structured outcome envelope `execute` resolves with. Runner
81
+ * reporter data is INPUT here, never signature authority (plan §5.1).
82
+ * Phase 4 extends the envelope with the supervision surfaces trusted
83
+ * runner supervision needs (fixture/teardown outcome, shard
84
+ * completeness, retry detection, engine versions) — all optional so
85
+ * earlier adapters remain valid.
86
+ */
87
+ export interface RunnerExecutionEnvelope {
88
+ /** Framework process exit code (supplementary, never decisive). */
89
+ processExit: number | null;
90
+ /** Whether the COMPLETE selected set ran (no missing cases/shards). */
91
+ complete: boolean;
92
+ /** One outcome per planned instance. */
93
+ outcomes: readonly RunnerInstanceOutcome[];
94
+ /** Single-cause detail when the run is incomplete. */
95
+ incompleteDetail?: string;
96
+ /**
97
+ * Setup/teardown/runner-body outcome observed during the run
98
+ * (plan §3.3 rule 5: the complete run — fixtures and teardown
99
+ * included — must end successfully). Absent = unknown (fail closed
100
+ * downstream).
101
+ */
102
+ fixtureOutcome?: 'passed' | 'failed' | 'unknown';
103
+ /**
104
+ * Shard completeness when the runner reports sharding; null/absent
105
+ * means the runner reported none (single-shard runs).
106
+ */
107
+ shards?: {
108
+ complete: boolean;
109
+ detail: string;
110
+ } | null;
111
+ /** True when retry-assisted execution was detected (retries must be 0). */
112
+ retriesDetected?: boolean;
113
+ /** Detail describing the retry detection. */
114
+ retriesDetail?: string;
115
+ /** Runtime engine versions captured during the run (honest subset). */
116
+ engines?: Record<string, string>;
117
+ /** Browser versions when the runner reports them (may be empty). */
118
+ browsers?: Record<string, string>;
119
+ }
120
+ /**
121
+ * The adapter contract (plan phase 2 item 6): inventory, instance
122
+ * resolution, execution, outcomes. Adapters must be deterministic and
123
+ * fail closed: enumeration never returns an empty inventory for a scan
124
+ * that failed, and undeclared capabilities are rejected by callers.
125
+ *
126
+ * @typeParam TEntry - the catalog entry row shape the adapter emits.
127
+ */
128
+ export interface TestRunnerAdapter<TEntry extends object = TestCatalogEntry> {
129
+ /** Runner name the adapter serves, e.g. `playwright`. */
130
+ readonly runner: string;
131
+ /** Declared capabilities — callers must honor, never assume. */
132
+ readonly capabilities: RunnerCapabilities;
133
+ /**
134
+ * Enumerates the runner's configured tests.
135
+ *
136
+ * Args:
137
+ * cwd: absolute repo root the runner configuration lives under.
138
+ *
139
+ * Returns:
140
+ * Promise<TEntry[]>: catalog entry rows (unresolved rows included —
141
+ * never an empty list for a failed scan).
142
+ */
143
+ inventory(cwd: string): Promise<readonly TEntry[]>;
144
+ /**
145
+ * Resolves one logical key to its concrete runtime instances.
146
+ *
147
+ * Args:
148
+ * logicalKey: the stable logical identity (§5.2).
149
+ * cwd: absolute repo root.
150
+ *
151
+ * Returns:
152
+ * Promise<RunnerTestInstance[]>: matching instances (empty when the
153
+ * key has no current instance — a visible stale mapping, §5.2).
154
+ */
155
+ resolveInstances(logicalKey: string, cwd: string): Promise<readonly RunnerTestInstance[]>;
156
+ /**
157
+ * Executes a selection under trusted supervision. Adapters whose
158
+ * `capabilities.execute` is not `available` reject here (fail closed).
159
+ *
160
+ * Args:
161
+ * selection: exact logical keys to run.
162
+ * env: run-state dir + run identity the execution binds to.
163
+ *
164
+ * Returns:
165
+ * Promise<RunnerExecutionEnvelope>: structured outcome envelope.
166
+ */
167
+ execute(selection: RunnerSelection, env: RunnerExecutionEnv): Promise<RunnerExecutionEnvelope>;
168
+ }
169
+ //# sourceMappingURL=runner-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-adapter.d.ts","sourceRoot":"","sources":["../../src/schemas/runner-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runner-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-adapter.js","sourceRoot":"","sources":["../../src/schemas/runner-adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,472 @@
1
+ /**
2
+ * Test-catalog schemas (plan 2026-09-13 §5.1 row 1 + §5.2): the derived
3
+ * inventory of a repository's existing tests.
4
+ *
5
+ * Identity rules (§5.2, hard):
6
+ * - The `logicalKey` is the stable manual-mapping identity: an explicit
7
+ * slug when a mapping declares one, otherwise deterministically derived
8
+ * from runner + project + repo-relative file + full title path
9
+ * ({@link deriveLogicalKey}).
10
+ * - Line numbers are DIAGNOSTICS, never identity: adding a comment keeps
11
+ * the logical key stable while `sourceDigest` changes.
12
+ * - Duplicate logical keys are a typed parse error listing BOTH sources —
13
+ * never "bind the first match".
14
+ *
15
+ * Discovery is data, not a gate result: `unresolved` entries and
16
+ * `parseErrors` are first-class catalog rows so a failed scan can never
17
+ * be misread as "no tests".
18
+ */
19
+ import { z } from 'zod';
20
+ /** Runner names with an implemented adapter (plan phase 2 item 6). */
21
+ export declare const SUPPORTED_TEST_RUNNERS: readonly ["playwright", "pytest"];
22
+ /**
23
+ * A runner name. `playwright` and `pytest` are the adapters implemented
24
+ * so far; any other string is legal data (an adapter must exist before
25
+ * its entries drive gates — plan phase 2 item 6).
26
+ */
27
+ export declare const TestRunnerSchema: z.ZodString;
28
+ /** Inferred test-runner type. */
29
+ export type TestRunner = z.infer<typeof TestRunnerSchema>;
30
+ /**
31
+ * What a test IS (plan §3.2). `unknown` is a kept, visible outcome.
32
+ *
33
+ * `server-e2e` (server-witnessed persistence channel) declares an
34
+ * existing test whose persistence evidence is witnessed SERVER-side:
35
+ * the engine's own adapter probe observes the app database directly,
36
+ * because the obligated state (e.g. a transactional outbox) can never
37
+ * honestly appear in a UI. Browser-kind tests never grade through it —
38
+ * the witness stamps the channel only for obligations registered
39
+ * `server-e2e` on the verifier-key supervisor surface, and the verdict
40
+ * engine admits `channel: 'server'` records only with that stamp.
41
+ */
42
+ export declare const TestKindSchema: z.ZodEnum<{
43
+ unknown: "unknown";
44
+ "browser-e2e": "browser-e2e";
45
+ "server-e2e": "server-e2e";
46
+ "api-e2e": "api-e2e";
47
+ unit: "unit";
48
+ integration: "integration";
49
+ component: "component";
50
+ }>;
51
+ /** Inferred test-kind type. */
52
+ export type TestKind = z.infer<typeof TestKindSchema>;
53
+ /** Catalog row discovery status (plan §5.1 row 1). */
54
+ export declare const DiscoveryStatusSchema: z.ZodEnum<{
55
+ unresolved: "unresolved";
56
+ discovered: "discovered";
57
+ "parse-error": "parse-error";
58
+ }>;
59
+ /** Inferred discovery-status type. */
60
+ export type DiscoveryStatus = z.infer<typeof DiscoveryStatusSchema>;
61
+ /** Reconciliation outcome against the runner's native enumeration. */
62
+ export declare const ReconciliationStatusSchema: z.ZodEnum<{
63
+ matched: "matched";
64
+ "static-only": "static-only";
65
+ "list-only": "list-only";
66
+ unavailable: "unavailable";
67
+ }>;
68
+ /** Inferred reconciliation-status type. */
69
+ export type ReconciliationStatus = z.infer<typeof ReconciliationStatusSchema>;
70
+ /** One inference rule that fired, with the code location that fed it. */
71
+ export declare const RuleEvidenceSchema: z.ZodObject<{
72
+ ruleId: z.ZodString;
73
+ evidence: z.ZodString;
74
+ location: z.ZodObject<{
75
+ file: z.ZodString;
76
+ line: z.ZodNumber;
77
+ col: z.ZodNumber;
78
+ }, z.core.$strict>;
79
+ }, z.core.$strict>;
80
+ /** Inferred rule-evidence type. */
81
+ export type RuleEvidence = z.infer<typeof RuleEvidenceSchema>;
82
+ /**
83
+ * A strong kind signal: a rule that proposes a {@link TestKind} with its
84
+ * code evidence. Conflicting proposals resolve to `unknown` — never to
85
+ * whichever rule ran last (plan phase 2 item 5: no opaque confidence).
86
+ */
87
+ export declare const KindSignalSchema: z.ZodObject<{
88
+ ruleId: z.ZodString;
89
+ evidence: z.ZodString;
90
+ location: z.ZodObject<{
91
+ file: z.ZodString;
92
+ line: z.ZodNumber;
93
+ col: z.ZodNumber;
94
+ }, z.core.$strict>;
95
+ kind: z.ZodEnum<{
96
+ unknown: "unknown";
97
+ "browser-e2e": "browser-e2e";
98
+ "server-e2e": "server-e2e";
99
+ "api-e2e": "api-e2e";
100
+ unit: "unit";
101
+ integration: "integration";
102
+ component: "component";
103
+ }>;
104
+ }, z.core.$strict>;
105
+ /** Inferred kind-signal type. */
106
+ export type KindSignal = z.infer<typeof KindSignalSchema>;
107
+ /**
108
+ * A weak signal (title/folder hints). Weak signals are recorded for the
109
+ * agent but must NEVER decide a kind by themselves (plan §3.2).
110
+ */
111
+ export declare const WeakSignalSchema: z.ZodObject<{
112
+ ruleId: z.ZodString;
113
+ evidence: z.ZodString;
114
+ location: z.ZodObject<{
115
+ file: z.ZodString;
116
+ line: z.ZodNumber;
117
+ col: z.ZodNumber;
118
+ }, z.core.$strict>;
119
+ }, z.core.$strict>;
120
+ /** Inferred weak-signal type. */
121
+ export type WeakSignal = z.infer<typeof WeakSignalSchema>;
122
+ /**
123
+ * A behavior-category hint (plan §3.2): extensible dotted labels such as
124
+ * `persistence.create`. Hints only — a label never creates or satisfies
125
+ * a contract.
126
+ */
127
+ export declare const CategorySignalSchema: z.ZodObject<{
128
+ label: z.ZodString;
129
+ ruleId: z.ZodString;
130
+ location: z.ZodObject<{
131
+ file: z.ZodString;
132
+ line: z.ZodNumber;
133
+ col: z.ZodNumber;
134
+ }, z.core.$strict>;
135
+ }, z.core.$strict>;
136
+ /** Inferred category-signal type. */
137
+ export type CategorySignal = z.infer<typeof CategorySignalSchema>;
138
+ /**
139
+ * Suppression/mock signals: skip, only, fixme, and known mock patterns.
140
+ * These qualify (and can disqualify) later proof; discovery only records
141
+ * them with locations (plan §3.2/§3.3).
142
+ */
143
+ export declare const SuppressionSignalKindSchema: z.ZodEnum<{
144
+ skip: "skip";
145
+ only: "only";
146
+ fixme: "fixme";
147
+ mock: "mock";
148
+ }>;
149
+ /** Inferred suppression-signal-kind type. */
150
+ export type SuppressionSignalKind = z.infer<typeof SuppressionSignalKindSchema>;
151
+ /** One recorded suppression/mock signal with its location. */
152
+ export declare const SuppressionSignalSchema: z.ZodObject<{
153
+ kind: z.ZodEnum<{
154
+ skip: "skip";
155
+ only: "only";
156
+ fixme: "fixme";
157
+ mock: "mock";
158
+ }>;
159
+ detail: z.ZodString;
160
+ location: z.ZodObject<{
161
+ file: z.ZodString;
162
+ line: z.ZodNumber;
163
+ col: z.ZodNumber;
164
+ }, z.core.$strict>;
165
+ }, z.core.$strict>;
166
+ /** Inferred suppression-signal type. */
167
+ export type SuppressionSignal = z.infer<typeof SuppressionSignalSchema>;
168
+ /**
169
+ * One catalog row (plan §5.1 row 1): what test exists, plus the signals
170
+ * discovery gathered. Rows are NEVER dropped — an unresolvable call is
171
+ * a row with `discoveryStatus: 'unresolved'`, not an omission.
172
+ */
173
+ export declare const TestCatalogEntrySchema: z.ZodObject<{
174
+ logicalKey: z.ZodString;
175
+ runner: z.ZodString;
176
+ project: z.ZodNullable<z.ZodString>;
177
+ file: z.ZodString;
178
+ titlePath: z.ZodArray<z.ZodString>;
179
+ title: z.ZodString;
180
+ sourceLocation: z.ZodObject<{
181
+ file: z.ZodString;
182
+ line: z.ZodNumber;
183
+ col: z.ZodNumber;
184
+ }, z.core.$strict>;
185
+ parameterIdentity: z.ZodNullable<z.ZodString>;
186
+ sourceDigest: z.ZodString;
187
+ resolutionOrigin: z.ZodOptional<z.ZodEnum<{
188
+ static: "static";
189
+ "native-list": "native-list";
190
+ }>>;
191
+ discoveryStatus: z.ZodEnum<{
192
+ unresolved: "unresolved";
193
+ discovered: "discovered";
194
+ "parse-error": "parse-error";
195
+ }>;
196
+ reconciliation: z.ZodEnum<{
197
+ matched: "matched";
198
+ "static-only": "static-only";
199
+ "list-only": "list-only";
200
+ unavailable: "unavailable";
201
+ }>;
202
+ inferredKind: z.ZodEnum<{
203
+ unknown: "unknown";
204
+ "browser-e2e": "browser-e2e";
205
+ "server-e2e": "server-e2e";
206
+ "api-e2e": "api-e2e";
207
+ unit: "unit";
208
+ integration: "integration";
209
+ component: "component";
210
+ }>;
211
+ kindSignals: z.ZodArray<z.ZodObject<{
212
+ ruleId: z.ZodString;
213
+ evidence: z.ZodString;
214
+ location: z.ZodObject<{
215
+ file: z.ZodString;
216
+ line: z.ZodNumber;
217
+ col: z.ZodNumber;
218
+ }, z.core.$strict>;
219
+ kind: z.ZodEnum<{
220
+ unknown: "unknown";
221
+ "browser-e2e": "browser-e2e";
222
+ "server-e2e": "server-e2e";
223
+ "api-e2e": "api-e2e";
224
+ unit: "unit";
225
+ integration: "integration";
226
+ component: "component";
227
+ }>;
228
+ }, z.core.$strict>>;
229
+ weakSignals: z.ZodArray<z.ZodObject<{
230
+ ruleId: z.ZodString;
231
+ evidence: z.ZodString;
232
+ location: z.ZodObject<{
233
+ file: z.ZodString;
234
+ line: z.ZodNumber;
235
+ col: z.ZodNumber;
236
+ }, z.core.$strict>;
237
+ }, z.core.$strict>>;
238
+ rulesFired: z.ZodArray<z.ZodObject<{
239
+ ruleId: z.ZodString;
240
+ evidence: z.ZodString;
241
+ location: z.ZodObject<{
242
+ file: z.ZodString;
243
+ line: z.ZodNumber;
244
+ col: z.ZodNumber;
245
+ }, z.core.$strict>;
246
+ }, z.core.$strict>>;
247
+ categorySignals: z.ZodArray<z.ZodObject<{
248
+ label: z.ZodString;
249
+ ruleId: z.ZodString;
250
+ location: z.ZodObject<{
251
+ file: z.ZodString;
252
+ line: z.ZodNumber;
253
+ col: z.ZodNumber;
254
+ }, z.core.$strict>;
255
+ }, z.core.$strict>>;
256
+ suppressionSignals: z.ZodArray<z.ZodObject<{
257
+ kind: z.ZodEnum<{
258
+ skip: "skip";
259
+ only: "only";
260
+ fixme: "fixme";
261
+ mock: "mock";
262
+ }>;
263
+ detail: z.ZodString;
264
+ location: z.ZodObject<{
265
+ file: z.ZodString;
266
+ line: z.ZodNumber;
267
+ col: z.ZodNumber;
268
+ }, z.core.$strict>;
269
+ }, z.core.$strict>>;
270
+ unresolvedReason: z.ZodOptional<z.ZodObject<{
271
+ code: z.ZodString;
272
+ detail: z.ZodString;
273
+ }, z.core.$strict>>;
274
+ }, z.core.$strict>;
275
+ /** Inferred test-catalog-entry type. */
276
+ export type TestCatalogEntry = z.infer<typeof TestCatalogEntrySchema>;
277
+ /** One parser failure with its source location (never swallowed). */
278
+ export declare const CatalogParseErrorSchema: z.ZodObject<{
279
+ file: z.ZodString;
280
+ message: z.ZodString;
281
+ location: z.ZodObject<{
282
+ file: z.ZodString;
283
+ line: z.ZodNumber;
284
+ col: z.ZodNumber;
285
+ }, z.core.$strict>;
286
+ }, z.core.$strict>;
287
+ /** Inferred catalog-parse-error type. */
288
+ export type CatalogParseError = z.infer<typeof CatalogParseErrorSchema>;
289
+ /** One runner-level summary line (playwright reconciliation, pytest suites). */
290
+ export declare const RunnerSummarySchema: z.ZodObject<{
291
+ runner: z.ZodString;
292
+ name: z.ZodString;
293
+ status: z.ZodEnum<{
294
+ discovered: "discovered";
295
+ unavailable: "unavailable";
296
+ registered: "registered";
297
+ }>;
298
+ detail: z.ZodString;
299
+ }, z.core.$strict>;
300
+ /** Inferred runner-summary type. */
301
+ export type RunnerSummary = z.infer<typeof RunnerSummarySchema>;
302
+ /**
303
+ * The derived test catalog (plan §5.1). Every case is a row in
304
+ * `entries`; `unresolved` and `parseErrors` are the typed roll-ups of
305
+ * the rows needing attention. `inventoryComplete` captures scan
306
+ * completeness SEPARATELY from classification uncertainty: `unknown`
307
+ * kinds do not make an inventory incomplete, a failed scan does.
308
+ */
309
+ export declare const TestCatalogSchema: z.ZodObject<{
310
+ schemaVersion: z.ZodLiteral<1>;
311
+ entries: z.ZodArray<z.ZodObject<{
312
+ logicalKey: z.ZodString;
313
+ runner: z.ZodString;
314
+ project: z.ZodNullable<z.ZodString>;
315
+ file: z.ZodString;
316
+ titlePath: z.ZodArray<z.ZodString>;
317
+ title: z.ZodString;
318
+ sourceLocation: z.ZodObject<{
319
+ file: z.ZodString;
320
+ line: z.ZodNumber;
321
+ col: z.ZodNumber;
322
+ }, z.core.$strict>;
323
+ parameterIdentity: z.ZodNullable<z.ZodString>;
324
+ sourceDigest: z.ZodString;
325
+ resolutionOrigin: z.ZodOptional<z.ZodEnum<{
326
+ static: "static";
327
+ "native-list": "native-list";
328
+ }>>;
329
+ discoveryStatus: z.ZodEnum<{
330
+ unresolved: "unresolved";
331
+ discovered: "discovered";
332
+ "parse-error": "parse-error";
333
+ }>;
334
+ reconciliation: z.ZodEnum<{
335
+ matched: "matched";
336
+ "static-only": "static-only";
337
+ "list-only": "list-only";
338
+ unavailable: "unavailable";
339
+ }>;
340
+ inferredKind: z.ZodEnum<{
341
+ unknown: "unknown";
342
+ "browser-e2e": "browser-e2e";
343
+ "server-e2e": "server-e2e";
344
+ "api-e2e": "api-e2e";
345
+ unit: "unit";
346
+ integration: "integration";
347
+ component: "component";
348
+ }>;
349
+ kindSignals: z.ZodArray<z.ZodObject<{
350
+ ruleId: z.ZodString;
351
+ evidence: z.ZodString;
352
+ location: z.ZodObject<{
353
+ file: z.ZodString;
354
+ line: z.ZodNumber;
355
+ col: z.ZodNumber;
356
+ }, z.core.$strict>;
357
+ kind: z.ZodEnum<{
358
+ unknown: "unknown";
359
+ "browser-e2e": "browser-e2e";
360
+ "server-e2e": "server-e2e";
361
+ "api-e2e": "api-e2e";
362
+ unit: "unit";
363
+ integration: "integration";
364
+ component: "component";
365
+ }>;
366
+ }, z.core.$strict>>;
367
+ weakSignals: z.ZodArray<z.ZodObject<{
368
+ ruleId: z.ZodString;
369
+ evidence: z.ZodString;
370
+ location: z.ZodObject<{
371
+ file: z.ZodString;
372
+ line: z.ZodNumber;
373
+ col: z.ZodNumber;
374
+ }, z.core.$strict>;
375
+ }, z.core.$strict>>;
376
+ rulesFired: z.ZodArray<z.ZodObject<{
377
+ ruleId: z.ZodString;
378
+ evidence: z.ZodString;
379
+ location: z.ZodObject<{
380
+ file: z.ZodString;
381
+ line: z.ZodNumber;
382
+ col: z.ZodNumber;
383
+ }, z.core.$strict>;
384
+ }, z.core.$strict>>;
385
+ categorySignals: z.ZodArray<z.ZodObject<{
386
+ label: z.ZodString;
387
+ ruleId: z.ZodString;
388
+ location: z.ZodObject<{
389
+ file: z.ZodString;
390
+ line: z.ZodNumber;
391
+ col: z.ZodNumber;
392
+ }, z.core.$strict>;
393
+ }, z.core.$strict>>;
394
+ suppressionSignals: z.ZodArray<z.ZodObject<{
395
+ kind: z.ZodEnum<{
396
+ skip: "skip";
397
+ only: "only";
398
+ fixme: "fixme";
399
+ mock: "mock";
400
+ }>;
401
+ detail: z.ZodString;
402
+ location: z.ZodObject<{
403
+ file: z.ZodString;
404
+ line: z.ZodNumber;
405
+ col: z.ZodNumber;
406
+ }, z.core.$strict>;
407
+ }, z.core.$strict>>;
408
+ unresolvedReason: z.ZodOptional<z.ZodObject<{
409
+ code: z.ZodString;
410
+ detail: z.ZodString;
411
+ }, z.core.$strict>>;
412
+ }, z.core.$strict>>;
413
+ unresolved: z.ZodArray<z.ZodObject<{
414
+ logicalKey: z.ZodString;
415
+ code: z.ZodString;
416
+ detail: z.ZodString;
417
+ location: z.ZodObject<{
418
+ file: z.ZodString;
419
+ line: z.ZodNumber;
420
+ col: z.ZodNumber;
421
+ }, z.core.$strict>;
422
+ }, z.core.$strict>>;
423
+ parseErrors: z.ZodArray<z.ZodObject<{
424
+ file: z.ZodString;
425
+ message: z.ZodString;
426
+ location: z.ZodObject<{
427
+ file: z.ZodString;
428
+ line: z.ZodNumber;
429
+ col: z.ZodNumber;
430
+ }, z.core.$strict>;
431
+ }, z.core.$strict>>;
432
+ inventoryComplete: z.ZodBoolean;
433
+ runnerSummaries: z.ZodArray<z.ZodObject<{
434
+ runner: z.ZodString;
435
+ name: z.ZodString;
436
+ status: z.ZodEnum<{
437
+ discovered: "discovered";
438
+ unavailable: "unavailable";
439
+ registered: "registered";
440
+ }>;
441
+ detail: z.ZodString;
442
+ }, z.core.$strict>>;
443
+ }, z.core.$strict>;
444
+ /** Inferred test-catalog type. */
445
+ export type TestCatalog = z.infer<typeof TestCatalogSchema>;
446
+ /** One catalog roll-up row (inferred, for builders). */
447
+ export type CatalogUnresolved = z.infer<(typeof TestCatalogSchema)['shape']['unresolved']['element']>;
448
+ /** Inputs of the deterministic logical-key derivation (§5.2). */
449
+ export interface LogicalKeyInput {
450
+ /** Runner name, e.g. `playwright`. */
451
+ runner: string;
452
+ /** Runner project, or `null` when none is bound yet. */
453
+ project: string | null;
454
+ /** Repo-root-relative posix file path. */
455
+ file: string;
456
+ /** Full title path (describe stack + title). */
457
+ titlePath: readonly string[];
458
+ }
459
+ /**
460
+ * Derives the deterministic logical key for a test (§5.2): runner,
461
+ * project (`-` when unbound), repo-relative file, then the full title
462
+ * path joined with `>`. Pure string shaping — stable across line moves
463
+ * and comment edits (line numbers are never identity input).
464
+ *
465
+ * Args:
466
+ * input: runner, project, file, and title path.
467
+ *
468
+ * Returns:
469
+ * string: e.g. `playwright:chromium:e2e/accounts.spec.ts:Accounts>creates an account`.
470
+ */
471
+ export declare function deriveLogicalKey(input: LogicalKeyInput): string;
472
+ //# sourceMappingURL=test-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-catalog.d.ts","sourceRoot":"","sources":["../../src/schemas/test-catalog.ts"],"names":[],"mappings":"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"}