@agent-teams/engineering-foundation 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-capability-config.d.ts +2 -2
  2. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-capability-config.d.ts.map +1 -1
  3. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-capability-config.js +15 -4
  4. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-capability-config.js.map +1 -1
  5. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/parse-growth-config.d.ts +8 -0
  6. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/parse-growth-config.d.ts.map +1 -0
  7. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/parse-growth-config.js +54 -0
  8. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/parse-growth-config.js.map +1 -0
  9. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-input-context.d.ts +18 -0
  10. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-input-context.d.ts.map +1 -0
  11. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-input-context.js +194 -0
  12. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-input-context.js.map +1 -0
  13. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.d.ts +15 -0
  14. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.d.ts.map +1 -0
  15. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.js +173 -0
  16. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.js.map +1 -0
  17. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.d.ts +10 -0
  18. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.d.ts.map +1 -0
  19. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.js +238 -0
  20. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.js.map +1 -0
  21. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/workspace-growth-reader.d.ts +4 -0
  22. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/workspace-growth-reader.d.ts.map +1 -0
  23. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/workspace-growth-reader.js +15 -0
  24. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/workspace-growth-reader.js.map +1 -0
  25. package/dist/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.d.ts +1 -6
  26. package/dist/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.d.ts.map +1 -1
  27. package/dist/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.js +7 -1
  28. package/dist/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.js.map +1 -1
  29. package/dist/capabilities/public-api-compatibility/adapters/schema-validation.d.ts +1 -1
  30. package/dist/capabilities/public-api-compatibility/adapters/schema-validation.d.ts.map +1 -1
  31. package/dist/capabilities/public-api-compatibility/application/model/growth-admission-context.d.ts +54 -0
  32. package/dist/capabilities/public-api-compatibility/application/model/growth-admission-context.d.ts.map +1 -0
  33. package/dist/capabilities/public-api-compatibility/application/model/growth-admission-context.js +2 -0
  34. package/dist/capabilities/public-api-compatibility/application/model/growth-admission-context.js.map +1 -0
  35. package/dist/capabilities/public-api-compatibility/application/model/growth-admission.d.ts +77 -0
  36. package/dist/capabilities/public-api-compatibility/application/model/growth-admission.d.ts.map +1 -0
  37. package/dist/capabilities/public-api-compatibility/application/model/growth-admission.js +3 -0
  38. package/dist/capabilities/public-api-compatibility/application/model/growth-admission.js.map +1 -0
  39. package/dist/capabilities/public-api-compatibility/application/model/growth-configuration.d.ts +16 -0
  40. package/dist/capabilities/public-api-compatibility/application/model/growth-configuration.d.ts.map +1 -0
  41. package/dist/capabilities/public-api-compatibility/application/model/growth-configuration.js +2 -0
  42. package/dist/capabilities/public-api-compatibility/application/model/growth-configuration.js.map +1 -0
  43. package/dist/capabilities/public-api-compatibility/application/model/growth-observation.d.ts +119 -0
  44. package/dist/capabilities/public-api-compatibility/application/model/growth-observation.d.ts.map +1 -0
  45. package/dist/capabilities/public-api-compatibility/application/model/growth-observation.js +19 -0
  46. package/dist/capabilities/public-api-compatibility/application/model/growth-observation.js.map +1 -0
  47. package/dist/capabilities/public-api-compatibility/application/model/growth-report.d.ts +47 -0
  48. package/dist/capabilities/public-api-compatibility/application/model/growth-report.d.ts.map +1 -0
  49. package/dist/capabilities/public-api-compatibility/application/model/growth-report.js +2 -0
  50. package/dist/capabilities/public-api-compatibility/application/model/growth-report.js.map +1 -0
  51. package/dist/capabilities/public-api-compatibility/application/model/growth-workspace.d.ts +18 -0
  52. package/dist/capabilities/public-api-compatibility/application/model/growth-workspace.d.ts.map +1 -0
  53. package/dist/capabilities/public-api-compatibility/application/model/growth-workspace.js +2 -0
  54. package/dist/capabilities/public-api-compatibility/application/model/growth-workspace.js.map +1 -0
  55. package/dist/capabilities/public-api-compatibility/application/policies/compare-growth-surfaces.d.ts +22 -0
  56. package/dist/capabilities/public-api-compatibility/application/policies/compare-growth-surfaces.d.ts.map +1 -0
  57. package/dist/capabilities/public-api-compatibility/application/policies/compare-growth-surfaces.js +114 -0
  58. package/dist/capabilities/public-api-compatibility/application/policies/compare-growth-surfaces.js.map +1 -0
  59. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.d.ts +13 -0
  60. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.d.ts.map +1 -0
  61. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.js +162 -0
  62. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.js.map +1 -0
  63. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.d.ts +20 -0
  64. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.d.ts.map +1 -0
  65. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.js +73 -0
  66. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.js.map +1 -0
  67. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.d.ts +15 -0
  68. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.d.ts.map +1 -0
  69. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.js +130 -0
  70. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.js.map +1 -0
  71. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-package.d.ts +17 -0
  72. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-package.d.ts.map +1 -0
  73. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-package.js +124 -0
  74. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-package.js.map +1 -0
  75. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.d.ts +7 -0
  76. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.d.ts.map +1 -0
  77. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js +109 -0
  78. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js.map +1 -0
  79. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-resolution.d.ts +11 -0
  80. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-resolution.d.ts.map +1 -0
  81. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-resolution.js +53 -0
  82. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-resolution.js.map +1 -0
  83. package/dist/capabilities/public-api-compatibility/application/policies/retain-growth-compatibility.d.ts +26 -0
  84. package/dist/capabilities/public-api-compatibility/application/policies/retain-growth-compatibility.d.ts.map +1 -0
  85. package/dist/capabilities/public-api-compatibility/application/policies/retain-growth-compatibility.js +63 -0
  86. package/dist/capabilities/public-api-compatibility/application/policies/retain-growth-compatibility.js.map +1 -0
  87. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-decision.d.ts +5 -0
  88. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-decision.d.ts.map +1 -0
  89. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-decision.js +86 -0
  90. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-decision.js.map +1 -0
  91. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-execution.d.ts +5 -0
  92. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-execution.d.ts.map +1 -0
  93. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-execution.js +51 -0
  94. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-execution.js.map +1 -0
  95. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-observation.d.ts +4 -0
  96. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-observation.d.ts.map +1 -0
  97. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-observation.js +125 -0
  98. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-observation.js.map +1 -0
  99. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-report.d.ts +5 -0
  100. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-report.d.ts.map +1 -0
  101. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-report.js +156 -0
  102. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-report.js.map +1 -0
  103. package/dist/capabilities/public-api-compatibility/application/ports/accepted-decision-evidence.d.ts +5 -0
  104. package/dist/capabilities/public-api-compatibility/application/ports/accepted-decision-evidence.d.ts.map +1 -1
  105. package/dist/capabilities/public-api-compatibility/application/ports/growth-input-context.d.ts +9 -0
  106. package/dist/capabilities/public-api-compatibility/application/ports/growth-input-context.d.ts.map +1 -0
  107. package/dist/capabilities/public-api-compatibility/application/ports/growth-input-context.js +2 -0
  108. package/dist/capabilities/public-api-compatibility/application/ports/growth-input-context.js.map +1 -0
  109. package/dist/capabilities/public-api-compatibility/application/ports/growth-observation.d.ts +6 -0
  110. package/dist/capabilities/public-api-compatibility/application/ports/growth-observation.d.ts.map +1 -0
  111. package/dist/capabilities/public-api-compatibility/application/ports/growth-observation.js +2 -0
  112. package/dist/capabilities/public-api-compatibility/application/ports/growth-observation.js.map +1 -0
  113. package/dist/capabilities/public-api-compatibility/application/ports/growth-report-writer.d.ts +22 -0
  114. package/dist/capabilities/public-api-compatibility/application/ports/growth-report-writer.d.ts.map +1 -0
  115. package/dist/capabilities/public-api-compatibility/application/ports/growth-report-writer.js +11 -0
  116. package/dist/capabilities/public-api-compatibility/application/ports/growth-report-writer.js.map +1 -0
  117. package/dist/capabilities/public-api-compatibility/application/ports/growth-workspace.d.ts +7 -0
  118. package/dist/capabilities/public-api-compatibility/application/ports/growth-workspace.d.ts.map +1 -0
  119. package/dist/capabilities/public-api-compatibility/application/ports/growth-workspace.js +2 -0
  120. package/dist/capabilities/public-api-compatibility/application/ports/growth-workspace.js.map +1 -0
  121. package/dist/capabilities/public-api-compatibility/application/rules.d.ts +8 -0
  122. package/dist/capabilities/public-api-compatibility/application/rules.d.ts.map +1 -1
  123. package/dist/capabilities/public-api-compatibility/application/rules.js +1 -0
  124. package/dist/capabilities/public-api-compatibility/application/rules.js.map +1 -1
  125. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.d.ts +32 -0
  126. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.d.ts.map +1 -0
  127. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.js +81 -0
  128. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.js.map +1 -0
  129. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.d.ts +21 -0
  130. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.d.ts.map +1 -0
  131. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.js +61 -0
  132. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.js.map +1 -0
  133. package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.d.ts +22 -0
  134. package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.d.ts.map +1 -0
  135. package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.js +89 -0
  136. package/dist/capabilities/public-api-compatibility/application/use-cases/observe-sdk-growth.js.map +1 -0
  137. package/dist/capabilities/public-api-compatibility/module.d.ts.map +1 -1
  138. package/dist/capabilities/public-api-compatibility/module.js +33 -1
  139. package/dist/capabilities/public-api-compatibility/module.js.map +1 -1
  140. package/dist/capabilities/public-api-compatibility/schemas.d.ts +1 -1
  141. package/dist/capabilities/public-api-compatibility/schemas.d.ts.map +1 -1
  142. package/dist/capabilities/public-api-compatibility/schemas.js +2 -1
  143. package/dist/capabilities/public-api-compatibility/schemas.js.map +1 -1
  144. package/dist/features/quality-coverage/adapters/consumer-toolchain.js +1 -1
  145. package/dist/features/quality-coverage/application/source-coverage.js +1 -1
  146. package/dist/features/quality-coverage/application/source-coverage.js.map +1 -1
  147. package/dist/schema-catalog.d.ts +1 -1
  148. package/dist/schema-catalog.d.ts.map +1 -1
  149. package/dist/schema-ids.d.ts +1 -1
  150. package/dist/schema-ids.d.ts.map +1 -1
  151. package/package.json +2 -1
  152. package/schemas/package-public-api-compatibility/v2.schema.json +263 -0
@@ -0,0 +1,238 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { constants } from "node:fs";
3
+ import * as filesystem from "node:fs/promises";
4
+ import { dirname, join, resolve, sep } from "node:path";
5
+ import { GrowthReportWriteError } from "../../../application/ports/growth-report-writer.js";
6
+ const maximumBytes = 32 * 1024 * 1024;
7
+ const noFollow = process.platform === "win32" ? 0 : constants.O_NOFOLLOW | constants.O_NONBLOCK;
8
+ function digest(bytes) {
9
+ return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
10
+ }
11
+ function code(error) {
12
+ return error instanceof Error && "code" in error && typeof error.code === "string" ? error.code : undefined;
13
+ }
14
+ function conflict(reason) { throw new GrowthReportWriteError("conflict", reason); }
15
+ function validateRequest(bytes, expectedPreimage) {
16
+ if (bytes.length > maximumBytes || (expectedPreimage !== undefined && expectedPreimage !== null && !/^sha256:[a-f0-9]{64}$/u.test(expectedPreimage))) {
17
+ conflict("growth-report-request-invalid");
18
+ }
19
+ }
20
+ function attachCleanupFailures(primary, failures) {
21
+ // Preserve cancellation identity, even for immutable or non-Error reasons.
22
+ if (primary instanceof Error && Object.isExtensible(primary) &&
23
+ Object.getOwnPropertyDescriptor(primary, "cause")?.configurable !== false) {
24
+ Object.defineProperty(primary, "cause", {
25
+ value: new AggregateError([...(primary.cause === undefined ? [] : [primary.cause]), ...failures], "Primary failure with cleanup failures"),
26
+ configurable: true, writable: true
27
+ });
28
+ }
29
+ }
30
+ async function closeHandle(handle, failure) {
31
+ try {
32
+ await handle?.close();
33
+ }
34
+ catch (error) {
35
+ if (failure === undefined) {
36
+ throw error;
37
+ }
38
+ attachCleanupFailures(failure, [error]);
39
+ }
40
+ }
41
+ /** Cooperative writers share an exclusive fence. No stale-lock takeover, durable
42
+ * journal or trust claim. Parent directories must already exist. Node cannot
43
+ * protect path lookup against a hostile process replacing directory ancestors;
44
+ * the caller owns isolation from non-cooperating writers (S3). */
45
+ export function createFilesystemGrowthReportWriter(consumerRoot, fs = filesystem) {
46
+ async function parents(path) {
47
+ if (path.length === 0 || path.includes("\\") || path.split("/").some((part) => part === "" || part === "." || part === ".." || part.includes(":"))) {
48
+ conflict("growth-report-path-invalid");
49
+ }
50
+ const root = resolve(consumerRoot), target = resolve(root, path);
51
+ if (!target.startsWith(`${root}${sep}`)) {
52
+ conflict("growth-report-outside-root");
53
+ }
54
+ let current = root;
55
+ for (const part of ["", ...path.split("/").slice(0, -1)]) {
56
+ current = join(current, part);
57
+ const stat = await fs.lstat(current);
58
+ // lstat rejects symlink/reparse parents without relying on platform
59
+ // specific realpath spellings (`/private`, `\\?\\`, or case changes).
60
+ if (!stat.isDirectory() || stat.isSymbolicLink()) {
61
+ conflict("growth-report-parent-unsafe");
62
+ }
63
+ }
64
+ return target;
65
+ }
66
+ async function sameFile(path, handle) {
67
+ const [named, opened] = await Promise.all([fs.lstat(path), handle.stat()]);
68
+ return named.isFile() && !named.isSymbolicLink() && named.dev === opened.dev && named.ino === opened.ino;
69
+ }
70
+ async function preimage(path) {
71
+ let handle;
72
+ let failure;
73
+ try {
74
+ try {
75
+ handle = await fs.open(path, constants.O_RDONLY | noFollow);
76
+ }
77
+ catch (error) {
78
+ if (code(error) === "ENOENT") {
79
+ return null;
80
+ }
81
+ if (code(error) === "ELOOP" || code(error) === "EISDIR") {
82
+ conflict("growth-report-slot-unsafe");
83
+ }
84
+ throw error;
85
+ }
86
+ const before = await handle.stat();
87
+ if (!before.isFile() || before.nlink !== 1 || before.size > maximumBytes) {
88
+ conflict("growth-report-slot-unsafe");
89
+ }
90
+ if (!await sameFile(path, handle)) {
91
+ conflict("growth-report-slot-changed");
92
+ }
93
+ // Read at most the budget plus one even if a non-cooperating writer grows it.
94
+ const bytes = Buffer.alloc(maximumBytes + 1);
95
+ let size = 0;
96
+ while (size < bytes.length) {
97
+ const read = await handle.read(bytes, size, bytes.length - size, size);
98
+ if (read.bytesRead === 0) {
99
+ break;
100
+ }
101
+ size += read.bytesRead;
102
+ }
103
+ const after = await handle.stat();
104
+ if (size > maximumBytes || before.size !== after.size || before.mtimeMs !== after.mtimeMs || before.ctimeMs !== after.ctimeMs || !await sameFile(path, handle)) {
105
+ conflict("growth-report-slot-changed");
106
+ }
107
+ return { digest: digest(bytes.subarray(0, size)), identity: JSON.stringify([after.dev, after.ino, after.size, after.mtimeMs, after.ctimeMs]) };
108
+ }
109
+ catch (error) {
110
+ failure = error;
111
+ throw error;
112
+ }
113
+ finally {
114
+ await closeHandle(handle, failure);
115
+ }
116
+ }
117
+ async function removeOwned(path, handle) {
118
+ let failure;
119
+ try {
120
+ if (!await sameFile(path, handle)) {
121
+ conflict("growth-report-owned-file-changed");
122
+ }
123
+ await fs.unlink(path);
124
+ }
125
+ catch (error) {
126
+ failure = error;
127
+ throw error;
128
+ }
129
+ finally {
130
+ await closeHandle(handle, failure);
131
+ }
132
+ }
133
+ async function cleanup(state) {
134
+ const failures = [];
135
+ if (state.stage !== undefined) {
136
+ try {
137
+ if (state.renamed) {
138
+ await state.stage.close();
139
+ }
140
+ else {
141
+ await removeOwned(state.stagePath, state.stage);
142
+ }
143
+ }
144
+ catch (error) {
145
+ failures.push(error);
146
+ }
147
+ }
148
+ if (state.fence !== undefined) {
149
+ try {
150
+ await removeOwned(state.fencePath, state.fence);
151
+ }
152
+ catch (error) {
153
+ failures.push(error);
154
+ }
155
+ }
156
+ if (failures.length > 0) {
157
+ if (state.failure !== undefined) {
158
+ attachCleanupFailures(state.failure, failures);
159
+ return;
160
+ }
161
+ throw new GrowthReportWriteError(state.commitAttempted ? "uncertain" : "io", "growth-report-cleanup-failed", {
162
+ cause: new AggregateError(failures, "Owned-file cleanup failed")
163
+ });
164
+ }
165
+ }
166
+ return {
167
+ async write(input, cancellation) {
168
+ const request = { ...input };
169
+ cancellation.throwIfCancelled();
170
+ const bytes = Buffer.from(request.contents, "utf8"), outputDigest = digest(bytes);
171
+ validateRequest(bytes, request.expectedPreimage);
172
+ let fence, stage;
173
+ let fencePath = "", stagePath = "", commitAttempted = false, renamed = false;
174
+ let failure;
175
+ try {
176
+ const target = await parents(request.path);
177
+ fencePath = `${target}.growth-report.lock`;
178
+ cancellation.throwIfCancelled();
179
+ try {
180
+ fence = await fs.open(fencePath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | noFollow, 0o600);
181
+ }
182
+ catch (error) {
183
+ if (code(error) === "EEXIST") {
184
+ conflict("growth-report-fence-busy");
185
+ }
186
+ throw error;
187
+ }
188
+ cancellation.throwIfCancelled();
189
+ const before = await preimage(target);
190
+ cancellation.throwIfCancelled();
191
+ if (before?.digest === outputDigest) {
192
+ return { status: "replayed", digest: outputDigest };
193
+ }
194
+ if (request.expectedPreimage !== undefined && (before?.digest ?? null) !== request.expectedPreimage) {
195
+ conflict("growth-report-preimage-mismatch");
196
+ }
197
+ stagePath = join(dirname(target), `.growth-report-${randomUUID()}.tmp`);
198
+ stage = await fs.open(stagePath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | noFollow, 0o600);
199
+ await stage.writeFile(bytes);
200
+ await stage.sync();
201
+ await parents(request.path);
202
+ if (!await sameFile(fencePath, fence) || !await sameFile(stagePath, stage) || JSON.stringify(await preimage(target)) !== JSON.stringify(before)) {
203
+ conflict("growth-report-publication-conflict");
204
+ }
205
+ // Final cancellation boundary. Once rename starts, complete publication
206
+ // and cleanup; a late abort cannot turn a committed report into cancelled.
207
+ cancellation.throwIfCancelled();
208
+ commitAttempted = true;
209
+ await fs.rename(stagePath, target);
210
+ renamed = true;
211
+ if ((await preimage(target))?.digest !== outputDigest) {
212
+ throw new GrowthReportWriteError("uncertain", "growth-report-readback-mismatch");
213
+ }
214
+ return { status: "published", digest: outputDigest };
215
+ }
216
+ catch (error) {
217
+ try {
218
+ if (commitAttempted) {
219
+ throw new GrowthReportWriteError("uncertain", "growth-report-publication-uncertain", { cause: error });
220
+ }
221
+ cancellation.throwIfCancelled();
222
+ if (error instanceof GrowthReportWriteError) {
223
+ throw error;
224
+ }
225
+ throw new GrowthReportWriteError("io", "growth-report-io-failed", { cause: error });
226
+ }
227
+ catch (primary) {
228
+ failure = primary;
229
+ throw primary;
230
+ }
231
+ }
232
+ finally {
233
+ await cleanup({ stage, stagePath, renamed, fence, fencePath, commitAttempted, failure });
234
+ }
235
+ }
236
+ };
237
+ }
238
+ //# sourceMappingURL=growth-report-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-report-writer.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GrowthWorkspaceReader } from "../../../application/ports/growth-workspace.js";
2
+ /** Select only the observed facts owned by growth policy; retain ordered targets. */
3
+ export declare function createWorkspaceGrowthReader(workspace: GrowthWorkspaceReader): GrowthWorkspaceReader;
4
+ //# sourceMappingURL=workspace-growth-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-growth-reader.d.ts","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/filesystem/workspace-growth-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAE5F,qFAAqF;AACrF,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,qBAAqB,GAAG,qBAAqB,CAYnG"}
@@ -0,0 +1,15 @@
1
+ /** Select only the observed facts owned by growth policy; retain ordered targets. */
2
+ export function createWorkspaceGrowthReader(workspace) {
3
+ return {
4
+ async read(consumerRoot, workspaceManifestPath, signal) {
5
+ const inventory = await workspace.read(consumerRoot, workspaceManifestPath, signal);
6
+ return { packages: inventory.packages.map((pkg) => ({
7
+ name: pkg.name, rootPath: pkg.rootPath, manifestPath: pkg.manifestPath, moduleType: pkg.moduleType,
8
+ exportSurface: { explicit: pkg.exportSurface.explicit, entries: pkg.exportSurface.entries.map((entry) => ({
9
+ subpath: entry.subpath, ...(entry.target === undefined ? {} : { target: structuredClone(entry.target) })
10
+ })) }
11
+ })) };
12
+ }
13
+ };
14
+ }
15
+ //# sourceMappingURL=workspace-growth-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-growth-reader.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/filesystem/workspace-growth-reader.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,UAAU,2BAA2B,CAAC,SAAgC;IAC1E,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,EAAE,MAAM;YACpD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACpF,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAClD,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU;oBAClG,aAAa,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BACxG,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;yBACzG,CAAC,CAAC,EAAE;iBACN,CAAC,CAAC,EAAE,CAAC;QACR,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,11 +7,6 @@ import type { AcceptedArchitectureDecisionReader, AcceptedDecisionEvidence, Acce
7
7
  export declare class GovernanceAcceptedDecisionEvidenceAcl implements AcceptedDecisionEvidencePort {
8
8
  private readonly readAcceptedArchitectureDecisionEvidence;
9
9
  constructor(readAcceptedArchitectureDecisionEvidence: AcceptedArchitectureDecisionReader);
10
- readAcceptedDecisionEvidence(input: {
11
- readonly consumerRoot: string;
12
- readonly baselinePath: string;
13
- readonly governanceConfigPath: string;
14
- readonly signal?: AbortSignal;
15
- }): Promise<AcceptedDecisionEvidence>;
10
+ readAcceptedDecisionEvidence(input: Parameters<AcceptedDecisionEvidencePort["readAcceptedDecisionEvidence"]>[0]): Promise<AcceptedDecisionEvidence>;
16
11
  }
17
12
  //# sourceMappingURL=governance-accepted-decision-evidence-acl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"governance-accepted-decision-evidence-acl.d.ts","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kCAAkC,EAClC,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,0DAA0D,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,qCACX,YAAW,4BAA4B;IAE3B,OAAO,CAAC,QAAQ,CAAC,wCAAwC;IAArE,YAA6B,wCAAwC,EAAE,kCAAkC,EAAI;IAEvG,4BAA4B,CAAC,KAAK,EAAE;QACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAOpC;CACF"}
1
+ {"version":3,"file":"governance-accepted-decision-evidence-acl.d.ts","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kCAAkC,EAClC,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,0DAA0D,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,qCACX,YAAW,4BAA4B;IAE3B,OAAO,CAAC,QAAQ,CAAC,wCAAwC;IAArE,YAA6B,wCAAwC,EAAE,kCAAkC,EAAI;IAEvG,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAWxJ;CACF"}
@@ -9,12 +9,18 @@ export class GovernanceAcceptedDecisionEvidenceAcl {
9
9
  this.readAcceptedArchitectureDecisionEvidence = readAcceptedArchitectureDecisionEvidence;
10
10
  }
11
11
  async readAcceptedDecisionEvidence(input) {
12
- return this.readAcceptedArchitectureDecisionEvidence({
12
+ const evidence = await this.readAcceptedArchitectureDecisionEvidence({
13
13
  consumerRoot: input.consumerRoot,
14
14
  baselinePath: input.baselinePath,
15
15
  configPath: input.governanceConfigPath,
16
16
  ...(input.signal === undefined ? {} : { signal: input.signal })
17
17
  });
18
+ if (input.growthDecisions === undefined) {
19
+ return evidence;
20
+ }
21
+ // Retained governance proves IDs/paths, not an owner-approved exact SDK
22
+ // transition. Never manufacture source/diff approval from those records.
23
+ return { ...evidence, growthDecisionAuthority: { status: "unavailable", reasons: ["governance-exact-growth-owner-binding-unavailable"] } };
18
24
  }
19
25
  }
20
26
  //# sourceMappingURL=governance-accepted-decision-evidence-acl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"governance-accepted-decision-evidence-acl.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,OAAO,qCAAqC;IAGnB,wCAAwC;IAArE,YAA6B,wCAA4E;wDAA5E,wCAAwC;IAAuC,CAAC;IAE7G,KAAK,CAAC,4BAA4B,CAAC,KAKlC;QACC,OAAO,IAAI,CAAC,wCAAwC,CAAC;YACnD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,oBAAoB;YACtC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"governance-accepted-decision-evidence-acl.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/governance/governance-accepted-decision-evidence-acl.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,OAAO,qCAAqC;IAGnB,wCAAwC;IAArE,YAA6B,wCAA4E;wDAA5E,wCAAwC;IAAuC,CAAC;IAE7G,KAAK,CAAC,4BAA4B,CAAC,KAAkF;QACnH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wCAAwC,CAAC;YACnE,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,oBAAoB;YACtC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;SAChE,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,QAAQ,CAAC;QAAC,CAAC;QAC7D,wEAAwE;QACxE,yEAAyE;QACzE,OAAO,EAAE,GAAG,QAAQ,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,mDAAmD,CAAC,EAAE,EAAE,CAAC;IAC7I,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- type PublicApiSchemaId = "package-public-api-compatibility/v1" | "package-public-api-baseline/v1";
1
+ type PublicApiSchemaId = "governance-architecture-decisions/v1" | "package-public-api-compatibility/v1" | "package-public-api-compatibility/v2" | "package-public-api-baseline/v1";
2
2
  export type PublicApiSchemaAssertion = (schemaId: PublicApiSchemaId, input: unknown, phase: string) => Promise<void>;
3
3
  export {};
4
4
  //# sourceMappingURL=schema-validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/public-api-compatibility/adapters/schema-validation.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAClB,qCAAqC,GACrC,gCAAgC,CAAC;AAErC,MAAM,MAAM,wBAAwB,GAClC,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/public-api-compatibility/adapters/schema-validation.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAClB,sCAAsC,GACtC,qCAAqC,GACrC,qCAAqC,GACrC,gCAAgC,CAAC;AAErC,MAAM,MAAM,wBAAwB,GAClC,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { GrowthDigest, GrowthEvidence, GrowthObservationReference, GrowthSurfaceObservation } from "./growth-observation.js";
2
+ import type { PackageReleaseEvidence, PublicApiPackagePolicy, PublicApiSnapshot } from "./public-api.js";
3
+ import type { AcceptedDecisionEvidence } from "../ports/accepted-decision-evidence.js";
4
+ export interface GrowthReleasedPackage {
5
+ readonly packageName: string;
6
+ readonly observation?: GrowthEvidence<GrowthSurfaceObservation>;
7
+ readonly policy: PublicApiPackagePolicy;
8
+ readonly releaseEvidence: GrowthEvidence<PackageReleaseEvidence>;
9
+ readonly evidence: {
10
+ readonly kind: "released";
11
+ readonly typed: GrowthEvidence<PublicApiSnapshot>;
12
+ readonly artifact: GrowthEvidence<PublicApiSnapshot>;
13
+ } | {
14
+ readonly kind: "initial-unreleased";
15
+ readonly history: GrowthEvidence<GrowthDigest>;
16
+ };
17
+ }
18
+ /** Internal context from a trusted input boundary. No candidate observation or
19
+ * candidate compatibility snapshot is accepted here. Available history denotes
20
+ * a validated exact-target retained receipt, not a caller's initial flag. */
21
+ export interface GrowthInputContext {
22
+ readonly trustedBase: GrowthEvidence<GrowthSurfaceObservation>;
23
+ readonly trustedBaseReference: GrowthEvidence<GrowthObservationReference>;
24
+ readonly retainedHistory: GrowthEvidence<{
25
+ readonly targetSurfaceDigest: GrowthDigest;
26
+ readonly receiptDigest: GrowthDigest;
27
+ }>;
28
+ readonly released: readonly GrowthReleasedPackage[];
29
+ readonly decisions: readonly unknown[];
30
+ readonly acceptedBreakingDecisions: AcceptedDecisionEvidence;
31
+ readonly authority: {
32
+ readonly status: "verified";
33
+ readonly receiptDigest: GrowthDigest;
34
+ readonly workflowRef?: string;
35
+ readonly runRef?: string;
36
+ } | {
37
+ readonly status: "unverified";
38
+ readonly reasons: readonly string[];
39
+ };
40
+ }
41
+ export interface GrowthContextRequest {
42
+ readonly trustedBasePath: string;
43
+ readonly decisionsPath: string;
44
+ readonly released: readonly ({
45
+ readonly packageName: string;
46
+ } & ({
47
+ readonly kind: "released";
48
+ readonly observationPath: string;
49
+ } | {
50
+ readonly kind: "initial-unreleased";
51
+ readonly trustedHistoryPath: string;
52
+ }))[];
53
+ }
54
+ //# sourceMappingURL=growth-admission-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-admission-context.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/growth-admission-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAClI,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC,sBAAsB,CAAC,CAAC;IACjE,QAAQ,CAAC,QAAQ,EACb;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;KAAE,GACtI;QAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAA;KAAE,CAAC;CAC7F;AAED;;6EAE6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAC/D,QAAQ,CAAC,oBAAoB,EAAE,cAAc,CAAC,0BAA0B,CAAC,CAAC;IAC1E,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC;QACvC,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC;QAC3C,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;KACtC,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,QAAQ,CAAC,yBAAyB,EAAE,wBAAwB,CAAC;IAC7D,QAAQ,CAAC,SAAS,EACd;QAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9H;QAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5E;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,CAC5D;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAC/D;QAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAC/E,CAAC,EAAE,CAAC;CACN"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=growth-admission-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-admission-context.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/growth-admission-context.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ import type { GrowthCoordinate, GrowthDigest } from "./growth-observation.js";
2
+ /** Internal S2 data only. Neither a decision file nor this model proves approval. */
3
+ export declare const growthPolicyVersion: "foundation:sdk-growth:policy:1";
4
+ export type GrowthValueRef = {
5
+ readonly state: "absent";
6
+ } | {
7
+ readonly state: "present";
8
+ readonly digest: GrowthDigest;
9
+ };
10
+ export interface GrowthTransition {
11
+ readonly coordinate: GrowthCoordinate;
12
+ readonly before: GrowthValueRef;
13
+ readonly after: GrowthValueRef;
14
+ readonly policyVersion: typeof growthPolicyVersion;
15
+ readonly fingerprint: GrowthDigest;
16
+ }
17
+ interface GrowthConsumerEvidenceRef {
18
+ readonly useCase: string;
19
+ readonly repository: string;
20
+ readonly source: {
21
+ readonly tree: string;
22
+ readonly contentDigest: GrowthDigest;
23
+ readonly commit: string | null;
24
+ };
25
+ readonly artifactDigest: GrowthDigest | null;
26
+ }
27
+ export interface GrowthDecision {
28
+ readonly contractRevision: "foundation:sdk-growth:c0:5";
29
+ readonly decisionId: string;
30
+ readonly ownerRef: string;
31
+ readonly stability: "development" | "experimental" | "supported";
32
+ readonly transitions: readonly GrowthDigest[];
33
+ readonly coordinates: readonly GrowthCoordinate[];
34
+ readonly changeFingerprint: GrowthDigest;
35
+ readonly consumerEvidenceRefs: readonly GrowthConsumerEvidenceRef[];
36
+ readonly exposureRationale: string;
37
+ readonly compatibilityRationale: string;
38
+ readonly lifecycle: {
39
+ readonly kind: "ordinary";
40
+ } | {
41
+ readonly kind: "shim" | "deprecation" | "removal";
42
+ readonly replacement: string;
43
+ readonly migration: string;
44
+ readonly removalConditions: string;
45
+ };
46
+ }
47
+ export type GrowthComparison = {
48
+ readonly status: "complete";
49
+ readonly before: GrowthDigest;
50
+ readonly after: GrowthDigest;
51
+ readonly transitions: readonly GrowthTransition[];
52
+ } | {
53
+ readonly status: "incomplete";
54
+ readonly reasons: readonly string[];
55
+ readonly findings: readonly GrowthTransition[];
56
+ };
57
+ export interface GrowthAdmissionDiagnostic {
58
+ readonly code: "growth-decision-malformed" | "growth-decision-duplicate" | "growth-decision-stale" | "growth-decision-coordinate-mismatch" | "growth-decision-fingerprint-mismatch" | "growth-transition-unadmitted" | "growth-decision-overlap" | "growth-owner-evidence-unavailable" | "growth-decision-budget-exhausted" | "growth-comparison-incomplete" | "growth-compatibility-rejected";
59
+ readonly subject: string;
60
+ readonly remediation: string;
61
+ }
62
+ /** Validated authority supplied at the application boundary, never inferred
63
+ * from a candidate Decision or an accepted ID alone. */
64
+ export interface GrowthDecisionAuthority {
65
+ readonly decisionId: string;
66
+ readonly ownerRef: string;
67
+ readonly decisionDigest: GrowthDigest;
68
+ }
69
+ export interface GrowthAdmissionResult {
70
+ readonly status: "admitted" | "rejected" | "incomplete";
71
+ readonly admittedTransitions: readonly GrowthDigest[];
72
+ readonly diagnostics: readonly GrowthAdmissionDiagnostic[];
73
+ /** This internal PR policy never grants release authority. */
74
+ readonly releaseEligible: false;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=growth-admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-admission.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/growth-admission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Internal S2 data only. Neither a decision file nor this model proves approval. */
2
+ export const growthPolicyVersion = "foundation:sdk-growth:policy:1";
3
+ //# sourceMappingURL=growth-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-admission.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/growth-admission.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,gCAAyC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { PublicApiCompatibilityPolicy } from "./public-api.js";
2
+ import type { GrowthContextRequest } from "./growth-admission-context.js";
3
+ /** Closed frozen configuration. Execution identity belongs to composition. */
4
+ export interface SdkGrowthCapabilityPolicy {
5
+ readonly schemaVersion: 2;
6
+ readonly compatibility: PublicApiCompatibilityPolicy;
7
+ readonly sdkGrowth: {
8
+ readonly contractRevision: "foundation:sdk-growth:c0:5";
9
+ readonly policyVersion: "foundation:sdk-growth:policy:1";
10
+ readonly comparison: Omit<GrowthContextRequest, "decisionsPath">;
11
+ readonly decisionsPath: string;
12
+ readonly reportPath: string;
13
+ };
14
+ }
15
+ export type PublicApiCapabilityPolicy = PublicApiCompatibilityPolicy | SdkGrowthCapabilityPolicy;
16
+ //# sourceMappingURL=growth-configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-configuration.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/growth-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;QACxD,QAAQ,CAAC,aAAa,EAAE,gCAAgC,CAAC;QACzD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;QACjE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AACD,MAAM,MAAM,yBAAyB,GAAG,4BAA4B,GAAG,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=growth-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth-configuration.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/growth-configuration.ts"],"names":[],"mappings":""}