@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.
- package/LICENSE +202 -0
- package/dist/baselines/adoption.d.ts +76 -0
- package/dist/baselines/adoption.d.ts.map +1 -0
- package/dist/baselines/adoption.js +163 -0
- package/dist/baselines/adoption.js.map +1 -0
- package/dist/baselines/index.d.ts +102 -0
- package/dist/baselines/index.d.ts.map +1 -0
- package/dist/baselines/index.js +186 -0
- package/dist/baselines/index.js.map +1 -0
- package/dist/canonical-json.d.ts +51 -0
- package/dist/canonical-json.d.ts.map +1 -0
- package/dist/canonical-json.js +112 -0
- package/dist/canonical-json.js.map +1 -0
- package/dist/classifier/bind.d.ts +64 -0
- package/dist/classifier/bind.d.ts.map +1 -0
- package/dist/classifier/bind.js +188 -0
- package/dist/classifier/bind.js.map +1 -0
- package/dist/classifier/classify.d.ts +154 -0
- package/dist/classifier/classify.d.ts.map +1 -0
- package/dist/classifier/classify.js +1207 -0
- package/dist/classifier/classify.js.map +1 -0
- package/dist/classifier/glob.d.ts +48 -0
- package/dist/classifier/glob.d.ts.map +1 -0
- package/dist/classifier/glob.js +104 -0
- package/dist/classifier/glob.js.map +1 -0
- package/dist/classifier/index.d.ts +10 -0
- package/dist/classifier/index.d.ts.map +1 -0
- package/dist/classifier/index.js +21 -0
- package/dist/classifier/index.js.map +1 -0
- package/dist/classifier/schema.d.ts +150 -0
- package/dist/classifier/schema.d.ts.map +1 -0
- package/dist/classifier/schema.js +139 -0
- package/dist/classifier/schema.js.map +1 -0
- package/dist/config/index.d.ts +259 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +523 -0
- package/dist/config/index.js.map +1 -0
- package/dist/fingerprints.d.ts +56 -0
- package/dist/fingerprints.d.ts.map +1 -0
- package/dist/fingerprints.js +59 -0
- package/dist/fingerprints.js.map +1 -0
- package/dist/graph/build.d.ts +16 -0
- package/dist/graph/build.d.ts.map +1 -0
- package/dist/graph/build.js +423 -0
- package/dist/graph/build.js.map +1 -0
- package/dist/graph/index.d.ts +12 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +10 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/schema.d.ts +448 -0
- package/dist/graph/schema.d.ts.map +1 -0
- package/dist/graph/schema.js +237 -0
- package/dist/graph/schema.js.map +1 -0
- package/dist/graph/symbols.d.ts +129 -0
- package/dist/graph/symbols.d.ts.map +1 -0
- package/dist/graph/symbols.js +177 -0
- package/dist/graph/symbols.js.map +1 -0
- package/dist/graph/util.d.ts +40 -0
- package/dist/graph/util.d.ts.map +1 -0
- package/dist/graph/util.js +41 -0
- package/dist/graph/util.js.map +1 -0
- package/dist/index.d.ts +683 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +563 -0
- package/dist/index.js.map +1 -0
- package/dist/mapping/resolve.d.ts +177 -0
- package/dist/mapping/resolve.d.ts.map +1 -0
- package/dist/mapping/resolve.js +523 -0
- package/dist/mapping/resolve.js.map +1 -0
- package/dist/policy/coverage.d.ts +79 -0
- package/dist/policy/coverage.d.ts.map +1 -0
- package/dist/policy/coverage.js +119 -0
- package/dist/policy/coverage.js.map +1 -0
- package/dist/policy/evaluate.d.ts +275 -0
- package/dist/policy/evaluate.d.ts.map +1 -0
- package/dist/policy/evaluate.js +382 -0
- package/dist/policy/evaluate.js.map +1 -0
- package/dist/policy/index.d.ts +15 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +14 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/trusted.d.ts +59 -0
- package/dist/policy/trusted.d.ts.map +1 -0
- package/dist/policy/trusted.js +96 -0
- package/dist/policy/trusted.js.map +1 -0
- package/dist/provenance.d.ts +170 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +306 -0
- package/dist/provenance.js.map +1 -0
- package/dist/receipt/index.d.ts +74 -0
- package/dist/receipt/index.d.ts.map +1 -0
- package/dist/receipt/index.js +154 -0
- package/dist/receipt/index.js.map +1 -0
- package/dist/report/index.d.ts +100 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/index.js +355 -0
- package/dist/report/index.js.map +1 -0
- package/dist/schemas/adoption.d.ts +40 -0
- package/dist/schemas/adoption.d.ts.map +1 -0
- package/dist/schemas/adoption.js +87 -0
- package/dist/schemas/adoption.js.map +1 -0
- package/dist/schemas/baseline.d.ts +19 -0
- package/dist/schemas/baseline.d.ts.map +1 -0
- package/dist/schemas/baseline.js +45 -0
- package/dist/schemas/baseline.js.map +1 -0
- package/dist/schemas/claim.d.ts +32 -0
- package/dist/schemas/claim.d.ts.map +1 -0
- package/dist/schemas/claim.js +34 -0
- package/dist/schemas/claim.js.map +1 -0
- package/dist/schemas/classification-policy.d.ts +84 -0
- package/dist/schemas/classification-policy.d.ts.map +1 -0
- package/dist/schemas/classification-policy.js +130 -0
- package/dist/schemas/classification-policy.js.map +1 -0
- package/dist/schemas/classification-signal.d.ts +125 -0
- package/dist/schemas/classification-signal.d.ts.map +1 -0
- package/dist/schemas/classification-signal.js +126 -0
- package/dist/schemas/classification-signal.js.map +1 -0
- package/dist/schemas/classification.d.ts +120 -0
- package/dist/schemas/classification.d.ts.map +1 -0
- package/dist/schemas/classification.js +154 -0
- package/dist/schemas/classification.js.map +1 -0
- package/dist/schemas/common.d.ts +73 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +60 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/coverage-policy.d.ts +89 -0
- package/dist/schemas/coverage-policy.d.ts.map +1 -0
- package/dist/schemas/coverage-policy.js +81 -0
- package/dist/schemas/coverage-policy.js.map +1 -0
- package/dist/schemas/evidence.d.ts +65 -0
- package/dist/schemas/evidence.d.ts.map +1 -0
- package/dist/schemas/evidence.js +64 -0
- package/dist/schemas/evidence.js.map +1 -0
- package/dist/schemas/execution-result.d.ts +214 -0
- package/dist/schemas/execution-result.d.ts.map +1 -0
- package/dist/schemas/execution-result.js +240 -0
- package/dist/schemas/execution-result.js.map +1 -0
- package/dist/schemas/gate-receipt.d.ts +86 -0
- package/dist/schemas/gate-receipt.d.ts.map +1 -0
- package/dist/schemas/gate-receipt.js +193 -0
- package/dist/schemas/gate-receipt.js.map +1 -0
- package/dist/schemas/index.d.ts +22 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +22 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/obligation.d.ts +37 -0
- package/dist/schemas/obligation.d.ts.map +1 -0
- package/dist/schemas/obligation.js +46 -0
- package/dist/schemas/obligation.js.map +1 -0
- package/dist/schemas/plugin.d.ts +19 -0
- package/dist/schemas/plugin.d.ts.map +1 -0
- package/dist/schemas/plugin.js +20 -0
- package/dist/schemas/plugin.js.map +1 -0
- package/dist/schemas/policy.d.ts +73 -0
- package/dist/schemas/policy.d.ts.map +1 -0
- package/dist/schemas/policy.js +46 -0
- package/dist/schemas/policy.js.map +1 -0
- package/dist/schemas/resource.d.ts +26 -0
- package/dist/schemas/resource.d.ts.map +1 -0
- package/dist/schemas/resource.js +29 -0
- package/dist/schemas/resource.js.map +1 -0
- package/dist/schemas/run-manifest.d.ts +72 -0
- package/dist/schemas/run-manifest.d.ts.map +1 -0
- package/dist/schemas/run-manifest.js +125 -0
- package/dist/schemas/run-manifest.js.map +1 -0
- package/dist/schemas/runner-adapter.d.ts +169 -0
- package/dist/schemas/runner-adapter.d.ts.map +1 -0
- package/dist/schemas/runner-adapter.js +2 -0
- package/dist/schemas/runner-adapter.js.map +1 -0
- package/dist/schemas/test-catalog.d.ts +472 -0
- package/dist/schemas/test-catalog.d.ts.map +1 -0
- package/dist/schemas/test-catalog.js +311 -0
- package/dist/schemas/test-catalog.js.map +1 -0
- package/dist/schemas/test-map.d.ts +99 -0
- package/dist/schemas/test-map.d.ts.map +1 -0
- package/dist/schemas/test-map.js +103 -0
- package/dist/schemas/test-map.js.map +1 -0
- package/dist/schemas/verdict.d.ts +73 -0
- package/dist/schemas/verdict.d.ts.map +1 -0
- package/dist/schemas/verdict.js +92 -0
- package/dist/schemas/verdict.js.map +1 -0
- package/dist/schemas/waiver.d.ts +36 -0
- package/dist/schemas/waiver.d.ts.map +1 -0
- package/dist/schemas/waiver.js +42 -0
- package/dist/schemas/waiver.js.map +1 -0
- package/dist/supervision/index.d.ts +170 -0
- package/dist/supervision/index.d.ts.map +1 -0
- package/dist/supervision/index.js +354 -0
- package/dist/supervision/index.js.map +1 -0
- package/dist/testing/clock.d.ts +50 -0
- package/dist/testing/clock.d.ts.map +1 -0
- package/dist/testing/clock.js +75 -0
- package/dist/testing/clock.js.map +1 -0
- package/dist/testing/env.d.ts +66 -0
- package/dist/testing/env.d.ts.map +1 -0
- package/dist/testing/env.js +106 -0
- package/dist/testing/env.js.map +1 -0
- package/dist/testing/gate-runner.d.ts +141 -0
- package/dist/testing/gate-runner.d.ts.map +1 -0
- package/dist/testing/gate-runner.js +173 -0
- package/dist/testing/gate-runner.js.map +1 -0
- package/dist/testing/gf19.d.ts +106 -0
- package/dist/testing/gf19.d.ts.map +1 -0
- package/dist/testing/gf19.js +282 -0
- package/dist/testing/gf19.js.map +1 -0
- package/dist/testing/index.d.ts +20 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +14 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/red-probe.d.ts +138 -0
- package/dist/testing/red-probe.d.ts.map +1 -0
- package/dist/testing/red-probe.js +251 -0
- package/dist/testing/red-probe.js.map +1 -0
- package/dist/testing/temp-repo.d.ts +126 -0
- package/dist/testing/temp-repo.d.ts.map +1 -0
- package/dist/testing/temp-repo.js +214 -0
- package/dist/testing/temp-repo.js.map +1 -0
- package/dist/verdict/cause.d.ts +99 -0
- package/dist/verdict/cause.d.ts.map +1 -0
- package/dist/verdict/cause.js +206 -0
- package/dist/verdict/cause.js.map +1 -0
- package/dist/verdict/evaluate.d.ts +135 -0
- package/dist/verdict/evaluate.d.ts.map +1 -0
- package/dist/verdict/evaluate.js +1513 -0
- package/dist/verdict/evaluate.js.map +1 -0
- package/dist/verdict/index.d.ts +21 -0
- package/dist/verdict/index.d.ts.map +1 -0
- package/dist/verdict/index.js +20 -0
- package/dist/verdict/index.js.map +1 -0
- package/dist/verdict/pack-verifiers.d.ts +97 -0
- package/dist/verdict/pack-verifiers.d.ts.map +1 -0
- package/dist/verdict/pack-verifiers.js +763 -0
- package/dist/verdict/pack-verifiers.js.map +1 -0
- package/dist/verdict/registry.d.ts +180 -0
- package/dist/verdict/registry.d.ts.map +1 -0
- package/dist/verdict/registry.js +67 -0
- package/dist/verdict/registry.js.map +1 -0
- package/dist/waivers/index.d.ts +103 -0
- package/dist/waivers/index.d.ts.map +1 -0
- package/dist/waivers/index.js +192 -0
- package/dist/waivers/index.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-verifiers.js","sourceRoot":"","sources":["../../src/verdict/pack-verifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic-verifier registry (ADR 0004 D8, plan phase 5).
|
|
3
|
+
*
|
|
4
|
+
* Each contract namespace (`persistence`, `http`, `auth`, `workflow`,
|
|
5
|
+
* `webhook`, `task`, `validation`, `crud`) is graded by exactly ONE
|
|
6
|
+
* verifier that its owning pack/engine registers. Registration is
|
|
7
|
+
* first-wins and protected: a later registration for an already-known
|
|
8
|
+
* namespace throws — a pack can never override another pack's semantics.
|
|
9
|
+
* Unknown namespaces stay fail-closed blocking (`missing`), so adding a
|
|
10
|
+
* contract is always safe and never silently satisfiable.
|
|
11
|
+
*
|
|
12
|
+
* Alongside each verifier the registry carries explicit CAPABILITY
|
|
13
|
+
* metadata (plan 2026-09-13 Phase 0 item 3, ADR 0005): implemented
|
|
14
|
+
* contracts, the required observer channel, supported test kinds, and
|
|
15
|
+
* availability — registered with the same first-wins/no-override rule so
|
|
16
|
+
* no consumer (CLI, packs) can weaken an advertised capability by
|
|
17
|
+
* registration order or by duplicating contract-name lists.
|
|
18
|
+
*/
|
|
19
|
+
import type { Claim, Obligation } from '../schemas/index.js';
|
|
20
|
+
import type { TrustTier } from '../schemas/common.js';
|
|
21
|
+
/**
|
|
22
|
+
* One runtime route candidate for HTTP attribution (plan §9, D2).
|
|
23
|
+
* Core-owned: the host (CLI) derives the COMPLETE list from its
|
|
24
|
+
* resource graph — every applicable `http.endpoint` resource, including
|
|
25
|
+
* routes with no frontend consumer and no generated obligation. A
|
|
26
|
+
* caller may never supply only the route it wants to satisfy, and the
|
|
27
|
+
* list is never accepted from a claim or evidence payload (Phase 6
|
|
28
|
+
* snapshots this context; the producer sorts it codepoint-wise by
|
|
29
|
+
* resourceId so it is deterministic).
|
|
30
|
+
*/
|
|
31
|
+
export interface HttpRouteCandidate {
|
|
32
|
+
/** Graph resource id of the endpoint (e.g. `http.endpoint:GET /a/{}`). */
|
|
33
|
+
resourceId: string;
|
|
34
|
+
/** Concrete uppercase method as compiled (e.g. `GET`). */
|
|
35
|
+
method: string;
|
|
36
|
+
/** Compiled canonical path shape (e.g. `/accounts/{}`). */
|
|
37
|
+
canonicalPath: string;
|
|
38
|
+
}
|
|
39
|
+
/** Lenient record view (same shape the verdict engine reads). */
|
|
40
|
+
export interface RegistryRecordLike {
|
|
41
|
+
readonly recordId: unknown;
|
|
42
|
+
readonly runId: unknown;
|
|
43
|
+
readonly trust: unknown;
|
|
44
|
+
readonly obligationId: unknown;
|
|
45
|
+
readonly testId: unknown;
|
|
46
|
+
readonly kind: unknown;
|
|
47
|
+
readonly origin: unknown;
|
|
48
|
+
readonly payload: unknown;
|
|
49
|
+
}
|
|
50
|
+
/** One claim's evidence bundle handed to a verifier. */
|
|
51
|
+
export interface ClaimEvidenceInput {
|
|
52
|
+
claim: Claim;
|
|
53
|
+
obligation: Obligation;
|
|
54
|
+
evidence: Array<{
|
|
55
|
+
record: RegistryRecordLike;
|
|
56
|
+
trust: TrustTier;
|
|
57
|
+
}>;
|
|
58
|
+
/** Ordered primary-key columns from the resource classification. */
|
|
59
|
+
primaryKey: readonly string[];
|
|
60
|
+
/**
|
|
61
|
+
* The obligation's graph resource (kind + attributes), when the host
|
|
62
|
+
* can supply it. Verifiers use it to bind evidence to identity.
|
|
63
|
+
*/
|
|
64
|
+
resource?: {
|
|
65
|
+
kind: string;
|
|
66
|
+
attributes: Record<string, unknown>;
|
|
67
|
+
} | null;
|
|
68
|
+
/**
|
|
69
|
+
* The COMPLETE runtime route inventory for HTTP attribution (plan
|
|
70
|
+
* §9, D2): every applicable `http.endpoint` resource, host-derived
|
|
71
|
+
* from the graph — never from a claim or evidence payload. Absent
|
|
72
|
+
* (null/undefined) blocks HTTP satisfaction: without the full
|
|
73
|
+
* candidate set no endpoint-specific pass is authoritative (no
|
|
74
|
+
* any-endpoint fallback).
|
|
75
|
+
*/
|
|
76
|
+
httpRoutes?: readonly HttpRouteCandidate[] | null;
|
|
77
|
+
}
|
|
78
|
+
/** Per-claim grading outcome (same shape the aggregation consumes). */
|
|
79
|
+
export type ClaimOutcome = {
|
|
80
|
+
status: 'satisfied';
|
|
81
|
+
recordIds: string[];
|
|
82
|
+
} | {
|
|
83
|
+
status: 'invalid';
|
|
84
|
+
reason: string;
|
|
85
|
+
} | {
|
|
86
|
+
status: 'missing';
|
|
87
|
+
reason: string;
|
|
88
|
+
recordIds?: string[];
|
|
89
|
+
};
|
|
90
|
+
/** A namespace's semantic grader over one claim's evidence. */
|
|
91
|
+
export type ContractVerifier = (input: ClaimEvidenceInput) => ClaimOutcome;
|
|
92
|
+
/**
|
|
93
|
+
* Registers the semantic verifier for a contract namespace. Throws when
|
|
94
|
+
* the namespace is already registered — verifier registration cannot
|
|
95
|
+
* override another namespace's semantics (plan phase 5 checklist).
|
|
96
|
+
*/
|
|
97
|
+
export declare function registerContractVerifier(namespace: string, verifier: ContractVerifier): void;
|
|
98
|
+
/** The verifier for a contract's namespace, or null when unregistered. */
|
|
99
|
+
export declare function verifierFor(contract: string): ContractVerifier | null;
|
|
100
|
+
/** All registered namespaces (sorted; for diagnostics and tests). */
|
|
101
|
+
export declare function registeredNamespaces(): string[];
|
|
102
|
+
/**
|
|
103
|
+
* One contract's availability inside a registered namespace (plan
|
|
104
|
+
* 2026-09-13 Phase 0 item 3): implemented contracts grade evidence;
|
|
105
|
+
* unavailable ones are REGISTERED but fail closed — no honest observation
|
|
106
|
+
* channel exists yet, so no evidence can ever satisfy them.
|
|
107
|
+
*/
|
|
108
|
+
export type ContractAvailability = {
|
|
109
|
+
status: 'available';
|
|
110
|
+
} | {
|
|
111
|
+
status: 'unavailable';
|
|
112
|
+
/** The fail-closed reason (names the missing engine-owned producer). */
|
|
113
|
+
reason: string;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Explicit capability metadata for one contract namespace (plan
|
|
117
|
+
* 2026-09-13 Phase 0 item 3, ADR 0005): what the namespace's verifier can
|
|
118
|
+
* honestly prove, which independent observer channel that proof requires,
|
|
119
|
+
* which test kinds can carry it, and whether any of it is available today.
|
|
120
|
+
* Single source of truth — CLI and packs consume this record instead of
|
|
121
|
+
* duplicating contract-name lists.
|
|
122
|
+
*/
|
|
123
|
+
export interface ContractCapability {
|
|
124
|
+
/** The contract namespace this record describes (e.g. `http`). */
|
|
125
|
+
namespace: string;
|
|
126
|
+
/**
|
|
127
|
+
* Exact contract names the verifier fully implements. Empty means
|
|
128
|
+
* `none — fail-closed`: every contract of the namespace blocks.
|
|
129
|
+
*/
|
|
130
|
+
contracts: readonly string[];
|
|
131
|
+
/**
|
|
132
|
+
* Contracts that are registered but NOT satisfiable (no honest
|
|
133
|
+
* observation channel), each with its fail-closed reason. These names
|
|
134
|
+
* stay blocking whatever evidence arrives.
|
|
135
|
+
*/
|
|
136
|
+
unavailableContracts: readonly {
|
|
137
|
+
contract: string;
|
|
138
|
+
reason: string;
|
|
139
|
+
}[];
|
|
140
|
+
/**
|
|
141
|
+
* Description of the required independent observer channel for the
|
|
142
|
+
* implemented contracts (what must exist for proof to be honest).
|
|
143
|
+
*/
|
|
144
|
+
observer: string;
|
|
145
|
+
/** Test kinds whose evidence can satisfy the implemented contracts. */
|
|
146
|
+
testKinds: readonly string[];
|
|
147
|
+
/** Namespace-level availability; `unavailable` fails every contract closed. */
|
|
148
|
+
availability: ContractAvailability;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Registers the capability metadata for one contract namespace. Throws
|
|
152
|
+
* when the namespace already carries a capability record — like verifier
|
|
153
|
+
* registration (first-wins), a later registration can never redefine or
|
|
154
|
+
* weaken another namespace's advertised capability (plan Phase 0
|
|
155
|
+
* acceptance: no protected verifier can be replaced by registration
|
|
156
|
+
* order).
|
|
157
|
+
*
|
|
158
|
+
* Args:
|
|
159
|
+
* capability: the capability record (namespace, implemented contracts,
|
|
160
|
+
* required observer, test kinds, availability).
|
|
161
|
+
*
|
|
162
|
+
* Throws:
|
|
163
|
+
* Error: when the namespace already has a capability record.
|
|
164
|
+
*/
|
|
165
|
+
export declare function registerContractCapabilities(capability: ContractCapability): void;
|
|
166
|
+
/**
|
|
167
|
+
* The capability record for a contract's namespace, or null when the
|
|
168
|
+
* namespace has none (an unregistered namespace is itself unsupported).
|
|
169
|
+
*
|
|
170
|
+
* Args:
|
|
171
|
+
* contract: a contract name (`namespace:operation`); the namespace is
|
|
172
|
+
* the text before the first colon (same split as `verifierFor`).
|
|
173
|
+
*
|
|
174
|
+
* Returns:
|
|
175
|
+
* ContractCapability | null: the namespace's capability record.
|
|
176
|
+
*/
|
|
177
|
+
export declare function capabilityFor(contract: string): ContractCapability | null;
|
|
178
|
+
/** All registered capability records, sorted by namespace (diagnostics/tests). */
|
|
179
|
+
export declare function allCapabilities(): ContractCapability[];
|
|
180
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/verdict/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const verifiers = new Map();
|
|
2
|
+
/**
|
|
3
|
+
* Registers the semantic verifier for a contract namespace. Throws when
|
|
4
|
+
* the namespace is already registered — verifier registration cannot
|
|
5
|
+
* override another namespace's semantics (plan phase 5 checklist).
|
|
6
|
+
*/
|
|
7
|
+
export function registerContractVerifier(namespace, verifier) {
|
|
8
|
+
if (verifiers.has(namespace)) {
|
|
9
|
+
throw new Error(`a semantic verifier for contract namespace '${namespace}' is already registered; ` +
|
|
10
|
+
'registration cannot override another namespace');
|
|
11
|
+
}
|
|
12
|
+
verifiers.set(namespace, verifier);
|
|
13
|
+
}
|
|
14
|
+
/** The verifier for a contract's namespace, or null when unregistered. */
|
|
15
|
+
export function verifierFor(contract) {
|
|
16
|
+
const separator = contract.indexOf(':');
|
|
17
|
+
const namespace = separator === -1 ? contract : contract.slice(0, separator);
|
|
18
|
+
return verifiers.get(namespace) ?? null;
|
|
19
|
+
}
|
|
20
|
+
/** All registered namespaces (sorted; for diagnostics and tests). */
|
|
21
|
+
export function registeredNamespaces() {
|
|
22
|
+
return [...verifiers.keys()].sort();
|
|
23
|
+
}
|
|
24
|
+
const capabilities = new Map();
|
|
25
|
+
/**
|
|
26
|
+
* Registers the capability metadata for one contract namespace. Throws
|
|
27
|
+
* when the namespace already carries a capability record — like verifier
|
|
28
|
+
* registration (first-wins), a later registration can never redefine or
|
|
29
|
+
* weaken another namespace's advertised capability (plan Phase 0
|
|
30
|
+
* acceptance: no protected verifier can be replaced by registration
|
|
31
|
+
* order).
|
|
32
|
+
*
|
|
33
|
+
* Args:
|
|
34
|
+
* capability: the capability record (namespace, implemented contracts,
|
|
35
|
+
* required observer, test kinds, availability).
|
|
36
|
+
*
|
|
37
|
+
* Throws:
|
|
38
|
+
* Error: when the namespace already has a capability record.
|
|
39
|
+
*/
|
|
40
|
+
export function registerContractCapabilities(capability) {
|
|
41
|
+
if (capabilities.has(capability.namespace)) {
|
|
42
|
+
throw new Error(`a capability record for contract namespace '${capability.namespace}' is already registered; ` +
|
|
43
|
+
'registration cannot override another namespace');
|
|
44
|
+
}
|
|
45
|
+
capabilities.set(capability.namespace, capability);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The capability record for a contract's namespace, or null when the
|
|
49
|
+
* namespace has none (an unregistered namespace is itself unsupported).
|
|
50
|
+
*
|
|
51
|
+
* Args:
|
|
52
|
+
* contract: a contract name (`namespace:operation`); the namespace is
|
|
53
|
+
* the text before the first colon (same split as `verifierFor`).
|
|
54
|
+
*
|
|
55
|
+
* Returns:
|
|
56
|
+
* ContractCapability | null: the namespace's capability record.
|
|
57
|
+
*/
|
|
58
|
+
export function capabilityFor(contract) {
|
|
59
|
+
const separator = contract.indexOf(':');
|
|
60
|
+
const namespace = separator === -1 ? contract : contract.slice(0, separator);
|
|
61
|
+
return capabilities.get(namespace) ?? null;
|
|
62
|
+
}
|
|
63
|
+
/** All registered capability records, sorted by namespace (diagnostics/tests). */
|
|
64
|
+
export function allCapabilities() {
|
|
65
|
+
return [...capabilities.values()].sort((a, b) => (a.namespace < b.namespace ? -1 : a.namespace > b.namespace ? 1 : 0));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/verdict/registry.ts"],"names":[],"mappings":"AAoFA,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,QAA0B;IACpF,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,+CAA+C,SAAS,2BAA2B;YACjF,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7E,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAiDD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAA8B;IACzE,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,+CAA+C,UAAU,CAAC,SAAS,2BAA2B;YAC5F,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7E,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzH,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { type Waiver } from '../schemas/waiver.js';
|
|
2
|
+
import { type WaiverRef } from '../verdict/index.js';
|
|
3
|
+
/** One fail-closed waiver-loading problem (file-scoped, actionable). */
|
|
4
|
+
export interface WaiverProblem {
|
|
5
|
+
/** Waiver file the problem was found in (basename). */
|
|
6
|
+
file: string;
|
|
7
|
+
/** Single-cause human explanation. */
|
|
8
|
+
detail: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Error raised for any fail-closed waiver configuration problem
|
|
12
|
+
* (GF-15): missing mandatory fields, unparsable JSON, duplicate exact
|
|
13
|
+
* scopes, or an over-long waiver duration. Carries every problem found
|
|
14
|
+
* across the directory so one run reports all of them.
|
|
15
|
+
*/
|
|
16
|
+
export declare class GateforgeWaiverError extends Error {
|
|
17
|
+
/** Every problem found, file-scoped, in deterministic order. */
|
|
18
|
+
readonly problems: readonly WaiverProblem[];
|
|
19
|
+
constructor(problems: readonly WaiverProblem[]);
|
|
20
|
+
}
|
|
21
|
+
/** Result of loading a waivers directory against the injected clock. */
|
|
22
|
+
export interface WaiverLoadResult {
|
|
23
|
+
/** Valid waivers at `now`: five fields present, unexpired, owner checked. */
|
|
24
|
+
waivers: WaiverRef[];
|
|
25
|
+
/**
|
|
26
|
+
* Structurally valid waivers whose owner failed the owner check
|
|
27
|
+
* (GF-17); the verdict engine yields `stale` for their obligations.
|
|
28
|
+
*/
|
|
29
|
+
staleOwner: WaiverRef[];
|
|
30
|
+
/**
|
|
31
|
+
* Waivers expired at the injected `now` (GF-16); the verdict engine
|
|
32
|
+
* yields `invalid` for their obligations (ADR 0001 D4).
|
|
33
|
+
*/
|
|
34
|
+
expired: Waiver[];
|
|
35
|
+
}
|
|
36
|
+
/** Options for {@link loadWaivers}. */
|
|
37
|
+
export interface WaiverLoadOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Injected clock instant (Date or ISO-8601 string) expiry is judged
|
|
40
|
+
* against — the wall clock never participates (GF-16, invariant 7).
|
|
41
|
+
*/
|
|
42
|
+
now: Date | string;
|
|
43
|
+
/**
|
|
44
|
+
* Stale-owner hook (GF-17): return false when the waiver's owner no
|
|
45
|
+
* longer exists (left the team, dissolved CODEOWNERS entry). Default:
|
|
46
|
+
* no owner checking — every structurally valid owner passes.
|
|
47
|
+
*/
|
|
48
|
+
ownerExists?: (waiver: Waiver) => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Optional maximum allowed waiver duration in milliseconds
|
|
51
|
+
* (config-supplied constant; the concrete number is deferred to the
|
|
52
|
+
* interview program per ADR 0001 D4). When set, a waiver whose
|
|
53
|
+
* `expiresAt - now` exceeds it is a configuration error.
|
|
54
|
+
*/
|
|
55
|
+
maxDurationMs?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Loads and validates every `*.json` waiver file in `dir` (sorted by
|
|
59
|
+
* filename for determinism). A missing directory yields an empty result —
|
|
60
|
+
* projects may simply have no waivers. Any problem (unparsable JSON,
|
|
61
|
+
* missing mandatory field, duplicate scope, over-long duration) fails
|
|
62
|
+
* closed: {@link GateforgeWaiverError} listing every problem found.
|
|
63
|
+
*
|
|
64
|
+
* Args:
|
|
65
|
+
* dir: the configured waivers directory (e.g. `.gateforge/waivers/`).
|
|
66
|
+
* options: injected clock, optional owner checker, optional max duration.
|
|
67
|
+
*
|
|
68
|
+
* Returns:
|
|
69
|
+
* WaiverLoadResult: valid / stale-owner / expired partitions.
|
|
70
|
+
*
|
|
71
|
+
* Throws:
|
|
72
|
+
* GateforgeWaiverError: when any waiver file fails closed (GF-15).
|
|
73
|
+
*/
|
|
74
|
+
export declare function loadWaivers(dir: string, options: WaiverLoadOptions): WaiverLoadResult;
|
|
75
|
+
/**
|
|
76
|
+
* Serializes a waiver for on-disk storage: 2-space JSON with a trailing
|
|
77
|
+
* newline (the `serializeBaseline` house style — reviewable in diffs and
|
|
78
|
+
* PRs). Loading is canonical through {@link loadWaivers}'s plain
|
|
79
|
+
* `JSON.parse`, so key order is irrelevant to the engine; the pretty
|
|
80
|
+
* form exists for the humans who must review every exception.
|
|
81
|
+
*
|
|
82
|
+
* Args:
|
|
83
|
+
* waiver: the schema-valid document to serialize.
|
|
84
|
+
*
|
|
85
|
+
* Returns:
|
|
86
|
+
* string: the file content.
|
|
87
|
+
*/
|
|
88
|
+
export declare function serializeWaiver(waiver: Waiver): string;
|
|
89
|
+
/**
|
|
90
|
+
* Writes a waiver to disk, creating parent directories as needed (the
|
|
91
|
+
* waivers directory may not exist yet — first waiver in a repo).
|
|
92
|
+
* Fail-closed: a write failure surfaces as a {@link GateforgeWaiverError}
|
|
93
|
+
* (config-error → exit 2), never a half-written silent success.
|
|
94
|
+
*
|
|
95
|
+
* Args:
|
|
96
|
+
* path: destination file path.
|
|
97
|
+
* waiver: the schema-valid document to write.
|
|
98
|
+
*
|
|
99
|
+
* Throws:
|
|
100
|
+
* GateforgeWaiverError: when the file cannot be written.
|
|
101
|
+
*/
|
|
102
|
+
export declare function writeWaiver(path: string, waiver: Waiver): void;
|
|
103
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/waivers/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;gBAEhC,QAAQ,EAAE,SAAS,aAAa,EAAE;CAU/C;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CA6FrF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAY9D"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waiver loading and validation (ADR 0001 D4, GF-15/16/17): reads
|
|
3
|
+
* `*.json` waiver files from the configured waivers directory.
|
|
4
|
+
*
|
|
5
|
+
* Fail-closed rules:
|
|
6
|
+
* - ALL FIVE fields (owner, justificationUrl, approver, scope,
|
|
7
|
+
* expiresAt) are mandatory — a file missing any of them is a
|
|
8
|
+
* fail-closed configuration error, never a partially-applied exception
|
|
9
|
+
* (GF-15).
|
|
10
|
+
* - Expiry is evaluated against the INJECTED clock (`now` option) —
|
|
11
|
+
* never the wall clock (invariant 7, GF-16). Expired waivers are
|
|
12
|
+
* reported separately; the verdict engine turns them into `invalid`.
|
|
13
|
+
* - An optional owner-checker hook flags waivers whose owner no longer
|
|
14
|
+
* exists; flagged waivers surface as `stale` downstream (GF-17).
|
|
15
|
+
* Default: no owner checking.
|
|
16
|
+
* - Two waivers claiming the same exact (resourceId, fingerprint) scope
|
|
17
|
+
* are ambiguous → configuration error.
|
|
18
|
+
*
|
|
19
|
+
* Loading is synchronous, matching `loadConfig`'s convention.
|
|
20
|
+
*/
|
|
21
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
22
|
+
import { basename, dirname, join } from 'node:path';
|
|
23
|
+
import { compareStrings } from '../graph/util.js';
|
|
24
|
+
import { WaiverSchema } from '../schemas/waiver.js';
|
|
25
|
+
import { parseInstant } from '../verdict/index.js';
|
|
26
|
+
/**
|
|
27
|
+
* Error raised for any fail-closed waiver configuration problem
|
|
28
|
+
* (GF-15): missing mandatory fields, unparsable JSON, duplicate exact
|
|
29
|
+
* scopes, or an over-long waiver duration. Carries every problem found
|
|
30
|
+
* across the directory so one run reports all of them.
|
|
31
|
+
*/
|
|
32
|
+
export class GateforgeWaiverError extends Error {
|
|
33
|
+
/** Every problem found, file-scoped, in deterministic order. */
|
|
34
|
+
problems;
|
|
35
|
+
constructor(problems) {
|
|
36
|
+
const rendered = problems
|
|
37
|
+
.map((problem) => ` ${problem.file}: ${problem.detail}`)
|
|
38
|
+
.join('\n');
|
|
39
|
+
super(`waiver configuration failed closed with ${problems.length} problem(s):\n${rendered}`);
|
|
40
|
+
this.name = 'GateforgeWaiverError';
|
|
41
|
+
this.problems = problems;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Loads and validates every `*.json` waiver file in `dir` (sorted by
|
|
46
|
+
* filename for determinism). A missing directory yields an empty result —
|
|
47
|
+
* projects may simply have no waivers. Any problem (unparsable JSON,
|
|
48
|
+
* missing mandatory field, duplicate scope, over-long duration) fails
|
|
49
|
+
* closed: {@link GateforgeWaiverError} listing every problem found.
|
|
50
|
+
*
|
|
51
|
+
* Args:
|
|
52
|
+
* dir: the configured waivers directory (e.g. `.gateforge/waivers/`).
|
|
53
|
+
* options: injected clock, optional owner checker, optional max duration.
|
|
54
|
+
*
|
|
55
|
+
* Returns:
|
|
56
|
+
* WaiverLoadResult: valid / stale-owner / expired partitions.
|
|
57
|
+
*
|
|
58
|
+
* Throws:
|
|
59
|
+
* GateforgeWaiverError: when any waiver file fails closed (GF-15).
|
|
60
|
+
*/
|
|
61
|
+
export function loadWaivers(dir, options) {
|
|
62
|
+
const now = parseInstant(options.now);
|
|
63
|
+
const problems = [];
|
|
64
|
+
if (!existsSync(dir)) {
|
|
65
|
+
return { waivers: [], staleOwner: [], expired: [] };
|
|
66
|
+
}
|
|
67
|
+
const files = readdirSync(dir, { withFileTypes: true })
|
|
68
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith('.json'))
|
|
69
|
+
.map((entry) => entry.name)
|
|
70
|
+
.sort(compareStrings);
|
|
71
|
+
const parsed = [];
|
|
72
|
+
for (const file of files) {
|
|
73
|
+
const path = join(dir, file);
|
|
74
|
+
let document;
|
|
75
|
+
try {
|
|
76
|
+
document = JSON.parse(readFileSync(path, 'utf8'));
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
problems.push({
|
|
80
|
+
file,
|
|
81
|
+
detail: `not parsable JSON: ${error instanceof Error ? error.message : String(error)}`,
|
|
82
|
+
});
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const result = WaiverSchema.safeParse(document);
|
|
86
|
+
if (!result.success) {
|
|
87
|
+
for (const issue of result.error.issues) {
|
|
88
|
+
problems.push({
|
|
89
|
+
file,
|
|
90
|
+
detail: `${issue.path.join('.') || '<waiver>'}: ${issue.message}`,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const waiver = result.data;
|
|
96
|
+
if (options.maxDurationMs !== undefined) {
|
|
97
|
+
const duration = Date.parse(waiver.expiresAt) - now.getTime();
|
|
98
|
+
if (duration > options.maxDurationMs) {
|
|
99
|
+
problems.push({
|
|
100
|
+
file,
|
|
101
|
+
detail: `expiresAt '${waiver.expiresAt}' exceeds the maximum waiver duration ` +
|
|
102
|
+
`(${Math.round(options.maxDurationMs / 86_400_000)} days from now)`,
|
|
103
|
+
});
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
parsed.push({ file, waiver });
|
|
108
|
+
}
|
|
109
|
+
// Exact-scope uniqueness: two waivers on one (resourceId, fingerprint)
|
|
110
|
+
// pair are ambiguous about who owns the exception — fail closed
|
|
111
|
+
// (mirrors invariant 4's exactness).
|
|
112
|
+
const byScope = {};
|
|
113
|
+
for (const { file, waiver } of parsed) {
|
|
114
|
+
const scopeKey = `${waiver.scope.resourceId}\u0000${waiver.scope.fingerprint}`;
|
|
115
|
+
const firstFile = byScope[scopeKey];
|
|
116
|
+
if (firstFile !== undefined) {
|
|
117
|
+
problems.push({
|
|
118
|
+
file,
|
|
119
|
+
detail: `duplicate exact scope (resourceId '${waiver.scope.resourceId}', fingerprint ` +
|
|
120
|
+
`'${waiver.scope.fingerprint}') already covered by '${firstFile}'`,
|
|
121
|
+
});
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
byScope[scopeKey] = file;
|
|
125
|
+
}
|
|
126
|
+
if (problems.length > 0) {
|
|
127
|
+
throw new GateforgeWaiverError(problems);
|
|
128
|
+
}
|
|
129
|
+
const waivers = [];
|
|
130
|
+
const staleOwner = [];
|
|
131
|
+
const expired = [];
|
|
132
|
+
for (const { waiver } of parsed) {
|
|
133
|
+
if (now.getTime() >= Date.parse(waiver.expiresAt)) {
|
|
134
|
+
expired.push(waiver);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (options.ownerExists !== undefined && !options.ownerExists(waiver)) {
|
|
138
|
+
staleOwner.push({ ...waiver, ownerStale: true });
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
waivers.push(waiver);
|
|
142
|
+
}
|
|
143
|
+
const byOwner = (a, b) => compareStrings(`${a.owner}\u0000${a.expiresAt}`, `${b.owner}\u0000${b.expiresAt}`);
|
|
144
|
+
waivers.sort(byOwner);
|
|
145
|
+
staleOwner.sort(byOwner);
|
|
146
|
+
expired.sort(byOwner);
|
|
147
|
+
return { waivers, staleOwner, expired };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Serializes a waiver for on-disk storage: 2-space JSON with a trailing
|
|
151
|
+
* newline (the `serializeBaseline` house style — reviewable in diffs and
|
|
152
|
+
* PRs). Loading is canonical through {@link loadWaivers}'s plain
|
|
153
|
+
* `JSON.parse`, so key order is irrelevant to the engine; the pretty
|
|
154
|
+
* form exists for the humans who must review every exception.
|
|
155
|
+
*
|
|
156
|
+
* Args:
|
|
157
|
+
* waiver: the schema-valid document to serialize.
|
|
158
|
+
*
|
|
159
|
+
* Returns:
|
|
160
|
+
* string: the file content.
|
|
161
|
+
*/
|
|
162
|
+
export function serializeWaiver(waiver) {
|
|
163
|
+
return `${JSON.stringify(waiver, null, 2)}\n`;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Writes a waiver to disk, creating parent directories as needed (the
|
|
167
|
+
* waivers directory may not exist yet — first waiver in a repo).
|
|
168
|
+
* Fail-closed: a write failure surfaces as a {@link GateforgeWaiverError}
|
|
169
|
+
* (config-error → exit 2), never a half-written silent success.
|
|
170
|
+
*
|
|
171
|
+
* Args:
|
|
172
|
+
* path: destination file path.
|
|
173
|
+
* waiver: the schema-valid document to write.
|
|
174
|
+
*
|
|
175
|
+
* Throws:
|
|
176
|
+
* GateforgeWaiverError: when the file cannot be written.
|
|
177
|
+
*/
|
|
178
|
+
export function writeWaiver(path, waiver) {
|
|
179
|
+
try {
|
|
180
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
181
|
+
writeFileSync(path, serializeWaiver(waiver), 'utf8');
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
throw new GateforgeWaiverError([
|
|
185
|
+
{
|
|
186
|
+
file: basename(path),
|
|
187
|
+
detail: `could not be written: ${error instanceof Error ? error.message : String(error)}`,
|
|
188
|
+
},
|
|
189
|
+
]);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/waivers/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gate-forge/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"description": "Gateforge core: artifact schemas, canonical JSON, fingerprints, config loading.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=20"
|
|
9
|
+
},
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.build.json",
|
|
21
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
22
|
+
"test": "vitest run"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"yaml": "^2.8.1",
|
|
26
|
+
"zod": "^4.1.5"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/umiddey/gateforge.git",
|
|
34
|
+
"directory": "packages/core"
|
|
35
|
+
},
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/umiddey/gateforge/issues"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://github.com/umiddey/gateforge#readme"
|
|
40
|
+
}
|