@agent-teams/engineering-foundation 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-tooling-codec.d.ts +26 -0
- package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-tooling-codec.d.ts.map +1 -0
- package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-tooling-codec.js +316 -0
- package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-tooling-codec.js.map +1 -0
- package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.d.ts +1 -1
- package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.js +12 -9
- package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.js.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.d.ts +1 -1
- package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js +19 -7
- package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.d.ts +2 -0
- package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.js +2 -1
- package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.js.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.js +1 -1
- package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.js.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.js +19 -7
- package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.js.map +1 -1
- package/dist/capabilities/public-api-compatibility/authority-module.d.ts +2 -0
- package/dist/capabilities/public-api-compatibility/authority-module.d.ts.map +1 -1
- package/dist/capabilities/public-api-compatibility/authority-module.js +1 -0
- package/dist/capabilities/public-api-compatibility/authority-module.js.map +1 -1
- package/dist/capabilities/quality-gate-runner/adapters/inbound/node-test-execution/runner.d.ts.map +1 -1
- package/dist/capabilities/quality-gate-runner/adapters/inbound/node-test-execution/runner.js +4 -3
- package/dist/capabilities/quality-gate-runner/adapters/inbound/node-test-execution/runner.js.map +1 -1
- package/dist/composition/sdk-growth-authority.d.ts +2 -0
- package/dist/composition/sdk-growth-authority.d.ts.map +1 -1
- package/dist/composition/sdk-growth-authority.js +1 -0
- package/dist/composition/sdk-growth-authority.js.map +1 -1
- package/dist/process-execution/windows-managed-process.d.ts.map +1 -1
- package/dist/process-execution/windows-managed-process.js +22 -6
- package/dist/process-execution/windows-managed-process.js.map +1 -1
- package/dist/sdk-growth-authority.d.ts +2 -0
- package/dist/sdk-growth-authority.d.ts.map +1 -1
- package/dist/sdk-growth-authority.js +1 -0
- package/dist/sdk-growth-authority.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GrowthAuthorityCompletion, GrowthAuthorityGrant, GrowthAuthorityReceipt, GrowthAuthorityRequest } from "../../../application/model/growth-authority.js";
|
|
2
|
+
import type { GrowthDigest } from "../../../application/model/growth-observation.js";
|
|
3
|
+
export interface GrowthToolingValidated<T> {
|
|
4
|
+
readonly value: T;
|
|
5
|
+
readonly wire: string;
|
|
6
|
+
readonly wireDigest: GrowthDigest;
|
|
7
|
+
readonly protocolDigest: GrowthDigest;
|
|
8
|
+
}
|
|
9
|
+
export type GrowthToolingValidatedReceipt = Omit<GrowthToolingValidated<GrowthAuthorityReceipt>, "protocolDigest">;
|
|
10
|
+
export declare function decodeRequest(value: unknown): GrowthToolingValidated<GrowthAuthorityRequest>;
|
|
11
|
+
export declare function encodeGrant(value: unknown, options: {
|
|
12
|
+
readonly request: unknown;
|
|
13
|
+
readonly now: Date;
|
|
14
|
+
}): GrowthToolingValidated<GrowthAuthorityGrant>;
|
|
15
|
+
export declare function decodeCompletion(value: unknown, options: {
|
|
16
|
+
readonly request: unknown;
|
|
17
|
+
readonly grant: unknown;
|
|
18
|
+
readonly finalizedReportBytes: unknown;
|
|
19
|
+
}): GrowthToolingValidated<GrowthAuthorityCompletion>;
|
|
20
|
+
export declare function encodeReceipt(value: unknown, options: {
|
|
21
|
+
readonly request: unknown;
|
|
22
|
+
readonly grant: unknown;
|
|
23
|
+
readonly completion: unknown;
|
|
24
|
+
readonly finalizedReportBytes: unknown;
|
|
25
|
+
}): GrowthToolingValidatedReceipt;
|
|
26
|
+
//# sourceMappingURL=growth-authority-tooling-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"growth-authority-tooling-codec.d.ts","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-tooling-codec.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAGtK,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAgBrF,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;CACvC;AACD,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAqEnH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,CAG5F;AA4BD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,sBAAsB,CAAC,oBAAoB,CAAC,CAKpJ;AAkID,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CAAE,GAAG,sBAAsB,CAAC,yBAAyB,CAAC,CAG3M;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CAAE,GAAG,6BAA6B,CAUlN"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { types } from "node:util";
|
|
3
|
+
import { growthAuthoritySchemaVersion } from "../../../application/model/growth-authority.js";
|
|
4
|
+
import { GrowthObservationInvariantError } from "../../../application/model/growth-observation.js";
|
|
5
|
+
import { NodeChangeFingerprint } from "../../outbound/crypto/node-change-fingerprint.js";
|
|
6
|
+
import { parseStrictJsonResponse } from "../../outbound/reviewrouter/strict-json-response.js";
|
|
7
|
+
import { growthCanonicalJson, growthObservationReference } from "../../../application/policies/normalize-growth-observation.js";
|
|
8
|
+
import { validateGrowthReport } from "../../../application/policies/validate-growth-report.js";
|
|
9
|
+
import { growthAuthorityCompletionDigest, growthAuthorityGrantDigest, growthAuthorityRequestDigest, growthReportAuthorityDigests, validateGrowthAuthorityBinding, validateGrowthAuthorityGrant, digest, exact, invalid, object, text, validateGrowthAuthorityReceipt, validateGrowthAuthorityRequest } from "../../../application/policies/validate-growth-authority.js";
|
|
10
|
+
const fingerprint = new NodeChangeFingerprint();
|
|
11
|
+
const inspection = Object.freeze({ isProxy: types.isProxy });
|
|
12
|
+
const maximumBytes = 32 * 1024 * 1024;
|
|
13
|
+
const encoder = new TextEncoder();
|
|
14
|
+
/** A descriptor-only snapshot. No producer getter, proxy trap or custom method is invoked. */
|
|
15
|
+
function snapshot(value, budget, depth = 0) {
|
|
16
|
+
if (++budget.nodes > 1_000_000 || depth > 64 || types.isProxy(value)) {
|
|
17
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
18
|
+
}
|
|
19
|
+
if (typeof value === "string") {
|
|
20
|
+
budget.units += value.length;
|
|
21
|
+
if (budget.units > maximumBytes) {
|
|
22
|
+
invalid("growth-authority-tooling-input-budget-exhausted");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (value === null || typeof value === "boolean" || typeof value === "string" || (typeof value === "number" && Number.isSafeInteger(value))) {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
if (typeof value !== "object") {
|
|
29
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
30
|
+
}
|
|
31
|
+
const isArray = Array.isArray(value);
|
|
32
|
+
const prototype = Object.getPrototypeOf(value);
|
|
33
|
+
if (isArray ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null) {
|
|
34
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
35
|
+
}
|
|
36
|
+
return isArray ? snapshotArray(value, budget, depth) : snapshotObject(value, budget, depth);
|
|
37
|
+
}
|
|
38
|
+
function snapshotArray(value, budget, depth) {
|
|
39
|
+
const keys = Reflect.ownKeys(value);
|
|
40
|
+
const length = Object.getOwnPropertyDescriptor(value, "length")?.value;
|
|
41
|
+
if (!Number.isSafeInteger(length) || length < 0 || keys.length !== length + 1) {
|
|
42
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
43
|
+
}
|
|
44
|
+
const result = [];
|
|
45
|
+
for (let index = 0; index < length; index += 1) {
|
|
46
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
47
|
+
if (descriptor === undefined || !("value" in descriptor) || descriptor.enumerable !== true) {
|
|
48
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
49
|
+
}
|
|
50
|
+
result.push(snapshot(descriptor.value, budget, depth + 1));
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function snapshotObject(value, budget, depth) {
|
|
55
|
+
const result = Object.create(null);
|
|
56
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
57
|
+
if (typeof key !== "string" || key.normalize("NFC") !== key) {
|
|
58
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
59
|
+
}
|
|
60
|
+
budget.units += key.length;
|
|
61
|
+
if (budget.units > maximumBytes) {
|
|
62
|
+
invalid("growth-authority-tooling-input-budget-exhausted");
|
|
63
|
+
}
|
|
64
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
65
|
+
if (descriptor === undefined || !("value" in descriptor) || descriptor.enumerable !== true) {
|
|
66
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
67
|
+
}
|
|
68
|
+
Object.defineProperty(result, key, { value: snapshot(descriptor.value, budget, depth + 1), enumerable: true, configurable: true, writable: true });
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
function input(value) {
|
|
73
|
+
let parsed = value;
|
|
74
|
+
if (typeof value === "string") {
|
|
75
|
+
if (value.length > maximumBytes || encoder.encode(value).byteLength > maximumBytes) {
|
|
76
|
+
invalid("growth-authority-tooling-input-budget-exhausted");
|
|
77
|
+
}
|
|
78
|
+
parsed = parseStrictJsonResponse(value, 64);
|
|
79
|
+
}
|
|
80
|
+
else if (intrinsicByteLength(value) !== null) {
|
|
81
|
+
const bytes = copyBytes(value);
|
|
82
|
+
parsed = parseStrictJsonResponse(new TextDecoder("utf-8", { fatal: true }).decode(bytes), 64);
|
|
83
|
+
}
|
|
84
|
+
const safe = snapshot(parsed, { nodes: 0, units: 0 });
|
|
85
|
+
if (encoder.encode(growthCanonicalJson(safe)).byteLength > maximumBytes) {
|
|
86
|
+
invalid("growth-authority-tooling-input-budget-exhausted");
|
|
87
|
+
}
|
|
88
|
+
return safe;
|
|
89
|
+
}
|
|
90
|
+
function optionsRecord(value, keys) {
|
|
91
|
+
if (types.isProxy(value) || value === null || typeof value !== "object" || Array.isArray(value)
|
|
92
|
+
|| Object.getPrototypeOf(value) !== Object.prototype) {
|
|
93
|
+
invalid("growth-authority-tooling-options-unsafe");
|
|
94
|
+
}
|
|
95
|
+
return object(value, keys, "growth-authority-tooling-options-unsafe");
|
|
96
|
+
}
|
|
97
|
+
function wire(value) {
|
|
98
|
+
const serialized = growthCanonicalJson(value);
|
|
99
|
+
return { value, wire: serialized, wireDigest: `sha256:${createHash("sha256").update(serialized).digest("hex")}` };
|
|
100
|
+
}
|
|
101
|
+
function request(value) {
|
|
102
|
+
return validateGrowthAuthorityRequest(input(value));
|
|
103
|
+
}
|
|
104
|
+
export function decodeRequest(value) {
|
|
105
|
+
const validated = request(value);
|
|
106
|
+
return { ...wire(validated), protocolDigest: growthAuthorityRequestDigest(validated, fingerprint) };
|
|
107
|
+
}
|
|
108
|
+
function grant(value, validatedRequest, now) {
|
|
109
|
+
return validateGrowthAuthorityGrant(input(value), validatedRequest, fingerprint, inspection, now);
|
|
110
|
+
}
|
|
111
|
+
function historicalGrant(value, validatedRequest) {
|
|
112
|
+
const safe = input(value);
|
|
113
|
+
return validateGrowthAuthorityGrant(safe, validatedRequest, fingerprint, inspection, historicalTime(safe));
|
|
114
|
+
}
|
|
115
|
+
function issuanceTime(value) {
|
|
116
|
+
if (types.isProxy(value) || value === null || typeof value !== "object") {
|
|
117
|
+
invalid("growth-authority-trusted-time-invalid");
|
|
118
|
+
}
|
|
119
|
+
let milliseconds;
|
|
120
|
+
try {
|
|
121
|
+
milliseconds = Date.prototype.getTime.call(value);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
invalid("growth-authority-trusted-time-invalid");
|
|
125
|
+
}
|
|
126
|
+
if (Object.getPrototypeOf(value) !== Date.prototype) {
|
|
127
|
+
invalid("growth-authority-trusted-time-invalid");
|
|
128
|
+
}
|
|
129
|
+
if (!Number.isFinite(milliseconds)) {
|
|
130
|
+
invalid("growth-authority-trusted-time-invalid");
|
|
131
|
+
}
|
|
132
|
+
return new Date(milliseconds);
|
|
133
|
+
}
|
|
134
|
+
function historicalTime(value) {
|
|
135
|
+
const row = object(value, ["schemaVersion", "kind", "grantId", "requestDigest", "admissionReceipt", "binding", "workflowRef", "runRef", "issuedAt", "expiresAt",
|
|
136
|
+
"trustedBase", "trustedBaseReference", "retainedHistory", "released", "ownerEvidence", "archives", "candidates", "metadataRoots", "requiredCoverageDigest", "requiredPhases"]);
|
|
137
|
+
// Historical decoding tests the closed grant during its own validity window.
|
|
138
|
+
// A promotion admission receipt can be issued after the promotion grant's
|
|
139
|
+
// issuedAt, so the lower bound is not a valid historical observation time.
|
|
140
|
+
const expires = new Date(text(row["expiresAt"]));
|
|
141
|
+
if (!Number.isFinite(expires.getTime())) {
|
|
142
|
+
invalid("growth-authority-time-invalid");
|
|
143
|
+
}
|
|
144
|
+
return new Date(expires.getTime() - 1);
|
|
145
|
+
}
|
|
146
|
+
export function encodeGrant(value, options) {
|
|
147
|
+
const args = optionsRecord(options, ["request", "now"]);
|
|
148
|
+
const validatedRequest = request(args["request"]);
|
|
149
|
+
const validated = grant(value, validatedRequest, issuanceTime(args["now"]));
|
|
150
|
+
return { ...wire(validated), protocolDigest: growthAuthorityGrantDigest(validated, fingerprint) };
|
|
151
|
+
}
|
|
152
|
+
function intrinsicByteLength(value) {
|
|
153
|
+
if (types.isProxy(value) || value === null || typeof value !== "object") {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
try {
|
|
157
|
+
const length = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), "byteLength")?.get?.call(value);
|
|
158
|
+
return typeof length === "number" ? length : null;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function copyBytes(value) {
|
|
165
|
+
const length = intrinsicByteLength(value);
|
|
166
|
+
if (length === null) {
|
|
167
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
168
|
+
}
|
|
169
|
+
const source = value; // Intrinsic typed-array brand was checked above.
|
|
170
|
+
const prototype = Object.getPrototypeOf(source);
|
|
171
|
+
if (prototype !== Uint8Array.prototype && prototype !== Buffer.prototype) {
|
|
172
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
173
|
+
}
|
|
174
|
+
if (["byteLength", "byteOffset", "buffer", "length"].some((key) => Object.hasOwn(source, key))
|
|
175
|
+
|| Object.hasOwn(source, Symbol.iterator)) {
|
|
176
|
+
invalid("growth-authority-tooling-input-unsafe");
|
|
177
|
+
}
|
|
178
|
+
if (typeof length !== "number" || length === 0 || length > maximumBytes) {
|
|
179
|
+
invalid("growth-authority-tooling-input-budget-exhausted");
|
|
180
|
+
}
|
|
181
|
+
return Uint8Array.from(Uint8Array.prototype.values.call(source));
|
|
182
|
+
}
|
|
183
|
+
function reportBytes(value) {
|
|
184
|
+
return copyBytes(value);
|
|
185
|
+
}
|
|
186
|
+
/** Pure parser for the exact retained report artifact, including its final LF. */
|
|
187
|
+
function parseFinalizedGrowthReportBytes(bytes, reportFingerprint) {
|
|
188
|
+
const safe = reportBytes(bytes);
|
|
189
|
+
let source;
|
|
190
|
+
try {
|
|
191
|
+
source = new TextDecoder("utf-8", { fatal: true }).decode(safe);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
throw new GrowthObservationInvariantError("growth-authority-report-json-invalid");
|
|
195
|
+
}
|
|
196
|
+
const report = validateGrowthReport(parseStrictJsonResponse(source, 64), reportFingerprint);
|
|
197
|
+
if (!Buffer.from(safe).equals(Buffer.from(`${growthCanonicalJson(report)}\n`, "utf8"))) {
|
|
198
|
+
throw new GrowthObservationInvariantError("growth-authority-report-bytes-invalid");
|
|
199
|
+
}
|
|
200
|
+
return report;
|
|
201
|
+
}
|
|
202
|
+
function assertReportBinding(report, requestValue, current, bytes) {
|
|
203
|
+
const authorityGrant = requestValue.operation === "check" ? current
|
|
204
|
+
: current.admissionReceipt.kind === "receipt" ? current.admissionReceipt.receipt.provenance?.grant : undefined;
|
|
205
|
+
if (requestValue.operation === "promote-release" && current.admissionReceipt.kind === "receipt" && authorityGrant !== undefined) {
|
|
206
|
+
const priorCompletion = current.admissionReceipt.receipt.provenance?.completion;
|
|
207
|
+
if (priorCompletion === undefined) {
|
|
208
|
+
invalid("growth-authority-admission-provenance-invalid");
|
|
209
|
+
}
|
|
210
|
+
const priorRow = object(priorCompletion, ["schemaVersion", "kind", "grantId", "grantDigest", "requestDigest", "binding", "reportDigest", "reportByteLength",
|
|
211
|
+
"coverageDigest", "phasesDigest", "verdict", "releaseEligible", "publication", "promotion"]);
|
|
212
|
+
assertCompletionFields(priorRow, authorityGrant, report, bytes, authorityGrant.requestDigest);
|
|
213
|
+
}
|
|
214
|
+
if (authorityGrant === undefined || report.authority.status !== "verified"
|
|
215
|
+
|| report.authority.receiptDigest !== growthAuthorityGrantDigest(authorityGrant, fingerprint)
|
|
216
|
+
|| report.authority.workflowRef !== authorityGrant.workflowRef || report.authority.runRef !== authorityGrant.runRef) {
|
|
217
|
+
invalid("growth-authority-completion-report-authority-mismatch");
|
|
218
|
+
}
|
|
219
|
+
assertReportSources(report, authorityGrant);
|
|
220
|
+
const coverageDigest = growthReportAuthorityDigests(report, fingerprint).coverageDigest;
|
|
221
|
+
if (coverageDigest !== authorityGrant.requiredCoverageDigest || coverageDigest !== current.requiredCoverageDigest) {
|
|
222
|
+
invalid("growth-authority-coverage-mismatch");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function assertReportSources(report, authorityGrant) {
|
|
226
|
+
const invocation = authorityGrant.binding.invocation;
|
|
227
|
+
exact(report.repository, invocation.repository, "growth-authority-report-source-mismatch");
|
|
228
|
+
exact(report.tool, invocation.tool, "growth-authority-report-source-mismatch");
|
|
229
|
+
if (report.trustedBase.status === "available") {
|
|
230
|
+
exact(report.trustedBase.value, authorityGrant.trustedBaseReference, "growth-authority-report-source-mismatch");
|
|
231
|
+
}
|
|
232
|
+
if (report.candidate.status === "available") {
|
|
233
|
+
const candidate = report.candidate.value;
|
|
234
|
+
exact({ sourceCommit: candidate.sourceCommit, sourceTree: candidate.sourceTree, topologyDigest: candidate.topologyDigest,
|
|
235
|
+
lockDigest: candidate.lockDigest, toolchainDigest: candidate.toolchainDigest, artifactDigests: candidate.artifactDigests }, { sourceCommit: invocation.sourceCommit, sourceTree: invocation.sourceTree, topologyDigest: invocation.topologyDigest,
|
|
236
|
+
lockDigest: invocation.lockDigest, toolchainDigest: invocation.toolchainDigest, artifactDigests: invocation.artifactDigests }, "growth-authority-report-source-mismatch");
|
|
237
|
+
}
|
|
238
|
+
if (report.trustedBaseComparison.status === "complete") {
|
|
239
|
+
if (report.trustedBase.status !== "available" || report.candidate.status !== "available") {
|
|
240
|
+
invalid("growth-authority-report-source-mismatch");
|
|
241
|
+
}
|
|
242
|
+
exact({ before: report.trustedBaseComparison.before, after: report.trustedBaseComparison.after }, { before: report.trustedBase.value.surfaceDigest, after: report.candidate.value.surfaceDigest }, "growth-authority-report-source-mismatch");
|
|
243
|
+
}
|
|
244
|
+
if (report.verdict === "admitted") {
|
|
245
|
+
exact(report.transitionReceipts[0]?.decisions, authorityGrant.ownerEvidence.map((entry) => entry.decisionDigest).toSorted(), "growth-authority-report-source-mismatch");
|
|
246
|
+
}
|
|
247
|
+
exact(report.released.map((row) => ({ packageName: row.packageName, kind: row.evidence.kind })), authorityGrant.released.map((row) => ({ packageName: row.packageName, kind: row.evidence.kind })), "growth-authority-report-source-mismatch");
|
|
248
|
+
for (const row of report.released) {
|
|
249
|
+
const retained = authorityGrant.released.find((entry) => entry.packageName === row.packageName);
|
|
250
|
+
if (retained?.evidence.kind === "released" && row.evidence.kind === "released" && row.evidence.observation.status === "available") {
|
|
251
|
+
const archive = authorityGrant.archives.find((entry) => entry.packageName === row.packageName);
|
|
252
|
+
if (archive === undefined) {
|
|
253
|
+
invalid("growth-authority-report-source-mismatch");
|
|
254
|
+
}
|
|
255
|
+
exact(row.evidence.observation.value, growthObservationReference(archive.observation, fingerprint), "growth-authority-report-source-mismatch");
|
|
256
|
+
}
|
|
257
|
+
if (retained?.evidence.kind === "initial-unreleased" && row.evidence.kind === "initial-unreleased" && row.evidence.history.status === "available") {
|
|
258
|
+
exact(row.evidence.history.value, retained.evidence.historyDigest, "growth-authority-report-source-mismatch");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
function assertCompletionFields(row, grantValue, report, bytes, requestDigest) {
|
|
263
|
+
const reportDigests = growthReportAuthorityDigests(report, fingerprint);
|
|
264
|
+
const reportDigest = `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
|
|
265
|
+
if (row["grantId"] !== grantValue.grantId || row["grantDigest"] !== growthAuthorityGrantDigest(grantValue, fingerprint)
|
|
266
|
+
|| row["requestDigest"] !== requestDigest
|
|
267
|
+
|| row["reportDigest"] !== reportDigest || row["reportByteLength"] !== bytes.byteLength
|
|
268
|
+
|| row["coverageDigest"] !== reportDigests.coverageDigest || row["phasesDigest"] !== reportDigests.phasesDigest
|
|
269
|
+
|| row["verdict"] !== report.verdict || row["releaseEligible"] !== report.releaseEligible) {
|
|
270
|
+
invalid("growth-authority-completion-mismatch");
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function validateCompletion(value, options, validatedContext) {
|
|
274
|
+
const args = optionsRecord(options, ["request", "grant", "finalizedReportBytes"]);
|
|
275
|
+
const validatedRequest = validatedContext?.request ?? request(args["request"]);
|
|
276
|
+
const validatedGrant = validatedContext?.grant ?? historicalGrant(args["grant"], validatedRequest);
|
|
277
|
+
const row = object(input(value), ["schemaVersion", "kind", "grantId", "grantDigest", "requestDigest", "binding", "reportDigest", "reportByteLength",
|
|
278
|
+
"coverageDigest", "phasesDigest", "verdict", "releaseEligible", "publication", "promotion"]);
|
|
279
|
+
if (row["schemaVersion"] !== growthAuthoritySchemaVersion || row["kind"] !== "completion" || row["publication"] !== "finalized") {
|
|
280
|
+
invalid("growth-authority-completion-invalid");
|
|
281
|
+
}
|
|
282
|
+
const binding = validateGrowthAuthorityBinding(row["binding"]);
|
|
283
|
+
exact(binding, validatedRequest.binding, "growth-authority-completion-binding-mismatch");
|
|
284
|
+
const bytes = reportBytes(args["finalizedReportBytes"]);
|
|
285
|
+
const report = parseFinalizedGrowthReportBytes(bytes, fingerprint);
|
|
286
|
+
assertReportBinding(report, validatedRequest, validatedGrant, bytes);
|
|
287
|
+
const reportDigests = growthReportAuthorityDigests(report, fingerprint);
|
|
288
|
+
const promotion = object(row["promotion"], validatedRequest.operation === "check" ? ["kind"] : ["kind", "planDigest"]);
|
|
289
|
+
if ((validatedRequest.operation === "check" && promotion["kind"] !== "none")
|
|
290
|
+
|| (validatedRequest.operation === "promote-release" && promotion["kind"] !== "plan")) {
|
|
291
|
+
invalid("growth-authority-promotion-invalid");
|
|
292
|
+
}
|
|
293
|
+
const normalizedPromotion = promotion["kind"] === "none" ? { kind: "none" } : { kind: "plan", planDigest: digest(promotion["planDigest"]) };
|
|
294
|
+
assertCompletionFields(row, validatedGrant, report, bytes, growthAuthorityRequestDigest(validatedRequest, fingerprint));
|
|
295
|
+
return { schemaVersion: growthAuthoritySchemaVersion, kind: "completion", grantId: validatedGrant.grantId,
|
|
296
|
+
grantDigest: digest(row["grantDigest"]), requestDigest: digest(row["requestDigest"]), binding,
|
|
297
|
+
reportDigest: digest(row["reportDigest"]), reportByteLength: bytes.byteLength, coverageDigest: reportDigests.coverageDigest, phasesDigest: reportDigests.phasesDigest,
|
|
298
|
+
verdict: report.verdict, releaseEligible: report.releaseEligible, publication: "finalized", promotion: normalizedPromotion };
|
|
299
|
+
}
|
|
300
|
+
export function decodeCompletion(value, options) {
|
|
301
|
+
const validated = validateCompletion(value, options);
|
|
302
|
+
return { ...wire(validated), protocolDigest: growthAuthorityCompletionDigest(validated, fingerprint) };
|
|
303
|
+
}
|
|
304
|
+
export function encodeReceipt(value, options) {
|
|
305
|
+
const args = optionsRecord(options, ["request", "grant", "completion", "finalizedReportBytes"]);
|
|
306
|
+
const validatedRequest = request(args["request"]);
|
|
307
|
+
const validatedGrant = historicalGrant(args["grant"], validatedRequest);
|
|
308
|
+
const validatedCompletion = validateCompletion(args["completion"], { request: validatedRequest, grant: validatedGrant, finalizedReportBytes: args["finalizedReportBytes"] }, { request: validatedRequest, grant: validatedGrant });
|
|
309
|
+
const validated = validateGrowthAuthorityReceipt(input(value), validatedCompletion, validatedRequest.operation, fingerprint);
|
|
310
|
+
if (validated.grantId !== validatedGrant.grantId || validated.grantDigest !== growthAuthorityGrantDigest(validatedGrant, fingerprint)
|
|
311
|
+
|| validated.requestDigest !== growthAuthorityRequestDigest(validatedRequest, fingerprint)) {
|
|
312
|
+
invalid("growth-authority-receipt-grant-mismatch");
|
|
313
|
+
}
|
|
314
|
+
return wire(validated);
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=growth-authority-tooling-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"growth-authority-tooling-codec.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-tooling-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Validate duplicate-key and grammar invariants before JSON.parse erases the
|
|
2
2
|
* original token stream. JSON.parse then creates ordinary data objects without
|
|
3
3
|
* carrying accessors or Proxy behavior across the transport boundary. */
|
|
4
|
-
export declare function parseStrictJsonResponse(source: string): unknown;
|
|
4
|
+
export declare function parseStrictJsonResponse(source: string, maximumDepth?: number): unknown;
|
|
5
5
|
//# sourceMappingURL=strict-json-response.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict-json-response.d.ts","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.ts"],"names":[],"mappings":"AAIA;;yEAEyE;AACzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"strict-json-response.d.ts","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.ts"],"names":[],"mappings":"AAIA;;yEAEyE;AACzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CA0DtF"}
|
|
@@ -4,7 +4,7 @@ function malformed(reason) {
|
|
|
4
4
|
/** Validate duplicate-key and grammar invariants before JSON.parse erases the
|
|
5
5
|
* original token stream. JSON.parse then creates ordinary data objects without
|
|
6
6
|
* carrying accessors or Proxy behavior across the transport boundary. */
|
|
7
|
-
export function parseStrictJsonResponse(source) {
|
|
7
|
+
export function parseStrictJsonResponse(source, maximumDepth) {
|
|
8
8
|
let offset = 0;
|
|
9
9
|
const space = () => { while (/\s/u.test(source[offset] ?? "")) {
|
|
10
10
|
offset += 1;
|
|
@@ -41,15 +41,18 @@ export function parseStrictJsonResponse(source) {
|
|
|
41
41
|
}
|
|
42
42
|
return malformed("syntax");
|
|
43
43
|
};
|
|
44
|
-
const value = () => {
|
|
44
|
+
const value = (depth) => {
|
|
45
|
+
if (maximumDepth !== undefined && depth > maximumDepth) {
|
|
46
|
+
malformed("depth");
|
|
47
|
+
}
|
|
45
48
|
space();
|
|
46
49
|
const character = source[offset];
|
|
47
50
|
if (character === "{") {
|
|
48
|
-
object();
|
|
51
|
+
object(depth);
|
|
49
52
|
return;
|
|
50
53
|
}
|
|
51
54
|
if (character === "[") {
|
|
52
|
-
array();
|
|
55
|
+
array(depth);
|
|
53
56
|
return;
|
|
54
57
|
}
|
|
55
58
|
if (character === '"') {
|
|
@@ -62,7 +65,7 @@ export function parseStrictJsonResponse(source) {
|
|
|
62
65
|
}
|
|
63
66
|
offset += token.length;
|
|
64
67
|
};
|
|
65
|
-
const array = () => {
|
|
68
|
+
const array = (depth) => {
|
|
66
69
|
take("[");
|
|
67
70
|
space();
|
|
68
71
|
if (source[offset] === "]") {
|
|
@@ -70,7 +73,7 @@ export function parseStrictJsonResponse(source) {
|
|
|
70
73
|
return;
|
|
71
74
|
}
|
|
72
75
|
for (;;) {
|
|
73
|
-
value();
|
|
76
|
+
value(depth + 1);
|
|
74
77
|
space();
|
|
75
78
|
if (source[offset] === "]") {
|
|
76
79
|
offset += 1;
|
|
@@ -79,7 +82,7 @@ export function parseStrictJsonResponse(source) {
|
|
|
79
82
|
take(",");
|
|
80
83
|
}
|
|
81
84
|
};
|
|
82
|
-
const object = () => {
|
|
85
|
+
const object = (depth) => {
|
|
83
86
|
take("{");
|
|
84
87
|
const keys = new Set();
|
|
85
88
|
space();
|
|
@@ -94,7 +97,7 @@ export function parseStrictJsonResponse(source) {
|
|
|
94
97
|
}
|
|
95
98
|
keys.add(key);
|
|
96
99
|
take(":");
|
|
97
|
-
value();
|
|
100
|
+
value(depth + 1);
|
|
98
101
|
space();
|
|
99
102
|
if (source[offset] === "}") {
|
|
100
103
|
offset += 1;
|
|
@@ -103,7 +106,7 @@ export function parseStrictJsonResponse(source) {
|
|
|
103
106
|
take(",");
|
|
104
107
|
}
|
|
105
108
|
};
|
|
106
|
-
value();
|
|
109
|
+
value(0);
|
|
107
110
|
space();
|
|
108
111
|
if (offset !== source.length) {
|
|
109
112
|
malformed("syntax");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict-json-response.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"strict-json-response.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.ts"],"names":[],"mappings":"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"}
|
package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import type { ChangeFingerprint } from "../ports/change-fingerprint.js";
|
|
|
3
3
|
import type { GrowthReport } from "../model/growth-report.js";
|
|
4
4
|
/** Project only retained evidence. V1 release snapshots cannot manufacture
|
|
5
5
|
* released growth observations or trusted transition receipts. */
|
|
6
|
-
export declare function projectGrowthReport(execution: SdkGrowthAdmissionExecution, fingerprint: ChangeFingerprint): GrowthReport;
|
|
6
|
+
export declare function projectGrowthReport(execution: SdkGrowthAdmissionExecution, fingerprint: ChangeFingerprint, governedPackages: readonly string[]): GrowthReport;
|
|
7
7
|
//# sourceMappingURL=project-growth-report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-growth-report.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/project-growth-report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"project-growth-report.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/project-growth-report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D;kEACkE;AAClE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,2BAA2B,EAAE,WAAW,EAAE,iBAAiB,EACxG,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAsCnD"}
|
package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { compareGrowthSurfaces, hashGrowthPayload } from "./compare-growth-surfaces.js";
|
|
2
|
+
import { growthDimensions } from "../model/growth-observation.js";
|
|
2
3
|
import { growthReportPhases } from "../model/growth-report.js";
|
|
3
4
|
import { growthCanonicalJson, growthObservationReference, growthUniqueSorted, normalizeGrowthObservation } from "./normalize-growth-observation.js";
|
|
4
5
|
/** Project only retained evidence. V1 release snapshots cannot manufacture
|
|
5
6
|
* released growth observations or trusted transition receipts. */
|
|
6
|
-
export function projectGrowthReport(execution, fingerprint) {
|
|
7
|
+
export function projectGrowthReport(execution, fingerprint, governedPackages) {
|
|
7
8
|
const surface = execution.observation.surface;
|
|
8
9
|
const candidate = surface.status === "available" ? { status: "available",
|
|
9
10
|
value: growthObservationReference(surface.value, fingerprint) } : surface;
|
|
10
11
|
const authority = projectAuthority(execution.authority);
|
|
11
12
|
const releasedComparison = compareReleased(execution, fingerprint);
|
|
12
13
|
const decisionComplete = authority.status === "verified" && execution.admission.status !== "incomplete";
|
|
13
|
-
const coverage = reportCoverage(execution, decisionComplete);
|
|
14
|
+
const coverage = reportCoverage(execution, decisionComplete, governedPackages);
|
|
14
15
|
const released = growthUniqueSorted(execution.released, (row) => row.packageName).map((row) => ({
|
|
15
16
|
packageName: row.packageName, evidence: row.evidence.kind === "initial-unreleased"
|
|
16
17
|
? { kind: "initial-unreleased", history: row.evidence.history }
|
|
@@ -108,16 +109,24 @@ function projectAuthority(authority) {
|
|
|
108
109
|
? { status: "verified", workflowRef: authority.workflowRef, runRef: authority.runRef, receiptDigest: authority.receiptDigest }
|
|
109
110
|
: { status: "unverified", reasons: ["growth-workflow-and-run-reference-unavailable"] };
|
|
110
111
|
}
|
|
111
|
-
function reportCoverage(execution, decisionComplete) {
|
|
112
|
+
function reportCoverage(execution, decisionComplete, governedPackages) {
|
|
112
113
|
const base = execution.baseSurface.status === "available" ? execution.baseSurface.value.coverage : [];
|
|
113
|
-
const
|
|
114
|
-
const
|
|
114
|
+
const surface = execution.observation.surface;
|
|
115
|
+
const candidate = surface.status === "available" ? surface.value.coverage : [];
|
|
116
|
+
// Only an observed candidate proves that a governed package left the topology;
|
|
117
|
+
// otherwise the candidate row is missing for the surface's own reason.
|
|
118
|
+
const candidateMissing = surface.status === "available" ? ["candidate:package-outside-observed-topology"]
|
|
119
|
+
: surface.reasons.map((reason) => `candidate:${reason}`);
|
|
120
|
+
const names = [...new Set([...base.map((row) => row.packageName), ...candidate.map((row) => row.packageName),
|
|
121
|
+
...execution.released.map((row) => row.packageName), ...governedPackages])].toSorted();
|
|
115
122
|
const baseByPackage = new Map(base.map((entry) => [entry.packageName, entry]));
|
|
116
123
|
const candidateByPackage = new Map(candidate.map((entry) => [entry.packageName, entry]));
|
|
117
124
|
const rank = { complete: 0, limited: 1, unsupported: 2, unavailable: 3 };
|
|
118
125
|
return names.map((name) => {
|
|
119
126
|
const previous = baseByPackage.get(name), current = candidateByPackage.get(name);
|
|
120
|
-
const row = current ?? previous
|
|
127
|
+
const row = current ?? previous ?? { packageName: name, classification: "governed",
|
|
128
|
+
dimensions: growthDimensions.map((dimension) => ({ dimension, status: "unavailable",
|
|
129
|
+
reasons: candidateMissing })) };
|
|
121
130
|
const beforeByDimension = new Map(previous?.dimensions.map((entry) => [entry.dimension, entry]));
|
|
122
131
|
const afterByDimension = new Map(current?.dimensions.map((entry) => [entry.dimension, entry]));
|
|
123
132
|
return { ...row, dimensions: row.dimensions.map((dimension) => {
|
|
@@ -126,7 +135,10 @@ function reportCoverage(execution, decisionComplete) {
|
|
|
126
135
|
}
|
|
127
136
|
const before = beforeByDimension.get(dimension.dimension);
|
|
128
137
|
const after = afterByDimension.get(dimension.dimension);
|
|
129
|
-
if (
|
|
138
|
+
if (after === undefined) {
|
|
139
|
+
return { ...dimension, status: "unavailable", reasons: candidateMissing };
|
|
140
|
+
}
|
|
141
|
+
if (before === undefined) {
|
|
130
142
|
return dimension;
|
|
131
143
|
}
|
|
132
144
|
return { ...dimension, status: rank[before.status] > rank[after.status] ? before.status : after.status,
|
package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-growth-report.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/project-growth-report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-growth-report.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/project-growth-report.ts"],"names":[],"mappings":"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"}
|