@gate-forge/pack-playwright 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.
- package/LICENSE +202 -0
- package/bin/gateforge-witness.js +40 -0
- package/dist/attestation/proxy.d.ts +40 -0
- package/dist/attestation/proxy.d.ts.map +1 -0
- package/dist/attestation/proxy.js +78 -0
- package/dist/attestation/proxy.js.map +1 -0
- package/dist/constants.d.ts +130 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +138 -0
- package/dist/constants.js.map +1 -0
- package/dist/discovery/adapters.d.ts +167 -0
- package/dist/discovery/adapters.d.ts.map +1 -0
- package/dist/discovery/adapters.js +276 -0
- package/dist/discovery/adapters.js.map +1 -0
- package/dist/discovery/discover.d.ts +57 -0
- package/dist/discovery/discover.d.ts.map +1 -0
- package/dist/discovery/discover.js +544 -0
- package/dist/discovery/discover.js.map +1 -0
- package/dist/discovery/index.d.ts +15 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +15 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/inference.d.ts +63 -0
- package/dist/discovery/inference.d.ts.map +1 -0
- package/dist/discovery/inference.js +173 -0
- package/dist/discovery/inference.js.map +1 -0
- package/dist/discovery/pytest-adapter.d.ts +205 -0
- package/dist/discovery/pytest-adapter.d.ts.map +1 -0
- package/dist/discovery/pytest-adapter.js +548 -0
- package/dist/discovery/pytest-adapter.js.map +1 -0
- package/dist/discovery/reconcile.d.ts +106 -0
- package/dist/discovery/reconcile.d.ts.map +1 -0
- package/dist/discovery/reconcile.js +268 -0
- package/dist/discovery/reconcile.js.map +1 -0
- package/dist/discovery/runner-env.d.ts +80 -0
- package/dist/discovery/runner-env.d.ts.map +1 -0
- package/dist/discovery/runner-env.js +139 -0
- package/dist/discovery/runner-env.js.map +1 -0
- package/dist/discovery/static-discovery.d.ts +121 -0
- package/dist/discovery/static-discovery.d.ts.map +1 -0
- package/dist/discovery/static-discovery.js +1028 -0
- package/dist/discovery/static-discovery.js.map +1 -0
- package/dist/discovery/supervised-run.d.ts +110 -0
- package/dist/discovery/supervised-run.d.ts.map +1 -0
- package/dist/discovery/supervised-run.js +328 -0
- package/dist/discovery/supervised-run.js.map +1 -0
- package/dist/discovery/trusted-config.d.ts +103 -0
- package/dist/discovery/trusted-config.d.ts.map +1 -0
- package/dist/discovery/trusted-config.js +117 -0
- package/dist/discovery/trusted-config.js.map +1 -0
- package/dist/fixture/evidence.d.ts +191 -0
- package/dist/fixture/evidence.d.ts.map +1 -0
- package/dist/fixture/evidence.js +366 -0
- package/dist/fixture/evidence.js.map +1 -0
- package/dist/fixture/fixture.d.ts +37 -0
- package/dist/fixture/fixture.d.ts.map +1 -0
- package/dist/fixture/fixture.js +38 -0
- package/dist/fixture/fixture.js.map +1 -0
- package/dist/fixture/witness-client.d.ts +164 -0
- package/dist/fixture/witness-client.d.ts.map +1 -0
- package/dist/fixture/witness-client.js +253 -0
- package/dist/fixture/witness-client.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +16 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +21 -0
- package/dist/json.js.map +1 -0
- package/dist/reporter/ledger.d.ts +105 -0
- package/dist/reporter/ledger.d.ts.map +1 -0
- package/dist/reporter/ledger.js +197 -0
- package/dist/reporter/ledger.js.map +1 -0
- package/dist/reporter/reporter.cjs +105 -0
- package/dist/reporter/reporter.cjs.map +1 -0
- package/dist/reporter/reporter.d.cts +35 -0
- package/dist/reporter/reporter.d.cts.map +1 -0
- package/dist/reporter/reporter.d.ts +167 -0
- package/dist/reporter/reporter.d.ts.map +1 -0
- package/dist/reporter/reporter.js +673 -0
- package/dist/reporter/reporter.js.map +1 -0
- package/dist/setup.d.ts +49 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +167 -0
- package/dist/setup.js.map +1 -0
- package/dist/supervisor/client.d.ts +73 -0
- package/dist/supervisor/client.d.ts.map +1 -0
- package/dist/supervisor/client.js +164 -0
- package/dist/supervisor/client.js.map +1 -0
- package/dist/supervisor/drain.d.ts +45 -0
- package/dist/supervisor/drain.d.ts.map +1 -0
- package/dist/supervisor/drain.js +235 -0
- package/dist/supervisor/drain.js.map +1 -0
- package/dist/supervisor/index.d.ts +16 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +13 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/supervisor/spool.d.ts +137 -0
- package/dist/supervisor/spool.d.ts.map +1 -0
- package/dist/supervisor/spool.js +263 -0
- package/dist/supervisor/spool.js.map +1 -0
- package/dist/surface.d.ts +134 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +139 -0
- package/dist/surface.js.map +1 -0
- package/dist/witness/adapter-registry.d.ts +38 -0
- package/dist/witness/adapter-registry.d.ts.map +1 -0
- package/dist/witness/adapter-registry.js +158 -0
- package/dist/witness/adapter-registry.js.map +1 -0
- package/dist/witness/bin.d.ts +21 -0
- package/dist/witness/bin.d.ts.map +1 -0
- package/dist/witness/bin.js +172 -0
- package/dist/witness/bin.js.map +1 -0
- package/dist/witness/browser.d.ts +173 -0
- package/dist/witness/browser.d.ts.map +1 -0
- package/dist/witness/browser.js +580 -0
- package/dist/witness/browser.js.map +1 -0
- package/dist/witness/classifications.d.ts +42 -0
- package/dist/witness/classifications.d.ts.map +1 -0
- package/dist/witness/classifications.js +87 -0
- package/dist/witness/classifications.js.map +1 -0
- package/dist/witness/env-attestation.d.ts +98 -0
- package/dist/witness/env-attestation.d.ts.map +1 -0
- package/dist/witness/env-attestation.js +202 -0
- package/dist/witness/env-attestation.js.map +1 -0
- package/dist/witness/loopback-pins.d.ts +79 -0
- package/dist/witness/loopback-pins.d.ts.map +1 -0
- package/dist/witness/loopback-pins.js +244 -0
- package/dist/witness/loopback-pins.js.map +1 -0
- package/dist/witness/server.d.ts +34 -0
- package/dist/witness/server.d.ts.map +1 -0
- package/dist/witness/server.js +2539 -0
- package/dist/witness/server.js.map +1 -0
- package/dist/witness/types.d.ts +643 -0
- package/dist/witness/types.d.ts.map +1 -0
- package/dist/witness/types.js +2 -0
- package/dist/witness/types.js.map +1 -0
- package/package.json +64 -0
- package/python/gateforge_persistence_intents.py +100 -0
|
@@ -0,0 +1,643 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Witness-side data shapes (pin #7 wire + adapter contract, pin #8).
|
|
3
|
+
*/
|
|
4
|
+
import type { Server } from 'node:http';
|
|
5
|
+
import type { EvidenceRecord, TracedSession, TrustTier } from '@gate-forge/core';
|
|
6
|
+
/**
|
|
7
|
+
* Supervisor-issued session credential (plan Phase 1, work item 2): the
|
|
8
|
+
* trusted supervisor (the Playwright reporter process) opens one session
|
|
9
|
+
* per started test and the worker-side fixture RESOLVES it by the exact
|
|
10
|
+
* (workerIndex, testId) pair. The session token is issued by the witness,
|
|
11
|
+
* never derivable by the suite: submissions without a valid OPEN session
|
|
12
|
+
* are rejected fail-closed, so a suite-supplied testId or annotation
|
|
13
|
+
* alone cannot mint records for an arbitrary session.
|
|
14
|
+
*/
|
|
15
|
+
export interface SessionCredential {
|
|
16
|
+
/** Witness-issued session id (UUID). */
|
|
17
|
+
sessionId: string;
|
|
18
|
+
/** Per-session secret; required on every submission. */
|
|
19
|
+
sessionToken: string;
|
|
20
|
+
/** The supervisor-registered testId (records are forced onto it). */
|
|
21
|
+
testId: string;
|
|
22
|
+
/** The worker the session is bound to. */
|
|
23
|
+
workerIndex: number;
|
|
24
|
+
/**
|
|
25
|
+
* The session's DEDICATED observation-proxy origin (its own loopback
|
|
26
|
+
* port), when the run wires an observation proxy: the worker's browser
|
|
27
|
+
* uses this origin for the whole test, so every request on it —
|
|
28
|
+
* absolute paths included — is attributed to THIS session. Null when
|
|
29
|
+
* no observation proxy is active (nothing to attribute).
|
|
30
|
+
*/
|
|
31
|
+
proxyUrl: string | null;
|
|
32
|
+
/**
|
|
33
|
+
* The supervisor-registered obligation claims for this test (Phase 4
|
|
34
|
+
* claim injection): the merged native-annotation + sidecar-mapping
|
|
35
|
+
* claims the orchestrating CLI resolved from the tracked mappings and
|
|
36
|
+
* the supervisor carried on the session-open path. Declarations only —
|
|
37
|
+
* they route evidence onto obligation identities and never satisfy
|
|
38
|
+
* anything by themselves; every record is still forced onto the
|
|
39
|
+
* supervisor-registered session/test identity and graded from
|
|
40
|
+
* witnessed evidence. Empty/absent for runs without mappings.
|
|
41
|
+
*/
|
|
42
|
+
claims?: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* `POST /records` body (pin #7, Phase 1 extension): a test-side primitive
|
|
46
|
+
* submitting UI-observed evidence. `claimId` is the claimed obligation id —
|
|
47
|
+
* the annotation's `<resourceId>:<contract>` — and `testId` binds the record
|
|
48
|
+
* to the test that produced the claim. Phase 1: `sessionId` +
|
|
49
|
+
* `sessionToken` carry the supervisor-issued session credential; the
|
|
50
|
+
* witness rejects submissions without a valid OPEN session and forces the
|
|
51
|
+
* record's testId onto the session's supervisor-registered value.
|
|
52
|
+
*/
|
|
53
|
+
export interface RecordsRequest {
|
|
54
|
+
claimId: string;
|
|
55
|
+
kind: string;
|
|
56
|
+
payload: unknown;
|
|
57
|
+
testId: string;
|
|
58
|
+
sessionId: string;
|
|
59
|
+
sessionToken: string;
|
|
60
|
+
}
|
|
61
|
+
/** `POST /records` response (pin #7, minimal wire contract). */
|
|
62
|
+
export interface RecordsResponse {
|
|
63
|
+
recordId: string;
|
|
64
|
+
trust: TrustTier;
|
|
65
|
+
runId: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `POST /witness/persistence` body (pin #7): the fixture asks the
|
|
69
|
+
* engine-side witness to run the resource's reviewed adapter (GET-only)
|
|
70
|
+
* for one entity. The issued record carries the ENGINE OBSERVATION
|
|
71
|
+
* (`found`, adapter-normalized `fields`, and a `before` link when a
|
|
72
|
+
* pre-observation was consumed) — expectations NEVER come from the
|
|
73
|
+
* suite (audit round 5).
|
|
74
|
+
*
|
|
75
|
+
* `preObservationId` references a witness-issued pre-observation (`POST
|
|
76
|
+
* /witness/pre-observation`): an id-set snapshot for create
|
|
77
|
+
* postconditions (`before: {entityAbsent}`), or an entity-fields
|
|
78
|
+
* snapshot for update postconditions (`before: {found, fields}`).
|
|
79
|
+
*/
|
|
80
|
+
export interface PersistenceRequest {
|
|
81
|
+
resourceId: string;
|
|
82
|
+
entityId: unknown;
|
|
83
|
+
preObservationId?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* `POST /witness/pre-observation` body: an engine-side snapshot taken
|
|
87
|
+
* BEFORE a claimed action. With `entityId` the witness snapshots that
|
|
88
|
+
* entity's observed fields (update postconditions); without it, the
|
|
89
|
+
* resource's observed id set (create postconditions). Phase 1: requires
|
|
90
|
+
* the supervisor-issued session credential.
|
|
91
|
+
*/
|
|
92
|
+
export interface PreObservationRequest {
|
|
93
|
+
resourceId: string;
|
|
94
|
+
testId: string;
|
|
95
|
+
claimId: string;
|
|
96
|
+
entityId?: unknown;
|
|
97
|
+
sessionId: string;
|
|
98
|
+
sessionToken: string;
|
|
99
|
+
}
|
|
100
|
+
/** `POST /witness/pre-observation` response. */
|
|
101
|
+
export interface PreObservationResponse {
|
|
102
|
+
observationId: string;
|
|
103
|
+
observed: number;
|
|
104
|
+
}
|
|
105
|
+
/** `POST /witness/persistence` response (pin #7). */
|
|
106
|
+
export interface PersistenceResponse {
|
|
107
|
+
recordId: string;
|
|
108
|
+
runId: string;
|
|
109
|
+
verdictRelevant: {
|
|
110
|
+
found: boolean;
|
|
111
|
+
fieldsMatch: boolean;
|
|
112
|
+
mismatches?: string[];
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* `POST /runs/server-e2e-declarations` body (SUPERVISOR ONLY): the
|
|
117
|
+
* obligation ids the trusted mapping layer declared kind `server-e2e`.
|
|
118
|
+
* Registration is a PRE-run fact (like the expected set): bound once,
|
|
119
|
+
* identical re-registration idempotent, any change or late registration
|
|
120
|
+
* refused — the witness never stamps `channel: 'server'` records for
|
|
121
|
+
* obligations outside this set, so the suite cannot steer an intent onto
|
|
122
|
+
* a browser-kind obligation and a bearer of an intent can never
|
|
123
|
+
* self-verify.
|
|
124
|
+
*/
|
|
125
|
+
export interface ServerE2eDeclarationsRequest {
|
|
126
|
+
obligations: readonly string[];
|
|
127
|
+
}
|
|
128
|
+
/** `POST /runs/server-e2e-declarations` response. */
|
|
129
|
+
export interface ServerE2eDeclarationsResponse {
|
|
130
|
+
bound: true;
|
|
131
|
+
count: number;
|
|
132
|
+
obligations: string[];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* `POST /witness/server-persistence` body (SUPERVISOR ONLY — the drain
|
|
136
|
+
* forwards it with the verifier key; the suite can only write intent
|
|
137
|
+
* spool lines, never call this): one persistence claim intent, already
|
|
138
|
+
* drained from the runner-side intents spool.
|
|
139
|
+
*
|
|
140
|
+
* - create: `pre` (expect-absent) BEFORE the mutation stores a witness
|
|
141
|
+
* pre-observation; `post` (expect-present) probes, consumes it, and
|
|
142
|
+
* stamps `before: {entityAbsent}` into the record — the same shape the
|
|
143
|
+
* browser path grades.
|
|
144
|
+
* - update: `pre` (expect-present) snapshots the entity's fields;
|
|
145
|
+
* `post` consumes it into `before: {found, fields}` (the update delta
|
|
146
|
+
* grades against the classification's updateableFields in the engine).
|
|
147
|
+
* - read: `post` (expect-present) only. delete: `post` (expect-absent
|
|
148
|
+
* for hard; expect-present for archive states) only.
|
|
149
|
+
*
|
|
150
|
+
* `sequence` is strictly increasing per claimId; a replayed or
|
|
151
|
+
* out-of-order line resolves to a typed failure (fail closed), so no
|
|
152
|
+
* bearer of an intent can re-drive a stale observation.
|
|
153
|
+
*/
|
|
154
|
+
export interface ServerPersistenceIntentRequest {
|
|
155
|
+
resourceId: string;
|
|
156
|
+
/** Obligation id `<resourceId>:persistence:<op>` the intent serves. */
|
|
157
|
+
claimId: string;
|
|
158
|
+
operation: 'create' | 'read' | 'update' | 'delete';
|
|
159
|
+
phase: 'pre' | 'post';
|
|
160
|
+
intent: 'expect-present' | 'expect-absent';
|
|
161
|
+
/** The entity key: scalar for single-column PKs, column-keyed object for composite. */
|
|
162
|
+
key: unknown;
|
|
163
|
+
/** Strictly increasing per claimId (replay → typed failure). */
|
|
164
|
+
sequence: number;
|
|
165
|
+
/** The claiming test's id (diagnostic attribution; the claim join key). */
|
|
166
|
+
testId: string;
|
|
167
|
+
}
|
|
168
|
+
/** `POST /witness/server-persistence` response for a `pre` intent. */
|
|
169
|
+
export interface ServerPreObservationResponse {
|
|
170
|
+
resolved: 'pre';
|
|
171
|
+
found: boolean;
|
|
172
|
+
}
|
|
173
|
+
/** `POST /witness/server-persistence` response for a `post` intent. */
|
|
174
|
+
export interface ServerPersistenceResponse {
|
|
175
|
+
recordId: string;
|
|
176
|
+
runId: string;
|
|
177
|
+
trust: TrustTier;
|
|
178
|
+
channel: 'server';
|
|
179
|
+
verdictRelevant: {
|
|
180
|
+
found: boolean;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/** `POST /sessions/open` body (Phase 1; Phase 4 adds claim injection). */
|
|
184
|
+
export interface SessionOpenRequest {
|
|
185
|
+
/** The test's runner-assigned id (same id the reporter writes to claims.json). */
|
|
186
|
+
testId: string;
|
|
187
|
+
/** The worker the test runs on (binds worker → session). */
|
|
188
|
+
workerIndex: number;
|
|
189
|
+
/**
|
|
190
|
+
* Supervisor-carried identity of the started test (enforcement-review
|
|
191
|
+
* fix 2a/3): repo-relative file + title path + project, as drained from
|
|
192
|
+
* the runner's lifecycle spool. When an expected set is registered,
|
|
193
|
+
* THIS identity decides membership — a test outside the registered set
|
|
194
|
+
* is refused. Optional only for runs without a registered expected set.
|
|
195
|
+
*/
|
|
196
|
+
file?: string;
|
|
197
|
+
titlePath?: readonly string[];
|
|
198
|
+
project?: string | null;
|
|
199
|
+
/**
|
|
200
|
+
* Phase 4 claim injection: the mapped obligation claims this test must
|
|
201
|
+
* land its evidence on (resolved from the sidecar/native mappings by
|
|
202
|
+
* the orchestrating CLI and carried by the supervisor on the
|
|
203
|
+
* session-open path). Obligation-id-shaped, deduplicated by the
|
|
204
|
+
* witness; empty/absent for annotation-claimed tests, which keep
|
|
205
|
+
* working unchanged. Claims remain DECLARATIONS: they never satisfy
|
|
206
|
+
* anything by themselves.
|
|
207
|
+
*/
|
|
208
|
+
claims?: readonly string[];
|
|
209
|
+
}
|
|
210
|
+
/** `POST /sessions/open` response: the session binding (runId, sessionId, testId, worker). */
|
|
211
|
+
export interface SessionOpenResponse extends SessionCredential {
|
|
212
|
+
/** Witness-monotonic tick at open (the session clock origin). */
|
|
213
|
+
openedTick: number;
|
|
214
|
+
}
|
|
215
|
+
/** `POST /sessions/close` body: the supervisor seals the session with the observed outcome. */
|
|
216
|
+
export interface SessionCloseRequest {
|
|
217
|
+
sessionId: string;
|
|
218
|
+
/** The observed test outcome (e.g. 'passed' | 'failed'); recorded, never graded here. */
|
|
219
|
+
outcome?: string;
|
|
220
|
+
}
|
|
221
|
+
/** `POST /sessions/close` response. */
|
|
222
|
+
export interface SessionCloseResponse {
|
|
223
|
+
sealed: true;
|
|
224
|
+
}
|
|
225
|
+
/** `POST /sessions/resolve` body: the worker proves WHICH open session it runs under. */
|
|
226
|
+
export interface SessionResolveRequest {
|
|
227
|
+
testId: string;
|
|
228
|
+
workerIndex: number;
|
|
229
|
+
}
|
|
230
|
+
/** `POST /sessions/resolve` response (a resolvable credential, proxy prefix included). */
|
|
231
|
+
export interface SessionResolveResponse extends SessionCredential {
|
|
232
|
+
openedTick: number;
|
|
233
|
+
}
|
|
234
|
+
/** `POST /sessions/intervals/open` body: the fixture marks a UI-action observation interval. */
|
|
235
|
+
export interface IntervalOpenRequest {
|
|
236
|
+
sessionId: string;
|
|
237
|
+
sessionToken: string;
|
|
238
|
+
/** The UI operation the interval covers ('create' | 'read' | 'update' | 'delete'). */
|
|
239
|
+
operation: string;
|
|
240
|
+
}
|
|
241
|
+
/** `POST /sessions/intervals/open` response. */
|
|
242
|
+
export interface IntervalOpenResponse {
|
|
243
|
+
intervalId: string;
|
|
244
|
+
startTick: number;
|
|
245
|
+
}
|
|
246
|
+
/** `POST /sessions/intervals/close` body. */
|
|
247
|
+
export interface IntervalCloseRequest {
|
|
248
|
+
sessionId: string;
|
|
249
|
+
sessionToken: string;
|
|
250
|
+
intervalId: string;
|
|
251
|
+
}
|
|
252
|
+
/** `POST /sessions/intervals/close` response. */
|
|
253
|
+
export interface IntervalCloseResponse {
|
|
254
|
+
startTick: number;
|
|
255
|
+
endTick: number;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* `POST /browser/surface` body (plan Phase 1 item 4): the worker-side
|
|
259
|
+
* fixture registers the consumer-declared surface descriptor for one
|
|
260
|
+
* open session. The descriptor's selectors are locators only — the
|
|
261
|
+
* engine verifies every outcome itself. The driven ORIGIN is never part
|
|
262
|
+
* of this body (a present `appBaseUrl` is rejected): the engine drives
|
|
263
|
+
* exactly the provisioned attested subject from trusted witness
|
|
264
|
+
* configuration. Requires the supervisor-issued session credential on
|
|
265
|
+
* an OPEN session; the record's testId is forced onto the session's
|
|
266
|
+
* value.
|
|
267
|
+
*/
|
|
268
|
+
export interface BrowserSurfaceRequest {
|
|
269
|
+
sessionId: string;
|
|
270
|
+
sessionToken: string;
|
|
271
|
+
testId: string;
|
|
272
|
+
/** The consumer-declared surface descriptor (validated engine-side). */
|
|
273
|
+
surface: unknown;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* `POST /browser/action` body: perform ONE constrained surface
|
|
277
|
+
* operation on the session's engine-owned page and issue
|
|
278
|
+
* engine-observed records for it.
|
|
279
|
+
*/
|
|
280
|
+
export interface BrowserActionRequest {
|
|
281
|
+
sessionId: string;
|
|
282
|
+
sessionToken: string;
|
|
283
|
+
testId: string;
|
|
284
|
+
/** Obligation ids to issue the engine-observed records under. */
|
|
285
|
+
claimIds: string[];
|
|
286
|
+
/** The constrained operation to perform. */
|
|
287
|
+
operation: 'create' | 'read' | 'update' | 'delete';
|
|
288
|
+
/** Entered input (create/update); target entity (read/update/delete). */
|
|
289
|
+
fields?: Record<string, string>;
|
|
290
|
+
entityId?: string;
|
|
291
|
+
}
|
|
292
|
+
/** `POST /browser/action` response: the engine's own observation. */
|
|
293
|
+
export interface BrowserActionResponse {
|
|
294
|
+
/** Entity id OBSERVED from the rendered list (never declared). */
|
|
295
|
+
entityId: string;
|
|
296
|
+
/** The exact input values the engine typed. */
|
|
297
|
+
enteredFields: Record<string, string>;
|
|
298
|
+
/** The rendered fields the engine read back. */
|
|
299
|
+
renderedFields: Record<string, string>;
|
|
300
|
+
/** The app response status the engine captured for the mutation. */
|
|
301
|
+
appStatus: number;
|
|
302
|
+
/** Engine-side pre-observation id (create/update; consumed by persistence verify). */
|
|
303
|
+
preObservationId: string | null;
|
|
304
|
+
/** Record ids the engine issued for this action (per claim). */
|
|
305
|
+
recordIds: string[];
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* `POST /browser/visible` body: re-read the rendered result for the
|
|
309
|
+
* engine-observed entity on the session's engine page and issue
|
|
310
|
+
* engine-observed visible-result records.
|
|
311
|
+
*/
|
|
312
|
+
export interface BrowserVisibleRequest {
|
|
313
|
+
sessionId: string;
|
|
314
|
+
sessionToken: string;
|
|
315
|
+
testId: string;
|
|
316
|
+
/** Obligation ids to issue the engine-observed records under. */
|
|
317
|
+
claimIds: string[];
|
|
318
|
+
/** The engine-observed entity id (must match the action's). */
|
|
319
|
+
entityId: string;
|
|
320
|
+
/** The original action (decides row vs form readback). */
|
|
321
|
+
operation: 'create' | 'read' | 'update' | 'delete';
|
|
322
|
+
}
|
|
323
|
+
/** `POST /browser/visible` response. */
|
|
324
|
+
export interface BrowserVisibleResponse {
|
|
325
|
+
entityId: string;
|
|
326
|
+
/** The rendered fields the engine read. */
|
|
327
|
+
fields: Record<string, string>;
|
|
328
|
+
/** Record ids the engine issued (per claim). */
|
|
329
|
+
recordIds: string[];
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Witness-held session state (plan Phase 1). Created only by
|
|
333
|
+
* `POST /sessions/open` (the trusted supervisor, verifier-key
|
|
334
|
+
* authenticated — enforcement-review fix 3); sealed by
|
|
335
|
+
* `POST /sessions/close` (same authority). Sealed sessions answer no
|
|
336
|
+
* submission, no interval, and no resolve call.
|
|
337
|
+
*/
|
|
338
|
+
export interface TestSession {
|
|
339
|
+
/** Witness-issued session id (UUID). */
|
|
340
|
+
sessionId: string;
|
|
341
|
+
/** Per-session secret required on every submission. */
|
|
342
|
+
token: string;
|
|
343
|
+
/** The supervisor-registered testId (every record is forced onto it). */
|
|
344
|
+
testId: string;
|
|
345
|
+
/** The worker the session is bound to (one OPEN session per worker). */
|
|
346
|
+
workerIndex: number;
|
|
347
|
+
/** `open` accepts submissions; `sealed` rejects everything (fail closed). */
|
|
348
|
+
status: 'open' | 'sealed';
|
|
349
|
+
/** Witness-monotonic tick at open. */
|
|
350
|
+
openedTick: number;
|
|
351
|
+
/** Witness-monotonic tick at seal (null while open). */
|
|
352
|
+
sealedTick: number | null;
|
|
353
|
+
/** The outcome the supervisor observed at close (recorded, never graded). */
|
|
354
|
+
outcome: string | null;
|
|
355
|
+
/**
|
|
356
|
+
* UI-action observation intervals keyed by intervalId. End ticks are
|
|
357
|
+
* null while the interval is open. Exchanges are consumable as this
|
|
358
|
+
* session's evidence only when their tick falls inside one of these
|
|
359
|
+
* intervals — setup traffic outside every interval is never credited.
|
|
360
|
+
*/
|
|
361
|
+
intervals: Map<string, {
|
|
362
|
+
startTick: number;
|
|
363
|
+
endTick: number | null;
|
|
364
|
+
operation: string;
|
|
365
|
+
}>;
|
|
366
|
+
/**
|
|
367
|
+
* The session's dedicated observation-proxy origin when the run wires
|
|
368
|
+
* an observation proxy; null otherwise.
|
|
369
|
+
*/
|
|
370
|
+
proxyUrl: string | null;
|
|
371
|
+
/** The dedicated proxy server (closed when the session seals). */
|
|
372
|
+
proxyServer: Server | null;
|
|
373
|
+
/**
|
|
374
|
+
* Phase 4 claim injection: the mapped obligation claims the supervisor
|
|
375
|
+
* registered at open (sorted, deduplicated, obligation-id-shaped;
|
|
376
|
+
* empty for annotation-only tests). Echoed in the session view so the
|
|
377
|
+
* supervisor writes claims.json from what the witness registered.
|
|
378
|
+
*/
|
|
379
|
+
claims: string[];
|
|
380
|
+
/**
|
|
381
|
+
* The registered expected-set identity this session was minted for
|
|
382
|
+
* (enforcement-review fix 2a/2b); null when the run has no registered
|
|
383
|
+
* expected set. Groups the execution trace by expected test.
|
|
384
|
+
*/
|
|
385
|
+
registered: {
|
|
386
|
+
testId: string | null;
|
|
387
|
+
project: string | null;
|
|
388
|
+
file: string;
|
|
389
|
+
titlePath: string[];
|
|
390
|
+
} | null;
|
|
391
|
+
/**
|
|
392
|
+
* Witness-side activity bound to this session: a monotonically
|
|
393
|
+
* increasing count of everything the witness itself observed under
|
|
394
|
+
* the session — ledger records issued with the session credential,
|
|
395
|
+
* recorded UI-action intervals, consumed engine-observed exchanges,
|
|
396
|
+
* and pre-observations. Diagnostic corroboration only (execution
|
|
397
|
+
* authority is the supervisor-observed trusted lifecycle).
|
|
398
|
+
*/
|
|
399
|
+
activity: number;
|
|
400
|
+
/**
|
|
401
|
+
* Engine-browser surface registration (plan Phase 1 item 4): the
|
|
402
|
+
* validated consumer descriptor the engine drives for this session.
|
|
403
|
+
* The driven ORIGIN is never stored here — it resolves from trusted
|
|
404
|
+
* witness configuration (`targetBaseUrl`) on every call, so a
|
|
405
|
+
* suite-named frontend can never become the engine target.
|
|
406
|
+
*/
|
|
407
|
+
engineSurface: {
|
|
408
|
+
surface: Record<string, unknown>;
|
|
409
|
+
} | null;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* One expected test registered by the supervisor BEFORE the run
|
|
413
|
+
* (enforcement-review fix 2a). Identity is (project, file, titlePath);
|
|
414
|
+
* `testId` is diagnostic (runner-assigned ids are not stable across
|
|
415
|
+
* enumeration and execution).
|
|
416
|
+
*/
|
|
417
|
+
export interface ExpectedTestRegistration {
|
|
418
|
+
/** The runner-assigned test id, when enumeration bound one. */
|
|
419
|
+
testId?: string | null;
|
|
420
|
+
/** Runner project, or null when the runner reports none. */
|
|
421
|
+
project: string | null;
|
|
422
|
+
/** Repo-relative posix file (the identity join key). */
|
|
423
|
+
file: string;
|
|
424
|
+
/** Full title path (the identity join key). */
|
|
425
|
+
titlePath: readonly string[];
|
|
426
|
+
}
|
|
427
|
+
/** `POST /runs/expected-set` body (SUPERVISOR ONLY). */
|
|
428
|
+
export interface ExpectedSetRequest {
|
|
429
|
+
/** The expected tests, fixed before the run. */
|
|
430
|
+
tests: readonly ExpectedTestRegistration[];
|
|
431
|
+
}
|
|
432
|
+
/** `POST /runs/expected-set` response. */
|
|
433
|
+
export interface ExpectedSetResponse {
|
|
434
|
+
/** The set is bound to this run. */
|
|
435
|
+
bound: true;
|
|
436
|
+
/** Domain-separated digest over the registered set. */
|
|
437
|
+
enumerationDigest: string;
|
|
438
|
+
/** Number of registered expected tests. */
|
|
439
|
+
count: number;
|
|
440
|
+
}
|
|
441
|
+
/** `GET /runs/execution-trace` response (SUPERVISOR ONLY; fix 2b). */
|
|
442
|
+
export interface ExecutionTraceResponse {
|
|
443
|
+
/** The digest of the registered expected set (null when none). */
|
|
444
|
+
enumerationDigest: string | null;
|
|
445
|
+
/** Per expected test, every session the witness recorded. */
|
|
446
|
+
tests: Array<{
|
|
447
|
+
testId: string | null;
|
|
448
|
+
project: string | null;
|
|
449
|
+
file: string;
|
|
450
|
+
titlePath: string[];
|
|
451
|
+
sessions: TracedSession[];
|
|
452
|
+
}>;
|
|
453
|
+
}
|
|
454
|
+
/** Witness runtime configuration (env-derived by the bin, explicit in tests). */
|
|
455
|
+
export interface WitnessOptions {
|
|
456
|
+
/**
|
|
457
|
+
* ADR 0004 D7 (plan §8 / D1): when set, the witness also starts a
|
|
458
|
+
* loopback reverse proxy forwarding to this base URL and records
|
|
459
|
+
* every forwarded request as an engine observation (the runtime HTTP
|
|
460
|
+
* evidence channel). Transport-only: the observation proves the
|
|
461
|
+
* witness observed an HTTP exchange; test attribution is
|
|
462
|
+
* suite-claimed. Must be loopback.
|
|
463
|
+
*/
|
|
464
|
+
proxyTarget?: string;
|
|
465
|
+
/**
|
|
466
|
+
* Observation-proxy mount prefix (with `proxyTarget`; e.g. `/api`).
|
|
467
|
+
*
|
|
468
|
+
* WHY this is an explicit deployment-topology declaration (same
|
|
469
|
+
* philosophy as `urlBuilders[].base`): in a real deployment the
|
|
470
|
+
* browser reaches the backend THROUGH the frontend — a dev proxy or
|
|
471
|
+
* edge serves `/api/ops/...` while the backend route is `/ops/...`.
|
|
472
|
+
* Whether such a prefix exists is a property of the deployment the
|
|
473
|
+
* engine cannot derive from source, and guessing wrong would silently
|
|
474
|
+
* mismatch obligation identities. When set, the observation proxy
|
|
475
|
+
* forwards the STRIPPED path to the proxy target AND records the
|
|
476
|
+
* STRIPPED path in observation records, so observations match the
|
|
477
|
+
* backend-derived obligation identities the suite claims
|
|
478
|
+
* (`evidence.http.observe({path: '/ops/x'})`). Requests outside the
|
|
479
|
+
* prefix pass through and are recorded unstripped. Absent/null strips
|
|
480
|
+
* nothing — forwarding and recording stay byte-identical to an
|
|
481
|
+
* unmounted proxy.
|
|
482
|
+
*/
|
|
483
|
+
mountPath?: string | null;
|
|
484
|
+
/** Run manifest identity (pin #4). */
|
|
485
|
+
runId: string;
|
|
486
|
+
/** Per-run token; every call must carry `x-gateforge-run: <token>`. */
|
|
487
|
+
token: string;
|
|
488
|
+
/**
|
|
489
|
+
* Verifier key for the attestation surface (authenticated
|
|
490
|
+
* `POST /run-context` binding, `GET /ledger-attestation`, and the
|
|
491
|
+
* manifest v2 `attestation` envelope): shared by the orchestrator
|
|
492
|
+
* with the witness and the evaluating CLI, NEVER with the tested
|
|
493
|
+
* suite. When absent the witness serves no attestation and its
|
|
494
|
+
* manifest append stays unauthenticated (downstream evaluation fails
|
|
495
|
+
* closed for witnessed records). Environment ONLY (see
|
|
496
|
+
* `witness/bin.ts`) — never argv, stdout, state files, or suite env.
|
|
497
|
+
*/
|
|
498
|
+
verifierKey?: string | null;
|
|
499
|
+
/** Run-state dir; the witness appends its issued recordIds to manifest.json at shutdown. */
|
|
500
|
+
stateDir?: string | null;
|
|
501
|
+
/** Directory of reviewed `.mjs` adapters (default `.gateforge/adapters`). */
|
|
502
|
+
adaptersDir?: string | null;
|
|
503
|
+
/**
|
|
504
|
+
* Operator-issued credential the witness presents on its OWN engine-side
|
|
505
|
+
* adapter reads (GF-10 mediation; dogfood deployment, 2026-09-05/07).
|
|
506
|
+
*
|
|
507
|
+
* WHY: adapters perform GET-only reads of the app's own collection
|
|
508
|
+
* routes to observe persisted state, and those routes authenticate —
|
|
509
|
+
* an unauthenticated loopback read is a 401, so the engine could not
|
|
510
|
+
* observe state at all. The credential is issued by the DEPLOYMENT
|
|
511
|
+
* OPERATOR to the WITNESS ONLY (env `GATEFORGE_ADAPTER_READ_AUTHORIZATION`
|
|
512
|
+
* or `--adapter-read-authorization`), never to the tested suite, and is
|
|
513
|
+
* a read-only service principal of the same trust class as the verifier
|
|
514
|
+
* key. When unset, adapter reads stay unauthenticated (previous
|
|
515
|
+
* behavior) and protected collections simply fail closed with 401/409.
|
|
516
|
+
*/
|
|
517
|
+
adapterReadAuthorization?: string | null;
|
|
518
|
+
/** Classifications document path (YAML) for the primaryKey map + adapter aliases. */
|
|
519
|
+
classificationsPath?: string | null;
|
|
520
|
+
/**
|
|
521
|
+
* Attestation subject (the SUT the UI drives). MUST be loopback
|
|
522
|
+
* (GF-10); the witness probes its env-fingerprint marker at startup
|
|
523
|
+
* when `targetFingerprint` is set (GF-13 minimal v1 attestation).
|
|
524
|
+
*/
|
|
525
|
+
targetBaseUrl?: string | null;
|
|
526
|
+
/** Expected `x-gateforge-env-fingerprint` marker at the attestation subject. */
|
|
527
|
+
targetFingerprint?: string | null;
|
|
528
|
+
/** Default base for adapter reads; a per-adapter `baseUrl` wins. */
|
|
529
|
+
adapterBaseUrl?: string | null;
|
|
530
|
+
/** Per-witness-call timeout (pin #7 default 5s). */
|
|
531
|
+
requestTimeoutMs?: number;
|
|
532
|
+
/** Injected clock for `issuedAt` (ISO-8601); default = system now. */
|
|
533
|
+
now?: () => string;
|
|
534
|
+
/** Host to bind; default `127.0.0.1` (loopback). */
|
|
535
|
+
host?: string;
|
|
536
|
+
/**
|
|
537
|
+
* Engine-browser launcher override (programmatic use only — never
|
|
538
|
+
* env-derived): the executable the engine drives stays engine code
|
|
539
|
+
* regardless of which Chromium launches. Tests inject a failing
|
|
540
|
+
* launcher to prove the fail-closed path (E16); production leaves it
|
|
541
|
+
* unset for the pinned Chromium.
|
|
542
|
+
*/
|
|
543
|
+
engineBrowserLauncher?: import('./browser.js').EngineBrowserLauncher;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* The normalized adapter module contract (pin #8).
|
|
547
|
+
*
|
|
548
|
+
* `probeServer` (optional; the server-witnessed persistence channel) is
|
|
549
|
+
* the adapter's server-side probe: the witness executes it ONLY in the
|
|
550
|
+
* witness process (trusted side) against the app's own database/state —
|
|
551
|
+
* for backend-only tables (a transactional outbox) that can never
|
|
552
|
+
* honestly appear in a UI. Contract:
|
|
553
|
+
*
|
|
554
|
+
* ```js
|
|
555
|
+
* export default {
|
|
556
|
+
* ...,
|
|
557
|
+
* async probeServer(ctx, subject) {
|
|
558
|
+
* const row = await db.query('select * from outbox where id = $1', [subject]);
|
|
559
|
+
* return { found: row !== undefined, fields: row ?? null };
|
|
560
|
+
* },
|
|
561
|
+
* };
|
|
562
|
+
* ```
|
|
563
|
+
*
|
|
564
|
+
* `subject` is the entity key EXACTLY as the persistence intent declared
|
|
565
|
+
* it (scalar for single-column primary keys, column-keyed object for
|
|
566
|
+
* composite keys); the return MUST be
|
|
567
|
+
* `{found: boolean, fields: Record<string, unknown> | null}`. A throw or
|
|
568
|
+
* a malformed shape resolves the intent as a typed
|
|
569
|
+
* SERVER_PROBE_UNAVAILABLE failure — never to satisfaction (fail
|
|
570
|
+
* closed). Adapters without the export simply cannot serve the server
|
|
571
|
+
* channel; the browser path is unaffected.
|
|
572
|
+
*/
|
|
573
|
+
export interface EvidenceAdapter {
|
|
574
|
+
/** GET-only transport. Returns the raw entity body, or null when absent. */
|
|
575
|
+
read: (ctx: AdapterContext, id: unknown) => Promise<unknown> | unknown;
|
|
576
|
+
/**
|
|
577
|
+
* Optional GET-only listing of the resource's entities (raw bodies).
|
|
578
|
+
* Powers engine-side pre-observations for create postconditions; when
|
|
579
|
+
* absent the witness refuses pre-observations for the resource.
|
|
580
|
+
*/
|
|
581
|
+
list?: (ctx: AdapterContext) => Promise<unknown[]> | unknown[];
|
|
582
|
+
/** Projects the raw body onto {entityId, fields} — stamped from the RESPONSE. */
|
|
583
|
+
normalize: (body: unknown) => {
|
|
584
|
+
entityId: unknown;
|
|
585
|
+
fields: unknown;
|
|
586
|
+
};
|
|
587
|
+
/** Removal semantics the adapter's resource uses. */
|
|
588
|
+
deletion: 'hard' | 'archive';
|
|
589
|
+
/** Fingerprint the adapter's target environment must present. */
|
|
590
|
+
environmentFingerprint: string;
|
|
591
|
+
/** Optional base override for THIS adapter's reads. */
|
|
592
|
+
baseUrl?: string;
|
|
593
|
+
/**
|
|
594
|
+
* Optional SERVER PROBE, executed witness-side only (see the interface
|
|
595
|
+
* doc): observes the app database directly and reports the entity's
|
|
596
|
+
* presence + observed column state.
|
|
597
|
+
*/
|
|
598
|
+
probeServer?: (ctx: AdapterContext, subject: unknown) => Promise<ServerProbeResult> | ServerProbeResult;
|
|
599
|
+
}
|
|
600
|
+
/** The shape an adapter `probeServer` must return (validated witness-side). */
|
|
601
|
+
export interface ServerProbeResult {
|
|
602
|
+
/** Whether the probed entity exists in the engine-observed state. */
|
|
603
|
+
found: boolean;
|
|
604
|
+
/** The observed column state when found (null when absent). */
|
|
605
|
+
fields: Record<string, unknown> | null;
|
|
606
|
+
}
|
|
607
|
+
/** The transport handed to `read` (GET-only, engine-mediated). */
|
|
608
|
+
export interface AdapterContext {
|
|
609
|
+
/** The resolved read base for this adapter. */
|
|
610
|
+
baseUrl: string;
|
|
611
|
+
/** The resource this adapter serves. */
|
|
612
|
+
resourceId: string;
|
|
613
|
+
/**
|
|
614
|
+
* The ONLY outbound primitive available to adapters: a GET returning
|
|
615
|
+
* a minimal response view (status + JSON/text body + headers).
|
|
616
|
+
*/
|
|
617
|
+
get: (path: string) => Promise<{
|
|
618
|
+
status: number;
|
|
619
|
+
json(): Promise<unknown>;
|
|
620
|
+
text(): Promise<string>;
|
|
621
|
+
headers: Headers;
|
|
622
|
+
}>;
|
|
623
|
+
/**
|
|
624
|
+
* Headers adapters MUST attach to any direct fetch they perform
|
|
625
|
+
* instead of `get` (dogfood, 2026-09-05): carries the operator-issued
|
|
626
|
+
* engine read credential (`WitnessOptions.adapterReadAuthorization`)
|
|
627
|
+
* so engine-side GET-only state observation can authenticate against
|
|
628
|
+
* the app's own collection routes. Never suite-supplied, never
|
|
629
|
+
* attached to browser traffic.
|
|
630
|
+
*/
|
|
631
|
+
headers?: Record<string, string>;
|
|
632
|
+
}
|
|
633
|
+
/** Full witness-issued record (superset of the pinned wire response). */
|
|
634
|
+
export type IssuedRecord = EvidenceRecord;
|
|
635
|
+
/** Result of spawning/attaching a witness service. */
|
|
636
|
+
export interface WitnessHandle {
|
|
637
|
+
/** Base URL (loopback, OS-assigned port). */
|
|
638
|
+
url: string;
|
|
639
|
+
/** Stop the server; appends issued recordIds to the run manifest (pin #4/#7). */
|
|
640
|
+
proxyUrl: string | null;
|
|
641
|
+
stop: () => Promise<void>;
|
|
642
|
+
}
|
|
643
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/witness/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/witness/types.ts"],"names":[],"mappings":""}
|