@agent-teams/engineering-foundation 1.4.1 → 1.5.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 (155) hide show
  1. package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-contract.d.ts +10 -0
  2. package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-contract.d.ts.map +1 -0
  3. package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-contract.js +2 -0
  4. package/dist/capabilities/public-api-compatibility/adapters/inbound/authority/growth-authority-contract.js.map +1 -0
  5. package/dist/capabilities/public-api-compatibility/adapters/outbound/crypto/node-change-fingerprint.d.ts +2 -1
  6. package/dist/capabilities/public-api-compatibility/adapters/outbound/crypto/node-change-fingerprint.d.ts.map +1 -1
  7. package/dist/capabilities/public-api-compatibility/adapters/outbound/crypto/node-change-fingerprint.js +4 -1
  8. package/dist/capabilities/public-api-compatibility/adapters/outbound/crypto/node-change-fingerprint.js.map +1 -1
  9. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/artifact-public-api-evidence.d.ts +7 -1
  10. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/artifact-public-api-evidence.d.ts.map +1 -1
  11. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/artifact-public-api-evidence.js +16 -0
  12. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/artifact-public-api-evidence.js.map +1 -1
  13. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/filesystem-public-api-repository.d.ts +6 -0
  14. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/filesystem-public-api-repository.d.ts.map +1 -1
  15. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/filesystem-public-api-repository.js +22 -2
  16. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/filesystem-public-api-repository.js.map +1 -1
  17. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.d.ts +3 -1
  18. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.d.ts.map +1 -1
  19. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.js +10 -7
  20. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-invocation.js.map +1 -1
  21. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-metadata-root-sources.d.ts +13 -0
  22. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-metadata-root-sources.d.ts.map +1 -0
  23. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-metadata-root-sources.js +38 -0
  24. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-metadata-root-sources.js.map +1 -0
  25. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.d.ts +3 -0
  26. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.d.ts.map +1 -1
  27. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.js +17 -0
  28. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/growth-report-writer.js.map +1 -1
  29. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.d.ts +1 -1
  30. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.d.ts.map +1 -1
  31. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.js +6 -2
  32. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.js.map +1 -1
  33. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-evidence-files.d.ts.map +1 -1
  34. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-evidence-files.js +64 -26
  35. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-evidence-files.js.map +1 -1
  36. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/reviewrouter-growth-authority-acl.d.ts +18 -0
  37. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/reviewrouter-growth-authority-acl.d.ts.map +1 -0
  38. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/reviewrouter-growth-authority-acl.js +51 -0
  39. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/reviewrouter-growth-authority-acl.js.map +1 -0
  40. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.d.ts +5 -0
  41. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.d.ts.map +1 -0
  42. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.js +118 -0
  43. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/strict-json-response.js.map +1 -0
  44. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-input-context.d.ts +28 -0
  45. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-input-context.d.ts.map +1 -0
  46. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-input-context.js +163 -0
  47. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-input-context.js.map +1 -0
  48. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-observation.d.ts +8 -0
  49. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-observation.d.ts.map +1 -0
  50. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-observation.js +59 -0
  51. package/dist/capabilities/public-api-compatibility/adapters/outbound/reviewrouter/verified-growth-observation.js.map +1 -0
  52. package/dist/capabilities/public-api-compatibility/api.d.ts +1 -0
  53. package/dist/capabilities/public-api-compatibility/api.d.ts.map +1 -1
  54. package/dist/capabilities/public-api-compatibility/application/model/growth-admission-context.d.ts +9 -0
  55. package/dist/capabilities/public-api-compatibility/application/model/growth-admission-context.d.ts.map +1 -1
  56. package/dist/capabilities/public-api-compatibility/application/model/growth-authority.d.ts +243 -0
  57. package/dist/capabilities/public-api-compatibility/application/model/growth-authority.d.ts.map +1 -0
  58. package/dist/capabilities/public-api-compatibility/application/model/growth-authority.js +5 -0
  59. package/dist/capabilities/public-api-compatibility/application/model/growth-authority.js.map +1 -0
  60. package/dist/capabilities/public-api-compatibility/application/policies/default-type-argument-equivalence.d.ts +15 -0
  61. package/dist/capabilities/public-api-compatibility/application/policies/default-type-argument-equivalence.d.ts.map +1 -0
  62. package/dist/capabilities/public-api-compatibility/application/policies/default-type-argument-equivalence.js +282 -0
  63. package/dist/capabilities/public-api-compatibility/application/policies/default-type-argument-equivalence.js.map +1 -0
  64. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.d.ts +18 -2
  65. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.d.ts.map +1 -1
  66. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.js +35 -15
  67. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.js.map +1 -1
  68. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.d.ts +4 -2
  69. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.d.ts.map +1 -1
  70. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.js +76 -9
  71. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.js.map +1 -1
  72. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-initial-release.d.ts +15 -0
  73. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-initial-release.d.ts.map +1 -0
  74. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-initial-release.js +26 -0
  75. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-initial-release.js.map +1 -0
  76. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-public-api-compatibility.d.ts +1 -1
  77. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-public-api-compatibility.d.ts.map +1 -1
  78. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-public-api-compatibility.js +19 -10
  79. package/dist/capabilities/public-api-compatibility/application/policies/evaluate-public-api-compatibility.js.map +1 -1
  80. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.d.ts.map +1 -1
  81. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.js +2 -1
  82. package/dist/capabilities/public-api-compatibility/application/policies/normalize-growth-observation.js.map +1 -1
  83. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js +47 -19
  84. package/dist/capabilities/public-api-compatibility/application/policies/project-growth-report.js.map +1 -1
  85. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority-primitives.d.ts +18 -0
  86. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority-primitives.d.ts.map +1 -0
  87. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority-primitives.js +153 -0
  88. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority-primitives.js.map +1 -0
  89. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.d.ts +24 -0
  90. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.d.ts.map +1 -0
  91. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.js +610 -0
  92. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-authority.js.map +1 -0
  93. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-installed-inventory.d.ts +8 -0
  94. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-installed-inventory.d.ts.map +1 -0
  95. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-installed-inventory.js +11 -0
  96. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-installed-inventory.js.map +1 -0
  97. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-metadata-root.d.ts +13 -0
  98. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-metadata-root.d.ts.map +1 -0
  99. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-metadata-root.js +121 -0
  100. package/dist/capabilities/public-api-compatibility/application/policies/validate-growth-metadata-root.js.map +1 -0
  101. package/dist/capabilities/public-api-compatibility/application/ports/change-fingerprint.d.ts +2 -1
  102. package/dist/capabilities/public-api-compatibility/application/ports/change-fingerprint.d.ts.map +1 -1
  103. package/dist/capabilities/public-api-compatibility/application/ports/growth-authority.d.ts +17 -0
  104. package/dist/capabilities/public-api-compatibility/application/ports/growth-authority.d.ts.map +1 -0
  105. package/dist/capabilities/public-api-compatibility/application/ports/growth-authority.js +2 -0
  106. package/dist/capabilities/public-api-compatibility/application/ports/growth-authority.js.map +1 -0
  107. package/dist/capabilities/public-api-compatibility/application/ports/growth-input-context.d.ts +11 -1
  108. package/dist/capabilities/public-api-compatibility/application/ports/growth-input-context.d.ts.map +1 -1
  109. package/dist/capabilities/public-api-compatibility/application/ports/public-api-repository.d.ts +6 -0
  110. package/dist/capabilities/public-api-compatibility/application/ports/public-api-repository.d.ts.map +1 -1
  111. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.d.ts.map +1 -1
  112. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.js +31 -5
  113. package/dist/capabilities/public-api-compatibility/application/use-cases/admit-sdk-growth.js.map +1 -1
  114. package/dist/capabilities/public-api-compatibility/application/use-cases/analyze-public-api-compatibility.d.ts.map +1 -1
  115. package/dist/capabilities/public-api-compatibility/application/use-cases/analyze-public-api-compatibility.js +8 -1
  116. package/dist/capabilities/public-api-compatibility/application/use-cases/analyze-public-api-compatibility.js.map +1 -1
  117. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.d.ts +11 -2
  118. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.d.ts.map +1 -1
  119. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.js +11 -8
  120. package/dist/capabilities/public-api-compatibility/application/use-cases/check-sdk-growth.js.map +1 -1
  121. package/dist/capabilities/public-api-compatibility/application/use-cases/preflight-public-api-promotions.d.ts +2 -1
  122. package/dist/capabilities/public-api-compatibility/application/use-cases/preflight-public-api-promotions.d.ts.map +1 -1
  123. package/dist/capabilities/public-api-compatibility/application/use-cases/preflight-public-api-promotions.js +16 -4
  124. package/dist/capabilities/public-api-compatibility/application/use-cases/preflight-public-api-promotions.js.map +1 -1
  125. package/dist/capabilities/public-api-compatibility/application/use-cases/promote-public-api-baselines.d.ts.map +1 -1
  126. package/dist/capabilities/public-api-compatibility/application/use-cases/promote-public-api-baselines.js +24 -11
  127. package/dist/capabilities/public-api-compatibility/application/use-cases/promote-public-api-baselines.js.map +1 -1
  128. package/dist/capabilities/public-api-compatibility/application/use-cases/qualify-sdk-growth.d.ts +16 -0
  129. package/dist/capabilities/public-api-compatibility/application/use-cases/qualify-sdk-growth.d.ts.map +1 -0
  130. package/dist/capabilities/public-api-compatibility/application/use-cases/qualify-sdk-growth.js +45 -0
  131. package/dist/capabilities/public-api-compatibility/application/use-cases/qualify-sdk-growth.js.map +1 -0
  132. package/dist/capabilities/public-api-compatibility/authority-module.d.ts +30 -0
  133. package/dist/capabilities/public-api-compatibility/authority-module.d.ts.map +1 -0
  134. package/dist/capabilities/public-api-compatibility/authority-module.js +142 -0
  135. package/dist/capabilities/public-api-compatibility/authority-module.js.map +1 -0
  136. package/dist/capabilities/public-api-compatibility/module.d.ts +16 -0
  137. package/dist/capabilities/public-api-compatibility/module.d.ts.map +1 -1
  138. package/dist/capabilities/public-api-compatibility/module.js +6 -6
  139. package/dist/capabilities/public-api-compatibility/module.js.map +1 -1
  140. package/dist/composition/quality-coverage.d.ts +1 -1
  141. package/dist/composition/quality-coverage.d.ts.map +1 -1
  142. package/dist/composition/sdk-growth-authority.d.ts +13 -0
  143. package/dist/composition/sdk-growth-authority.d.ts.map +1 -0
  144. package/dist/composition/sdk-growth-authority.js +19 -0
  145. package/dist/composition/sdk-growth-authority.js.map +1 -0
  146. package/dist/features/validation-reporting/api.d.ts +1 -1
  147. package/dist/features/validation-reporting/api.d.ts.map +1 -1
  148. package/dist/features/validation-reporting/api.js.map +1 -1
  149. package/dist/features/validation-reporting/application/model.d.ts +2 -3
  150. package/dist/features/validation-reporting/application/model.d.ts.map +1 -1
  151. package/dist/sdk-growth-authority.d.ts +15 -0
  152. package/dist/sdk-growth-authority.d.ts.map +1 -0
  153. package/dist/sdk-growth-authority.js +2 -0
  154. package/dist/sdk-growth-authority.js.map +1 -0
  155. package/package.json +5 -1
@@ -0,0 +1,282 @@
1
+ const IDENTIFIER = "[A-Za-z_$][A-Za-z0-9_$]*";
2
+ const TYPE_ATOM = `${IDENTIFIER}(?:\\.${IDENTIFIER})*`;
3
+ const TYPE_ALIAS = new RegExp(`^(export type ${IDENTIFIER}(?:<([^<>\\r\\n]+)>)? = )(${IDENTIFIER})(?:<(${TYPE_ATOM}(?:, ${TYPE_ATOM})*)>)?;$`, "u");
4
+ const GENERIC_DECLARATION = new RegExp(`^export (?:declare )?(?:abstract )?(class|interface|type) (${IDENTIFIER})<([^<>\\r\\n]+)>(?=$| extends | implements | = )`, "u");
5
+ const TOP_LEVEL_TYPE_DECLARATION = new RegExp(`^export (?:declare )?(?:abstract )?(?:class|interface|type|enum) (${IDENTIFIER})(?:<| |$)`, "u");
6
+ const TYPE_PARAMETER = new RegExp(`^(${IDENTIFIER})(?: extends (${TYPE_ATOM}))?(?: = (${TYPE_ATOM}))?$`, "u");
7
+ const LEADING_TYPE_NAME = new RegExp(`^(${IDENTIFIER})(?:\\.|$)`, "u");
8
+ const RESERVED_IDENTIFIERS = new Set([
9
+ "any",
10
+ "await",
11
+ "bigint",
12
+ "boolean",
13
+ "break",
14
+ "case",
15
+ "catch",
16
+ "class",
17
+ "const",
18
+ "continue",
19
+ "debugger",
20
+ "default",
21
+ "delete",
22
+ "do",
23
+ "else",
24
+ "enum",
25
+ "export",
26
+ "extends",
27
+ "false",
28
+ "finally",
29
+ "for",
30
+ "function",
31
+ "if",
32
+ "implements",
33
+ "import",
34
+ "in",
35
+ "infer",
36
+ "instanceof",
37
+ "interface",
38
+ "intrinsic",
39
+ "keyof",
40
+ "let",
41
+ "never",
42
+ "new",
43
+ "null",
44
+ "number",
45
+ "object",
46
+ "package",
47
+ "private",
48
+ "protected",
49
+ "public",
50
+ "readonly",
51
+ "return",
52
+ "static",
53
+ "string",
54
+ "super",
55
+ "switch",
56
+ "symbol",
57
+ "this",
58
+ "throw",
59
+ "true",
60
+ "try",
61
+ "typeof",
62
+ "undefined",
63
+ "unique",
64
+ "unknown",
65
+ "var",
66
+ "void",
67
+ "while",
68
+ "with",
69
+ "yield"
70
+ ]);
71
+ const SUPPORTED_KEYWORD_TYPE_ATOMS = new Set([
72
+ "any",
73
+ "bigint",
74
+ "boolean",
75
+ "false",
76
+ "never",
77
+ "null",
78
+ "number",
79
+ "object",
80
+ "string",
81
+ "symbol",
82
+ "this",
83
+ "true",
84
+ "undefined",
85
+ "unknown",
86
+ "void"
87
+ ]);
88
+ function isSupportedTypeAtom(type) {
89
+ if (SUPPORTED_KEYWORD_TYPE_ATOMS.has(type)) {
90
+ return true;
91
+ }
92
+ return type.split(".").every((part) => !RESERVED_IDENTIFIERS.has(part));
93
+ }
94
+ function parseTypeParameters(header) {
95
+ const names = [];
96
+ const defaults = [];
97
+ const seenNames = new Set();
98
+ let sawDefault = false;
99
+ for (const parameter of header.split(", ")) {
100
+ const match = TYPE_PARAMETER.exec(parameter);
101
+ const name = match?.[1];
102
+ const constraint = match?.[2];
103
+ const defaultType = match?.[3];
104
+ if (match === null ||
105
+ name === undefined ||
106
+ RESERVED_IDENTIFIERS.has(name) ||
107
+ (constraint !== undefined && !isSupportedTypeAtom(constraint)) ||
108
+ (defaultType !== undefined && !isSupportedTypeAtom(defaultType)) ||
109
+ seenNames.has(name) ||
110
+ (sawDefault && defaultType === undefined)) {
111
+ return undefined;
112
+ }
113
+ names.push(name);
114
+ defaults.push(defaultType);
115
+ seenNames.add(name);
116
+ sawDefault = defaultType !== undefined;
117
+ }
118
+ return Object.freeze({
119
+ names: Object.freeze(names),
120
+ defaults: Object.freeze(defaults)
121
+ });
122
+ }
123
+ function parseDirectTypeAlias(signature) {
124
+ const match = TYPE_ALIAS.exec(signature);
125
+ if (match === null || match[1] === undefined || match[3] === undefined) {
126
+ return undefined;
127
+ }
128
+ const parameters = match[2] === undefined
129
+ ? Object.freeze({ names: Object.freeze([]), defaults: Object.freeze([]) })
130
+ : parseTypeParameters(match[2]);
131
+ if (parameters === undefined) {
132
+ return undefined;
133
+ }
134
+ const aliasArguments = match[4]?.split(", ") ?? [];
135
+ if (!aliasArguments.every(isSupportedTypeAtom)) {
136
+ return undefined;
137
+ }
138
+ return Object.freeze({
139
+ header: match[1],
140
+ parameterNames: new Set(parameters.names),
141
+ target: match[3],
142
+ arguments: Object.freeze(aliasArguments)
143
+ });
144
+ }
145
+ function parseGenericDeclaration(signature) {
146
+ const match = GENERIC_DECLARATION.exec(signature);
147
+ if (match === null ||
148
+ match[1] === undefined ||
149
+ match[2] === undefined ||
150
+ match[3] === undefined) {
151
+ return undefined;
152
+ }
153
+ const parameters = parseTypeParameters(match[3]);
154
+ if (parameters === undefined) {
155
+ return undefined;
156
+ }
157
+ return Object.freeze({
158
+ name: match[2],
159
+ kind: match[1] === "class"
160
+ ? "Class"
161
+ : match[1] === "interface"
162
+ ? "Interface"
163
+ : "TypeAlias",
164
+ parameterNames: new Set(parameters.names),
165
+ defaults: parameters.defaults
166
+ });
167
+ }
168
+ function unchangedTopLevelType(name, releasedItems, currentItems) {
169
+ const candidates = (items) => items.filter((item) => {
170
+ if (item.parentKind !== "EntryPoint") {
171
+ return false;
172
+ }
173
+ return TOP_LEVEL_TYPE_DECLARATION.exec(item.signature)?.[1] === name;
174
+ });
175
+ const released = candidates(releasedItems);
176
+ const current = candidates(currentItems);
177
+ if (released.length !== 1 || current.length !== 1) {
178
+ return undefined;
179
+ }
180
+ const before = released[0];
181
+ const after = current[0];
182
+ if (before === undefined ||
183
+ after === undefined ||
184
+ before.canonicalReference !== after.canonicalReference ||
185
+ before.kind !== after.kind ||
186
+ before.parentKind !== after.parentKind ||
187
+ before.parentReference !== after.parentReference ||
188
+ before.signature !== after.signature) {
189
+ return undefined;
190
+ }
191
+ return before;
192
+ }
193
+ function unchangedTarget(name, releasedItems, currentItems) {
194
+ const target = unchangedTopLevelType(name, releasedItems, currentItems);
195
+ if (target === undefined) {
196
+ return undefined;
197
+ }
198
+ const declaration = parseGenericDeclaration(target.signature);
199
+ return declaration?.kind === target.kind ? declaration : undefined;
200
+ }
201
+ function hasUnchangedTypeAtomBinding(type, releasedItems, currentItems, stableTypeBindings) {
202
+ if (SUPPORTED_KEYWORD_TYPE_ATOMS.has(type)) {
203
+ return true;
204
+ }
205
+ if (type.includes(".")) {
206
+ return false;
207
+ }
208
+ return (unchangedTopLevelType(type, releasedItems, currentItems) !== undefined ||
209
+ stableTypeBindings.has(type));
210
+ }
211
+ function omittedArgumentsEqualDefaults(shorter, longer, declaration, bindings) {
212
+ if (shorter.arguments.length >= longer.arguments.length ||
213
+ longer.arguments.length > declaration.defaults.length) {
214
+ return false;
215
+ }
216
+ for (const [index, argument] of shorter.arguments.entries()) {
217
+ if (longer.arguments[index] !== argument) {
218
+ return false;
219
+ }
220
+ }
221
+ for (let index = shorter.arguments.length; index < longer.arguments.length; index += 1) {
222
+ const declaredDefault = declaration.defaults[index];
223
+ const leadingName = declaredDefault === undefined
224
+ ? undefined
225
+ : LEADING_TYPE_NAME.exec(declaredDefault)?.[1];
226
+ if (declaredDefault === undefined ||
227
+ declaredDefault !== longer.arguments[index] ||
228
+ leadingName === undefined ||
229
+ declaration.parameterNames.has(leadingName) ||
230
+ shorter.parameterNames.has(leadingName) ||
231
+ !hasUnchangedTypeAtomBinding(declaredDefault, bindings.releasedItems, bindings.currentItems, bindings.stableTypeBindings)) {
232
+ return false;
233
+ }
234
+ }
235
+ return true;
236
+ }
237
+ /** A comparison-only exception for one direct type-alias default-argument spelling. */
238
+ export function hasEquivalentTrailingDefaultTypeArguments(input) {
239
+ if (input.releasedItem.kind !== "TypeAlias" ||
240
+ input.currentItem.kind !== "TypeAlias" ||
241
+ input.releasedItem.parentKind !== "EntryPoint" ||
242
+ input.currentItem.parentKind !== "EntryPoint") {
243
+ return false;
244
+ }
245
+ const released = parseDirectTypeAlias(input.releasedItem.signature);
246
+ const current = parseDirectTypeAlias(input.currentItem.signature);
247
+ if (released === undefined ||
248
+ current === undefined ||
249
+ released.header !== current.header ||
250
+ released.target !== current.target ||
251
+ released.parameterNames.has(released.target) ||
252
+ current.parameterNames.has(current.target)) {
253
+ return false;
254
+ }
255
+ const target = unchangedTarget(released.target, input.releasedItems, input.currentItems);
256
+ if (target === undefined) {
257
+ return false;
258
+ }
259
+ const bindings = Object.freeze({
260
+ releasedItems: input.releasedItems,
261
+ currentItems: input.currentItems,
262
+ stableTypeBindings: input.stableTypeBindings ?? new Set()
263
+ });
264
+ return released.arguments.length < current.arguments.length
265
+ ? omittedArgumentsEqualDefaults(released, current, target, bindings)
266
+ : omittedArgumentsEqualDefaults(current, released, target, bindings);
267
+ }
268
+ /** Names whose unique public canonical identity is byte-stable across all governed packages. */
269
+ export function collectUnchangedPublicTypeBindings(pairs) {
270
+ const comparablePairs = pairs.filter(({ released, current }) => released.extractorVersion === current.extractorVersion);
271
+ const releasedItems = comparablePairs.flatMap(({ released }) => released.entrypoints.flatMap(({ items }) => items));
272
+ const currentItems = comparablePairs.flatMap(({ current }) => current.entrypoints.flatMap(({ items }) => items));
273
+ const names = new Set();
274
+ for (const item of [...releasedItems, ...currentItems]) {
275
+ const name = TOP_LEVEL_TYPE_DECLARATION.exec(item.signature)?.[1];
276
+ if (name !== undefined) {
277
+ names.add(name);
278
+ }
279
+ }
280
+ return new Set([...names].filter((name) => unchangedTopLevelType(name, releasedItems, currentItems) !== undefined));
281
+ }
282
+ //# sourceMappingURL=default-type-argument-equivalence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-type-argument-equivalence.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/default-type-argument-equivalence.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,23 @@
1
- import type { GrowthAdmissionResult, GrowthComparison, GrowthDecision, GrowthDecisionAuthority } from "../model/growth-admission.js";
1
+ import type { GrowthAdmissionDiagnostic, GrowthAdmissionResult, GrowthComparison, GrowthDecision, GrowthDecisionAuthority } from "../model/growth-admission.js";
2
2
  import type { GrowthDigest } from "../model/growth-observation.js";
3
3
  import type { ChangeFingerprint } from "../ports/change-fingerprint.js";
4
- export declare function growthDecisionDigest(decision: GrowthDecision, fingerprint: ChangeFingerprint): GrowthDigest;
4
+ export declare function growthDecisionDigest(decision: unknown, fingerprint: ChangeFingerprint): GrowthDigest;
5
+ export interface PreparedGrowthDecisions {
6
+ readonly budgetExceeded: boolean;
7
+ /** Every structurally valid original, including duplicate IDs. */
8
+ readonly decisions: readonly {
9
+ readonly decision: GrowthDecision;
10
+ readonly authorityEligible: boolean;
11
+ }[];
12
+ /** The only proposals for which external authority may be requested. */
13
+ readonly authorityCandidates: readonly GrowthDecision[];
14
+ readonly diagnostics: readonly GrowthAdmissionDiagnostic[];
15
+ }
16
+ /** Shared bounded preparation for ordinary admission and trusted authority.
17
+ * No decision is hashed until the complete raw collection is within budget.
18
+ * Malformed and duplicate originals remain visible to admission diagnostics,
19
+ * while only valid unique IDs may be sent to an authority provider. */
20
+ export declare function prepareGrowthDecisions(rawDecisions: readonly unknown[]): PreparedGrowthDecisions;
5
21
  /** Exact PR admission only. The independent released policy's failure is final;
6
22
  * authority must bind the entire normalized decision, not merely its ID. */
7
23
  export declare function evaluateGrowthAdmission(input: {
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-growth-admission.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA6B,qBAAqB,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAoB,MAAM,8BAA8B,CAAC;AAElL,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAaxE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,GAAG,YAAY,CAE3G;AA6ED;4EAC4E;AAC5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;CAChE,EAAE,WAAW,EAAE,iBAAiB,GAAG,qBAAqB,CAqCxD"}
1
+ {"version":3,"file":"evaluate-growth-admission.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAoB,MAAM,8BAA8B,CAAC;AAElL,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAaxE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,GAAG,YAAY,CAEpG;AAqDD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,SAAS;QAC3B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;QAClC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;KACrC,EAAE,CAAC;IACJ,wEAAwE;IACxE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,cAAc,EAAE,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC5D;AAED;;;uEAGuE;AACvE,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,SAAS,OAAO,EAAE,GAAG,uBAAuB,CAoChG;AAED;4EAC4E;AAC5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;CAChE,EAAE,WAAW,EAAE,iBAAiB,GAAG,qBAAqB,CAyCxD"}
@@ -70,13 +70,18 @@ function withinDecisionBudget(rawDecisions) {
70
70
  }
71
71
  return true;
72
72
  }
73
- /** Normalize the full bounded set before claims; duplicate IDs have no authority. */
74
- function prepareDecisions(rawDecisions, diagnostics) {
73
+ /** Shared bounded preparation for ordinary admission and trusted authority.
74
+ * No decision is hashed until the complete raw collection is within budget.
75
+ * Malformed and duplicate originals remain visible to admission diagnostics,
76
+ * while only valid unique IDs may be sent to an authority provider. */
77
+ export function prepareGrowthDecisions(rawDecisions) {
75
78
  if (!withinDecisionBudget(rawDecisions)) {
76
- return undefined;
79
+ return { budgetExceeded: true, decisions: [], authorityCandidates: [], diagnostics: decisionBudgetExhausted().diagnostics };
77
80
  }
81
+ const diagnostics = [];
78
82
  const decisions = [];
79
83
  const counts = new Map();
84
+ const claimCounts = new Map();
80
85
  for (const raw of rawDecisions) {
81
86
  let decision;
82
87
  try {
@@ -89,6 +94,9 @@ function prepareDecisions(rawDecisions, diagnostics) {
89
94
  }
90
95
  decisions.push(decision);
91
96
  counts.set(decision.decisionId, (counts.get(decision.decisionId) ?? 0) + 1);
97
+ for (const claim of decision.transitions) {
98
+ claimCounts.set(claim, (claimCounts.get(claim) ?? 0) + 1);
99
+ }
92
100
  }
93
101
  for (const [id, occurrences] of counts) {
94
102
  if (occurrences > 1) {
@@ -96,8 +104,16 @@ function prepareDecisions(rawDecisions, diagnostics) {
96
104
  remediation: "Use one exact decision record per decision ID." });
97
105
  }
98
106
  }
99
- return decisions.filter((decision) => counts.get(decision.decisionId) === 1)
100
- .toSorted((left, right) => compareGrowthStrings(left.decisionId, right.decisionId));
107
+ const overlapping = new Set(decisions
108
+ .filter((decision) => decision.transitions.some((claim) => (claimCounts.get(claim) ?? 0) > 1))
109
+ .map((decision) => decision.decisionId));
110
+ const prepared = decisions.map((decision) => ({
111
+ decision,
112
+ authorityEligible: counts.get(decision.decisionId) === 1 && !overlapping.has(decision.decisionId)
113
+ })).toSorted((left, right) => compareGrowthStrings(left.decision.decisionId, right.decision.decisionId));
114
+ return { budgetExceeded: false, decisions: prepared,
115
+ authorityCandidates: prepared.filter((entry) => entry.authorityEligible).map((entry) => entry.decision),
116
+ diagnostics };
101
117
  }
102
118
  /** Exact PR admission only. The independent released policy's failure is final;
103
119
  * authority must bind the entire normalized decision, not merely its ID. */
@@ -116,24 +132,28 @@ export function evaluateGrowthAdmission(input, fingerprint) {
116
132
  const transitions = validateTransitions(input.comparison.status === "complete" ? input.comparison.transitions : input.comparison.findings, fingerprint);
117
133
  const actual = new Map(transitions.map((entry) => [entry.fingerprint, entry]));
118
134
  const claimed = new Set(), admitted = new Set();
119
- const decisions = prepareDecisions(input.decisions, diagnostics);
120
- if (decisions === undefined) {
135
+ const prepared = prepareGrowthDecisions(input.decisions);
136
+ if (prepared.budgetExceeded) {
121
137
  return decisionBudgetExhausted();
122
138
  }
123
- const authorities = growthUniqueSorted(input.authority, (entry) => entry.decisionId);
124
- for (const decision of decisions) {
139
+ diagnostics.push(...prepared.diagnostics);
140
+ const authorityRows = growthUniqueSorted(input.authority, (entry) => entry.decisionId);
141
+ const authorities = new Map(authorityRows.map((entry) => [entry.decisionId, entry]));
142
+ for (const { decision, authorityEligible } of prepared.decisions) {
125
143
  const subject = decision.decisionId;
126
144
  const exactDiagnostics = exactDecisionDiagnostics(decision, actual, claimed, fingerprint);
127
145
  diagnostics.push(...exactDiagnostics);
128
- let valid = exactDiagnostics.length === 0;
146
+ let valid = exactDiagnostics.length === 0 && authorityEligible;
129
147
  for (const entry of decision.transitions) {
130
148
  claimed.add(entry);
131
149
  }
132
- const authority = authorities.find((entry) => entry.decisionId === subject);
133
- if (authority?.ownerRef !== decision.ownerRef || authority.decisionDigest !== growthDecisionDigest(decision, fingerprint)) {
134
- add("growth-owner-evidence-unavailable", subject, "Supply independently validated owner evidence binding this complete decision and its exact transitions.");
135
- incomplete = true;
136
- valid = false;
150
+ if (authorityEligible) {
151
+ const authority = authorities.get(subject);
152
+ if (authority?.ownerRef !== decision.ownerRef || authority.decisionDigest !== growthDecisionDigest(decision, fingerprint)) {
153
+ add("growth-owner-evidence-unavailable", subject, "Supply independently validated owner evidence binding this complete decision and its exact transitions.");
154
+ incomplete = true;
155
+ valid = false;
156
+ }
137
157
  }
138
158
  if (valid) {
139
159
  for (const entry of decision.transitions) {
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-growth-admission.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluate-growth-admission.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/evaluate-growth-admission.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,14 @@ export interface GrowthReleaseCompatibilityResult {
9
9
  readonly reasons: readonly string[];
10
10
  }
11
11
  /** Existing v1 comparator and SemVer policy on each original snapshot branch.
12
- * Initial-unreleased history is retained, but current S1 has no admitted proof
13
- * permitting a synthesized empty v1 baseline; that branch stays incomplete. */
12
+ * An initial history value needs the trusted S3 adapter's receipt qualification.
13
+ * It proves absence of published compatibility obligations; it does
14
+ * not synthesize a v1 baseline or waive first-surface admission. */
14
15
  export declare function evaluateGrowthReleaseCompatibility(input: {
15
16
  readonly current: readonly GrowthCompatibilityPackage[];
16
17
  readonly released: readonly GrowthReleasedPackage[];
17
18
  readonly extractorVersion: string;
18
19
  readonly acceptedDecisions: AcceptedDecisionEvidence;
20
+ readonly authorityReceiptDigest?: string;
19
21
  }, fingerprint: ChangeFingerprint): GrowthReleaseCompatibilityResult;
20
22
  //# sourceMappingURL=evaluate-growth-release-compatibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-growth-release-compatibility.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,KAAK,EAAE,0BAA0B,EAAkB,MAAM,gCAAgC,CAAC;AAEjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAKxE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAiBD;;+EAE+E;AAC/E,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;CACtD,EAAE,WAAW,EAAE,iBAAiB,GAAG,gCAAgC,CA+BnE"}
1
+ {"version":3,"file":"evaluate-growth-release-compatibility.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/evaluate-growth-release-compatibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,KAAK,EAAE,0BAA0B,EAAkB,MAAM,gCAAgC,CAAC;AAEjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAOxE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AA0ED;;;oEAGoE;AACpE,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C,EAAE,WAAW,EAAE,iBAAiB,GAAG,gCAAgC,CAyCnE"}
@@ -2,15 +2,39 @@ import { GrowthObservationInvariantError } from "../model/growth-observation.js"
2
2
  import { growthUniqueSorted } from "./normalize-growth-observation.js";
3
3
  import { classifyPublicApiChange, evaluatePublicApiCompatibility } from "./evaluate-public-api-compatibility.js";
4
4
  import { isApprovedBreakingChangeAccepted } from "./accepted-breaking-change.js";
5
- function compareBranch(row, released, current, accepted, fingerprint) {
5
+ import { collectUnchangedPublicTypeBindings } from "./default-type-argument-equivalence.js";
6
+ import { evaluateInitialReleasePolicy } from "./evaluate-initial-release.js";
7
+ function compareBranch(row, released, current, dependencies) {
6
8
  if (row.releaseEvidence.status !== "available") {
7
9
  throw new GrowthObservationInvariantError("growth-release-evidence-unavailable");
8
10
  }
9
- const change = classifyPublicApiChange(released, current, fingerprint);
11
+ const change = classifyPublicApiChange(released, current, dependencies.fingerprint, dependencies.stableTypeBindings);
10
12
  const approval = row.policy.approvedBreakingChanges.find((entry) => entry.fingerprint === change.fingerprint);
11
13
  return evaluatePublicApiCompatibility({ policy: row.policy, released, current, change,
12
14
  releaseEvidence: row.releaseEvidence.value,
13
- acceptedDecision: approval === undefined ? undefined : isApprovedBreakingChangeAccepted(approval, accepted) });
15
+ acceptedDecision: approval === undefined ? undefined : isApprovedBreakingChangeAccepted(approval, dependencies.accepted) });
16
+ }
17
+ function collectGrowthStableTypeBindings(current, released) {
18
+ const currentByPackage = new Map(current.map((entry) => [entry.packageName, entry]));
19
+ if (current.length !== released.length
20
+ || released.some((row) => !currentByPackage.has(row.packageName))) {
21
+ return new Set();
22
+ }
23
+ const pairs = [];
24
+ for (const row of released) {
25
+ if (row.evidence.kind === "initial-unreleased") {
26
+ continue;
27
+ }
28
+ const candidate = currentByPackage.get(row.packageName);
29
+ if (candidate === undefined
30
+ || row.evidence.typed.status !== "available"
31
+ || candidate.typed.snapshot.status !== "available"
32
+ || row.evidence.typed.value.extractorVersion !== candidate.typed.snapshot.value.extractorVersion) {
33
+ return new Set();
34
+ }
35
+ pairs.push({ released: row.evidence.typed.value, current: candidate.typed.snapshot.value });
36
+ }
37
+ return collectUnchangedPublicTypeBindings(pairs);
14
38
  }
15
39
  function assertBranch(snapshot, packageName, extractor) {
16
40
  if (snapshot.status === "available" && (snapshot.value.packageName !== packageName
@@ -18,13 +42,51 @@ function assertBranch(snapshot, packageName, extractor) {
18
42
  throw new GrowthObservationInvariantError("growth-compatibility-provenance-mismatch");
19
43
  }
20
44
  }
45
+ function evaluateInitialUnreleased(input) {
46
+ if (input.row.evidence.kind !== "initial-unreleased") {
47
+ throw new GrowthObservationInvariantError("growth-release-kind-mismatch");
48
+ }
49
+ if (input.row.evidence.history.status !== "available" || !qualified(input.row, input.authorityReceiptDigest)) {
50
+ input.reasons.push(`${input.row.packageName}:initial-unreleased-proof-not-qualified`);
51
+ return;
52
+ }
53
+ if (input.row.releaseEvidence.status !== "available") {
54
+ input.reasons.push(`${input.row.packageName}:release-evidence-unavailable`);
55
+ return;
56
+ }
57
+ const policy = evaluateInitialReleasePolicy(input.row.packageName, input.row.releaseEvidence.value);
58
+ if (policy.status === "rejected") {
59
+ input.reasons.push(`${input.row.packageName}:initial-release-${policy.failure}`);
60
+ return;
61
+ }
62
+ for (const branch of ["typed", "artifact"]) {
63
+ const next = input.candidate[branch].snapshot;
64
+ const extractor = branch === "typed" ? input.extractorVersion : "package-artifact-inventory/1";
65
+ assertBranch(next, input.row.packageName, extractor);
66
+ if (next.status !== "available") {
67
+ input.reasons.push(`${input.row.packageName}:${branch}:compatibility-evidence-unavailable`);
68
+ }
69
+ else if (next.value.packageVersion !== input.row.releaseEvidence.value.packageVersion) {
70
+ throw new GrowthObservationInvariantError("growth-release-version-mismatch");
71
+ }
72
+ }
73
+ }
74
+ function qualified(row, authorityReceiptDigest) {
75
+ return /^sha256:[a-f0-9]{64}$/u.test(authorityReceiptDigest ?? "")
76
+ && /^sha256:[a-f0-9]{64}$/u.test(row.qualification?.receiptDigest ?? "")
77
+ && row.qualification?.receiptDigest === authorityReceiptDigest;
78
+ }
21
79
  /** Existing v1 comparator and SemVer policy on each original snapshot branch.
22
- * Initial-unreleased history is retained, but current S1 has no admitted proof
23
- * permitting a synthesized empty v1 baseline; that branch stays incomplete. */
80
+ * An initial history value needs the trusted S3 adapter's receipt qualification.
81
+ * It proves absence of published compatibility obligations; it does
82
+ * not synthesize a v1 baseline or waive first-surface admission. */
24
83
  export function evaluateGrowthReleaseCompatibility(input, fingerprint) {
25
84
  const current = growthUniqueSorted(input.current, (entry) => entry.packageName);
26
85
  const released = growthUniqueSorted(input.released, (entry) => entry.packageName);
27
86
  const diagnostics = [], reasons = [];
87
+ const currentByPackage = new Map(current.map((entry) => [entry.packageName, entry]));
88
+ const releasedPackages = new Set(released.map((entry) => entry.packageName));
89
+ const stableTypeBindings = collectGrowthStableTypeBindings(current, released);
28
90
  if (current.length === 0) {
29
91
  reasons.push("growth-compatibility-topology-unavailable");
30
92
  }
@@ -32,15 +94,20 @@ export function evaluateGrowthReleaseCompatibility(input, fingerprint) {
32
94
  if (row.policy.packageName !== row.packageName) {
33
95
  throw new GrowthObservationInvariantError("growth-release-policy-package-mismatch");
34
96
  }
35
- const candidate = current.find((entry) => entry.packageName === row.packageName);
97
+ const candidate = currentByPackage.get(row.packageName);
36
98
  if (candidate === undefined) {
37
99
  reasons.push(`${row.packageName}:removed-package-compatibility-unavailable`);
38
100
  continue;
39
101
  }
40
102
  if (row.evidence.kind === "initial-unreleased") {
41
- reasons.push(`${row.packageName}:initial-unreleased-proof-not-qualified`);
103
+ evaluateInitialUnreleased({ row, candidate, extractorVersion: input.extractorVersion,
104
+ authorityReceiptDigest: input.authorityReceiptDigest, reasons });
42
105
  continue;
43
106
  }
107
+ if (!qualified(row, input.authorityReceiptDigest)) {
108
+ // Qualification controls admission, not observation of available breakage.
109
+ reasons.push(`${row.packageName}:released-proof-not-qualified`);
110
+ }
44
111
  if (row.releaseEvidence.status !== "available") {
45
112
  reasons.push(`${row.packageName}:release-evidence-unavailable`);
46
113
  continue;
@@ -60,11 +127,11 @@ export function evaluateGrowthReleaseCompatibility(input, fingerprint) {
60
127
  if (next.value.packageVersion !== row.releaseEvidence.value.packageVersion) {
61
128
  throw new GrowthObservationInvariantError("growth-release-version-mismatch");
62
129
  }
63
- diagnostics.push(...compareBranch(row, previous.value, next.value, input.acceptedDecisions, fingerprint));
130
+ diagnostics.push(...compareBranch(row, previous.value, next.value, { accepted: input.acceptedDecisions, fingerprint, stableTypeBindings }));
64
131
  }
65
132
  }
66
133
  for (const row of current) {
67
- if (!released.some((entry) => entry.packageName === row.packageName)) {
134
+ if (!releasedPackages.has(row.packageName)) {
68
135
  reasons.push(`${row.packageName}:released-history-unavailable`);
69
136
  }
70
137
  }