@agent-teams/engineering-foundation 0.9.0 → 0.10.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 (86) hide show
  1. package/README.md +5 -0
  2. package/dist/capabilities/contract-json-schema-releases/adapters/outbound/filesystem/ajv-json-schema-release-inspector.d.ts +5 -0
  3. package/dist/capabilities/contract-json-schema-releases/adapters/outbound/filesystem/ajv-json-schema-release-inspector.d.ts.map +1 -1
  4. package/dist/capabilities/contract-json-schema-releases/adapters/outbound/filesystem/ajv-json-schema-release-inspector.js +48 -27
  5. package/dist/capabilities/contract-json-schema-releases/adapters/outbound/filesystem/ajv-json-schema-release-inspector.js.map +1 -1
  6. package/dist/capabilities/contract-json-schema-releases/application/ports/json-schema-release-inspector.d.ts +1 -0
  7. package/dist/capabilities/contract-json-schema-releases/application/ports/json-schema-release-inspector.d.ts.map +1 -1
  8. package/dist/capabilities/executable-specifications/adapters/outbound/filesystem/filesystem-executable-specification-inspector.d.ts +24 -0
  9. package/dist/capabilities/executable-specifications/adapters/outbound/filesystem/filesystem-executable-specification-inspector.d.ts.map +1 -0
  10. package/dist/capabilities/executable-specifications/adapters/outbound/filesystem/filesystem-executable-specification-inspector.js +244 -0
  11. package/dist/capabilities/executable-specifications/adapters/outbound/filesystem/filesystem-executable-specification-inspector.js.map +1 -0
  12. package/dist/capabilities/executable-specifications/application/model/executable-specification.d.ts +58 -0
  13. package/dist/capabilities/executable-specifications/application/model/executable-specification.d.ts.map +1 -0
  14. package/dist/capabilities/executable-specifications/application/model/executable-specification.js +2 -0
  15. package/dist/capabilities/executable-specifications/application/model/executable-specification.js.map +1 -0
  16. package/dist/capabilities/executable-specifications/application/policies/evaluate-executable-specifications.d.ts +6 -0
  17. package/dist/capabilities/executable-specifications/application/policies/evaluate-executable-specifications.d.ts.map +1 -0
  18. package/dist/capabilities/executable-specifications/application/policies/evaluate-executable-specifications.js +277 -0
  19. package/dist/capabilities/executable-specifications/application/policies/evaluate-executable-specifications.js.map +1 -0
  20. package/dist/capabilities/executable-specifications/application/policies/portable-executable-specification-path.d.ts +10 -0
  21. package/dist/capabilities/executable-specifications/application/policies/portable-executable-specification-path.d.ts.map +1 -0
  22. package/dist/capabilities/executable-specifications/application/policies/portable-executable-specification-path.js +76 -0
  23. package/dist/capabilities/executable-specifications/application/policies/portable-executable-specification-path.js.map +1 -0
  24. package/dist/capabilities/executable-specifications/application/ports/executable-specification-inspector.d.ts +9 -0
  25. package/dist/capabilities/executable-specifications/application/ports/executable-specification-inspector.d.ts.map +1 -0
  26. package/dist/capabilities/executable-specifications/application/ports/executable-specification-inspector.js +2 -0
  27. package/dist/capabilities/executable-specifications/application/ports/executable-specification-inspector.js.map +1 -0
  28. package/dist/capabilities/executable-specifications/application/rules.d.ts +22 -0
  29. package/dist/capabilities/executable-specifications/application/rules.d.ts.map +1 -0
  30. package/dist/capabilities/executable-specifications/application/rules.js +23 -0
  31. package/dist/capabilities/executable-specifications/application/rules.js.map +1 -0
  32. package/dist/capabilities/executable-specifications/application/use-cases/analyze-executable-specifications.d.ts +8 -0
  33. package/dist/capabilities/executable-specifications/application/use-cases/analyze-executable-specifications.d.ts.map +1 -0
  34. package/dist/capabilities/executable-specifications/application/use-cases/analyze-executable-specifications.js +36 -0
  35. package/dist/capabilities/executable-specifications/application/use-cases/analyze-executable-specifications.js.map +1 -0
  36. package/dist/capabilities/executable-specifications/contract/config.d.ts +5 -0
  37. package/dist/capabilities/executable-specifications/contract/config.d.ts.map +1 -0
  38. package/dist/capabilities/executable-specifications/contract/config.js +155 -0
  39. package/dist/capabilities/executable-specifications/contract/config.js.map +1 -0
  40. package/dist/capabilities/executable-specifications/module.d.ts +10 -0
  41. package/dist/capabilities/executable-specifications/module.d.ts.map +1 -0
  42. package/dist/capabilities/executable-specifications/module.js +52 -0
  43. package/dist/capabilities/executable-specifications/module.js.map +1 -0
  44. package/dist/capabilities/source-dependencies/application/model/source-workspace.d.ts +2 -0
  45. package/dist/capabilities/source-dependencies/application/model/source-workspace.d.ts.map +1 -1
  46. package/dist/capabilities/source-dependencies/application/policies/evaluate-resolved-source-dependency.d.ts +1 -0
  47. package/dist/capabilities/source-dependencies/application/policies/evaluate-resolved-source-dependency.d.ts.map +1 -1
  48. package/dist/capabilities/source-dependencies/application/policies/evaluate-resolved-source-dependency.js +47 -3
  49. package/dist/capabilities/source-dependencies/application/policies/evaluate-resolved-source-dependency.js.map +1 -1
  50. package/dist/capabilities/source-dependencies/application/policies/evaluate-source-dependencies.d.ts.map +1 -1
  51. package/dist/capabilities/source-dependencies/application/policies/evaluate-source-dependencies.js +14 -1
  52. package/dist/capabilities/source-dependencies/application/policies/evaluate-source-dependencies.js.map +1 -1
  53. package/dist/capabilities/source-dependencies/application/rules.d.ts +2 -0
  54. package/dist/capabilities/source-dependencies/application/rules.d.ts.map +1 -1
  55. package/dist/capabilities/source-dependencies/application/rules.js +2 -0
  56. package/dist/capabilities/source-dependencies/application/rules.js.map +1 -1
  57. package/dist/capabilities/source-dependencies/contract/config.d.ts.map +1 -1
  58. package/dist/capabilities/source-dependencies/contract/config.js +5 -0
  59. package/dist/capabilities/source-dependencies/contract/config.js.map +1 -1
  60. package/dist/composition/capability-registry.d.ts.map +1 -1
  61. package/dist/composition/capability-registry.js +2 -0
  62. package/dist/composition/capability-registry.js.map +1 -1
  63. package/dist/composition/rule-registry.d.ts.map +1 -1
  64. package/dist/composition/rule-registry.js +2 -0
  65. package/dist/composition/rule-registry.js.map +1 -1
  66. package/dist/foundation-config.d.ts +1 -1
  67. package/dist/foundation-config.d.ts.map +1 -1
  68. package/dist/foundation-config.js +2 -0
  69. package/dist/foundation-config.js.map +1 -1
  70. package/dist/schema-ids.d.ts +1 -1
  71. package/dist/schema-ids.d.ts.map +1 -1
  72. package/dist/schema-ids.js +2 -0
  73. package/dist/schema-ids.js.map +1 -1
  74. package/dist/strict-json.d.ts +7 -0
  75. package/dist/strict-json.d.ts.map +1 -0
  76. package/dist/strict-json.js +41 -0
  77. package/dist/strict-json.js.map +1 -0
  78. package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.d.ts +1 -0
  79. package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.d.ts.map +1 -1
  80. package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.js +7 -0
  81. package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.js.map +1 -1
  82. package/package.json +4 -1
  83. package/schemas/architecture-source-dependencies/v1.schema.json +1 -0
  84. package/schemas/foundation-config/v1.schema.json +10 -0
  85. package/schemas/quality-executable-specification-catalog/v1.schema.json +201 -0
  86. package/schemas/quality-executable-specifications/v1.schema.json +20 -0
@@ -0,0 +1,6 @@
1
+ import type { FoundationDiagnostic } from "../../../../check-contract.js";
2
+ import type { ExecutableSpecificationCatalog, ExecutableSpecificationObservation } from "../model/executable-specification.js";
3
+ /** Pure topology validation. It must run before any consumer artifact inspection. */
4
+ export declare function evaluateExecutableSpecificationTopology(catalog: ExecutableSpecificationCatalog): readonly FoundationDiagnostic[];
5
+ export declare function evaluateExecutableSpecifications(catalog: ExecutableSpecificationCatalog, observations: readonly ExecutableSpecificationObservation[]): readonly FoundationDiagnostic[];
6
+ //# sourceMappingURL=evaluate-executable-specifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-executable-specifications.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/policies/evaluate-executable-specifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAGV,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,sCAAsC,CAAC;AAoK9C,qFAAqF;AACrF,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,8BAA8B,GACtC,SAAS,oBAAoB,EAAE,CAwGjC;AAkGD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,8BAA8B,EACvC,YAAY,EAAE,SAAS,kCAAkC,EAAE,GAC1D,SAAS,oBAAoB,EAAE,CASjC"}
@@ -0,0 +1,277 @@
1
+ import { EXECUTABLE_SPECIFICATION_RULES } from "../rules.js";
2
+ import { executableSpecificationPathDeclarations, portableExecutableSpecificationPathIdentity, portableExecutableSpecificationPathProblem } from "./portable-executable-specification-path.js";
3
+ function diagnostic(input) {
4
+ return {
5
+ ruleId: input.rule.id,
6
+ severity: input.rule.severity,
7
+ subject: input.subject,
8
+ message: input.message,
9
+ location: { path: input.path },
10
+ relatedLocations: [],
11
+ evidence: input.evidence ?? [],
12
+ remediation: input.rule.remediation,
13
+ requiresArchitectureReview: input.rule.requiresArchitectureReview
14
+ };
15
+ }
16
+ function duplicateValues(values) {
17
+ const seen = new Set();
18
+ const duplicates = new Set();
19
+ for (const value of values) {
20
+ if (seen.has(value)) {
21
+ duplicates.add(value);
22
+ }
23
+ seen.add(value);
24
+ }
25
+ return [...duplicates].toSorted();
26
+ }
27
+ function duplicatePaths(paths) {
28
+ const firstByIdentity = new Map();
29
+ const duplicates = new Set();
30
+ for (const path of paths) {
31
+ const identity = portableExecutableSpecificationPathIdentity(path);
32
+ const first = firstByIdentity.get(identity);
33
+ if (first === undefined) {
34
+ firstByIdentity.set(identity, path);
35
+ }
36
+ else {
37
+ duplicates.add(first);
38
+ }
39
+ }
40
+ return [...duplicates].toSorted();
41
+ }
42
+ function gateKey(binding) {
43
+ return `${binding.packageName}\u0000${binding.script}`;
44
+ }
45
+ function specificationGates(specification) {
46
+ return [
47
+ ...(specification.gateBindings.typeGeneration === undefined
48
+ ? []
49
+ : [['typeGeneration', specification.gateBindings.typeGeneration]]),
50
+ ["property", specification.gateBindings.property],
51
+ ["mutation", specification.gateBindings.mutation],
52
+ ...(specification.stateModel.kind === "xstate"
53
+ ? [["spec-model", specification.stateModel.gateBinding]]
54
+ : [])
55
+ ];
56
+ }
57
+ function generatedAndModelPaths(specification) {
58
+ return [
59
+ ...specification.generatedTypes.map((binding) => binding.outputPath),
60
+ ...(specification.stateModel.kind === "xstate"
61
+ ? [
62
+ specification.stateModel.modelPath,
63
+ specification.stateModel.adapterPath,
64
+ specification.stateModel.tracesPath,
65
+ specification.stateModel.diagramPath
66
+ ]
67
+ : [])
68
+ ];
69
+ }
70
+ function duplicatePathDiagnostics(paths, description) {
71
+ return duplicatePaths(paths).map((path) => diagnostic({
72
+ rule: EXECUTABLE_SPECIFICATION_RULES.pathCollision,
73
+ subject: `catalog-path:${path}`,
74
+ path,
75
+ message: `${description}: ${path}.`
76
+ }));
77
+ }
78
+ function evaluateSpecificationTopology(specification, catalogPath) {
79
+ const diagnostics = [];
80
+ const hasGeneratedTypes = specification.generatedTypes.length > 0;
81
+ const hasTypeGenerationGate = specification.gateBindings.typeGeneration !== undefined;
82
+ if (hasGeneratedTypes !== hasTypeGenerationGate) {
83
+ diagnostics.push(diagnostic({
84
+ rule: EXECUTABLE_SPECIFICATION_RULES.generatedTypeGateMismatch,
85
+ subject: `${specification.id}:gate:typeGeneration`,
86
+ path: catalogPath,
87
+ message: hasGeneratedTypes
88
+ ? "Generated type outputs require a type-generation gate binding."
89
+ : "A data-only specification must not declare a type-generation gate binding."
90
+ }));
91
+ }
92
+ for (const schemaId of duplicateValues(specification.generatedTypes.map((binding) => binding.schemaId))) {
93
+ diagnostics.push(diagnostic({
94
+ rule: EXECUTABLE_SPECIFICATION_RULES.generatedTypeBindingDuplicate,
95
+ subject: `${specification.id}:schema:${schemaId}`,
96
+ path: specification.generatedTypes[0]?.outputPath ?? catalogPath,
97
+ message: `Schema ID has more than one generated type binding: ${schemaId}.`
98
+ }));
99
+ }
100
+ for (const outputPath of duplicateValues(specification.generatedTypes.map((binding) => binding.outputPath))) {
101
+ diagnostics.push(diagnostic({
102
+ rule: EXECUTABLE_SPECIFICATION_RULES.generatedTypeBindingDuplicate,
103
+ subject: `${specification.id}:output:${outputPath}`,
104
+ path: outputPath,
105
+ message: `Generated type output path is bound more than once: ${outputPath}.`
106
+ }));
107
+ }
108
+ for (const duplicate of duplicateValues(specificationGates(specification).map(([, binding]) => gateKey(binding)))) {
109
+ const [packageName = "", script = ""] = duplicate.split("\u0000");
110
+ diagnostics.push(diagnostic({
111
+ rule: EXECUTABLE_SPECIFICATION_RULES.gateNotDistinct,
112
+ subject: `${specification.id}:gate:${packageName}:${script}`,
113
+ path: catalogPath,
114
+ message: `Gate script is reused by more than one evidence role: ${packageName}#${script}.`
115
+ }));
116
+ }
117
+ return diagnostics;
118
+ }
119
+ /** Pure topology validation. It must run before any consumer artifact inspection. */
120
+ export function evaluateExecutableSpecificationTopology(catalog) {
121
+ const diagnostics = [];
122
+ for (const id of duplicateValues(catalog.specifications.map((specification) => specification.id))) {
123
+ diagnostics.push(diagnostic({
124
+ rule: EXECUTABLE_SPECIFICATION_RULES.specificationIdDuplicate,
125
+ subject: `specification:${id}`,
126
+ path: catalog.catalogPath,
127
+ message: `Executable specification ID is declared more than once: ${id}.`
128
+ }));
129
+ }
130
+ for (const specification of catalog.specifications) {
131
+ diagnostics.push(...evaluateSpecificationTopology(specification, catalog.catalogPath));
132
+ }
133
+ const pathDeclarations = executableSpecificationPathDeclarations(catalog);
134
+ for (const declaration of pathDeclarations) {
135
+ const portabilityProblem = portableExecutableSpecificationPathProblem(declaration.path);
136
+ if (portabilityProblem !== undefined) {
137
+ diagnostics.push(diagnostic({
138
+ rule: EXECUTABLE_SPECIFICATION_RULES.pathCollision,
139
+ subject: `catalog-path:${declaration.path}`,
140
+ path: declaration.path,
141
+ message: `Executable specification path is not portable: ${declaration.path} (${portabilityProblem}).`
142
+ }));
143
+ }
144
+ }
145
+ const firstDeclarationByIdentity = new Map();
146
+ for (const declaration of pathDeclarations) {
147
+ const identity = portableExecutableSpecificationPathIdentity(declaration.path);
148
+ const first = firstDeclarationByIdentity.get(identity);
149
+ if (first === undefined) {
150
+ firstDeclarationByIdentity.set(identity, declaration);
151
+ continue;
152
+ }
153
+ const shareableExactEvidence = first.path === declaration.path &&
154
+ first.role === declaration.role &&
155
+ (first.role === "owner" || first.role === "adr");
156
+ if (!shareableExactEvidence) {
157
+ diagnostics.push(diagnostic({
158
+ rule: EXECUTABLE_SPECIFICATION_RULES.pathCollision,
159
+ subject: `catalog-path:${declaration.path}`,
160
+ path: declaration.path,
161
+ message: `Executable specification path roles collide: ${first.role}:${first.path} and ${declaration.role}:${declaration.path}.`
162
+ }));
163
+ }
164
+ }
165
+ const schemaPaths = catalog.specifications.flatMap((specification) => specification.schemaPaths);
166
+ const documentPaths = catalog.specifications.flatMap((specification) => specification.documents.map((document) => document.path));
167
+ const generatedModelPaths = catalog.specifications.flatMap(generatedAndModelPaths);
168
+ const sourcePaths = catalog.specifications.flatMap((specification) => [
169
+ "foundation.config.yaml",
170
+ catalog.configPath,
171
+ catalog.catalogPath,
172
+ "package.json",
173
+ "pnpm-workspace.yaml",
174
+ ...specification.ownerDocs,
175
+ ...specification.adrRefs,
176
+ ...specification.schemaPaths,
177
+ ...specification.documents.map((document) => document.path)
178
+ ]);
179
+ diagnostics.push(...duplicatePathDiagnostics(schemaPaths, "Schema path is declared more than once"), ...duplicatePathDiagnostics(documentPaths, "Document path is declared more than once"), ...duplicatePathDiagnostics(generatedModelPaths, "Generated or executable artifact path is assigned more than once"));
180
+ const sourcePathSet = new Set(sourcePaths.map(portableExecutableSpecificationPathIdentity));
181
+ for (const path of [...new Set(generatedModelPaths)].toSorted()) {
182
+ if (sourcePathSet.has(portableExecutableSpecificationPathIdentity(path)) ||
183
+ portableExecutableSpecificationPathIdentity(path).endsWith("/package.json")) {
184
+ diagnostics.push(diagnostic({
185
+ rule: EXECUTABLE_SPECIFICATION_RULES.pathCollision,
186
+ subject: `catalog-path:${path}`,
187
+ path,
188
+ message: `Generated or executable artifact collides with a source, owner, ADR, schema, or document path: ${path}.`
189
+ }));
190
+ }
191
+ }
192
+ return diagnostics;
193
+ }
194
+ function evaluateBindings(specification, observation) {
195
+ const diagnostics = [];
196
+ const schemaIds = new Set(observation.jsonSchemas.schemaIds);
197
+ for (const document of specification.documents) {
198
+ if (!schemaIds.has(document.schemaId)) {
199
+ diagnostics.push(diagnostic({
200
+ rule: EXECUTABLE_SPECIFICATION_RULES.schemaBindingUnknown,
201
+ subject: `${specification.id}:document:${document.path}`,
202
+ path: document.path,
203
+ message: `Document binds an unknown local schema ID: ${document.schemaId}.`
204
+ }));
205
+ }
206
+ }
207
+ for (const binding of specification.generatedTypes) {
208
+ if (!schemaIds.has(binding.schemaId)) {
209
+ diagnostics.push(diagnostic({
210
+ rule: EXECUTABLE_SPECIFICATION_RULES.schemaBindingUnknown,
211
+ subject: `${specification.id}:generated-type:${binding.outputPath}`,
212
+ path: binding.outputPath,
213
+ message: `Generated type binds an unknown local schema ID: ${binding.schemaId}.`
214
+ }));
215
+ }
216
+ }
217
+ return diagnostics;
218
+ }
219
+ function evaluateGates(specification, observation) {
220
+ const diagnostics = [];
221
+ const gates = specificationGates(specification);
222
+ for (const [role] of gates) {
223
+ const observed = observation.gates[role];
224
+ if (observed === undefined || !observed.packageExists || !observed.scriptExists) {
225
+ diagnostics.push(diagnostic({
226
+ rule: EXECUTABLE_SPECIFICATION_RULES.gateMissing,
227
+ subject: `${specification.id}:gate:${role}`,
228
+ path: observed?.manifestPath ?? observation.id,
229
+ message: observed?.packageExists === true
230
+ ? `Gate ${role} binds a missing package script: ${observed.packageName}#${observed.script}.`
231
+ : `Gate ${role} binds a missing workspace package: ${observed?.packageName ?? "unknown"}.`
232
+ }));
233
+ }
234
+ }
235
+ return diagnostics;
236
+ }
237
+ function evaluateSpecification(specification, observation) {
238
+ const diagnostics = [];
239
+ for (const path of observation.missingArtifactPaths) {
240
+ diagnostics.push(diagnostic({
241
+ rule: EXECUTABLE_SPECIFICATION_RULES.artifactMissing,
242
+ subject: `${specification.id}:artifact:${path}`,
243
+ path,
244
+ message: `Declared executable specification artifact is missing: ${path}.`,
245
+ evidence: [{ kind: "artifact-corpus-digest", value: observation.artifactDigest }]
246
+ }));
247
+ }
248
+ for (const result of observation.jsonSchemas.fixtureResults) {
249
+ if (!result.matched) {
250
+ const document = specification.documents[Number(result.id.split(".").at(-1))];
251
+ diagnostics.push(diagnostic({
252
+ rule: EXECUTABLE_SPECIFICATION_RULES.documentInvalid,
253
+ subject: `${specification.id}:document:${document?.path ?? result.id}`,
254
+ path: document?.path ?? result.id,
255
+ message: "JSON specification document does not conform to its declared schema.",
256
+ evidence: [
257
+ { kind: "schema-set-digest", value: observation.jsonSchemas.schemaSetDigest },
258
+ { kind: "document-corpus-digest", value: observation.jsonSchemas.fixtureCorpusDigest }
259
+ ]
260
+ }));
261
+ }
262
+ }
263
+ diagnostics.push(...evaluateBindings(specification, observation));
264
+ diagnostics.push(...evaluateGates(specification, observation));
265
+ return diagnostics;
266
+ }
267
+ export function evaluateExecutableSpecifications(catalog, observations) {
268
+ const diagnostics = [];
269
+ for (const [index, specification] of catalog.specifications.entries()) {
270
+ const observation = observations[index];
271
+ if (observation !== undefined) {
272
+ diagnostics.push(...evaluateSpecification(specification, observation));
273
+ }
274
+ }
275
+ return diagnostics;
276
+ }
277
+ //# sourceMappingURL=evaluate-executable-specifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-executable-specifications.js","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/policies/evaluate-executable-specifications.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ExecutableSpecification, ExecutableSpecificationCatalog } from "../model/executable-specification.js";
2
+ export declare function portableExecutableSpecificationPathProblem(repositoryPath: string): string | undefined;
3
+ export declare function portableExecutableSpecificationPathIdentity(repositoryPath: string): string;
4
+ export declare function executableSpecificationArtifactPaths(specification: ExecutableSpecification): readonly string[];
5
+ export interface ExecutableSpecificationPathDeclaration {
6
+ readonly path: string;
7
+ readonly role: "owner" | "adr" | "schema" | "document" | "generated-model" | "reserved-foundation-config" | "reserved-capability-config" | "reserved-catalog" | "reserved-root-package" | "reserved-workspace";
8
+ }
9
+ export declare function executableSpecificationPathDeclarations(catalog: ExecutableSpecificationCatalog): readonly ExecutableSpecificationPathDeclaration[];
10
+ //# sourceMappingURL=portable-executable-specification-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-executable-specification-path.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/policies/portable-executable-specification-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,sCAAsC,CAAC;AAK9C,wBAAgB,0CAA0C,CACxD,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,SAAS,CAmBpB;AAED,wBAAgB,2CAA2C,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED,wBAAgB,oCAAoC,CAClD,aAAa,EAAE,uBAAuB,GACrC,SAAS,MAAM,EAAE,CAkBnB;AAcD,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EACT,OAAO,GACP,KAAK,GACL,QAAQ,GACR,UAAU,GACV,iBAAiB,GACjB,4BAA4B,GAC5B,4BAA4B,GAC5B,kBAAkB,GAClB,uBAAuB,GACvB,oBAAoB,CAAC;CAC1B;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,8BAA8B,GACtC,SAAS,sCAAsC,EAAE,CAsBnD"}
@@ -0,0 +1,76 @@
1
+ const PORTABLE_SEGMENT = /^[A-Za-z0-9._@+-]+$/u;
2
+ const WINDOWS_DEVICE_BASENAME = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/iu;
3
+ export function portableExecutableSpecificationPathProblem(repositoryPath) {
4
+ for (const segment of repositoryPath.split("/")) {
5
+ if (segment.length > 255) {
6
+ return "segments must not exceed 255 ASCII characters";
7
+ }
8
+ if (segment === "." || segment === "..") {
9
+ return "dot segments are not allowed";
10
+ }
11
+ if (!PORTABLE_SEGMENT.test(segment)) {
12
+ return "segments may contain only ASCII letters, digits, dot, underscore, at sign, plus, and hyphen";
13
+ }
14
+ if (segment.endsWith(".") || segment.endsWith(" ")) {
15
+ return "segments must not end with a dot or space";
16
+ }
17
+ if (WINDOWS_DEVICE_BASENAME.test(segment)) {
18
+ return "segments must not use a reserved Windows device basename";
19
+ }
20
+ }
21
+ return undefined;
22
+ }
23
+ export function portableExecutableSpecificationPathIdentity(repositoryPath) {
24
+ return repositoryPath.toLowerCase();
25
+ }
26
+ export function executableSpecificationArtifactPaths(specification) {
27
+ const statePaths = specification.stateModel.kind === "xstate"
28
+ ? [
29
+ specification.stateModel.adapterPath,
30
+ specification.stateModel.diagramPath,
31
+ specification.stateModel.modelPath,
32
+ specification.stateModel.tracesPath
33
+ ]
34
+ : [];
35
+ return [
36
+ ...specification.ownerDocs,
37
+ ...specification.adrRefs,
38
+ ...specification.schemaPaths,
39
+ ...specification.documents.map((document) => document.path),
40
+ ...specification.generatedTypes.map((binding) => binding.outputPath),
41
+ ...statePaths
42
+ ];
43
+ }
44
+ function executableSpecificationReservedPaths(catalog) {
45
+ return [
46
+ { path: "foundation.config.yaml", role: "reserved-foundation-config" },
47
+ { path: catalog.configPath, role: "reserved-capability-config" },
48
+ { path: catalog.catalogPath, role: "reserved-catalog" },
49
+ { path: "package.json", role: "reserved-root-package" },
50
+ { path: "pnpm-workspace.yaml", role: "reserved-workspace" }
51
+ ];
52
+ }
53
+ export function executableSpecificationPathDeclarations(catalog) {
54
+ return [
55
+ ...executableSpecificationReservedPaths(catalog),
56
+ ...catalog.specifications.flatMap((specification) => [
57
+ ...specification.ownerDocs.map((path) => ({ path, role: "owner" })),
58
+ ...specification.adrRefs.map((path) => ({ path, role: "adr" })),
59
+ ...specification.schemaPaths.map((path) => ({ path, role: "schema" })),
60
+ ...specification.documents.map(({ path }) => ({ path, role: "document" })),
61
+ ...specification.generatedTypes.map(({ outputPath: path }) => ({
62
+ path,
63
+ role: "generated-model"
64
+ })),
65
+ ...(specification.stateModel.kind === "xstate"
66
+ ? [
67
+ specification.stateModel.modelPath,
68
+ specification.stateModel.adapterPath,
69
+ specification.stateModel.tracesPath,
70
+ specification.stateModel.diagramPath
71
+ ].map((path) => ({ path, role: "generated-model" }))
72
+ : [])
73
+ ])
74
+ ];
75
+ }
76
+ //# sourceMappingURL=portable-executable-specification-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-executable-specification-path.js","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/policies/portable-executable-specification-path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ExecutableSpecificationCatalog, ExecutableSpecificationObservation } from "../model/executable-specification.js";
2
+ export interface ExecutableSpecificationInspector {
3
+ inspectCatalog(input: {
4
+ readonly consumerRoot: string;
5
+ readonly catalog: ExecutableSpecificationCatalog;
6
+ readonly signal?: AbortSignal;
7
+ }): Promise<readonly ExecutableSpecificationObservation[]>;
8
+ }
9
+ //# sourceMappingURL=executable-specification-inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-specification-inspector.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/ports/executable-specification-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,sCAAsC,CAAC;AAE9C,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;QACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,GAAG,OAAO,CAAC,SAAS,kCAAkC,EAAE,CAAC,CAAC;CAC5D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=executable-specification-inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-specification-inspector.js","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/ports/executable-specification-inspector.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { DiagnosticSeverity } from "../../../check-contract.js";
2
+ export interface ExecutableSpecificationRuleMetadata {
3
+ readonly id: string;
4
+ readonly severity: DiagnosticSeverity;
5
+ readonly rationale: string;
6
+ readonly remediation: string;
7
+ readonly documentation: string;
8
+ readonly requiresArchitectureReview: boolean;
9
+ }
10
+ export declare const EXECUTABLE_SPECIFICATION_RULES: Readonly<{
11
+ artifactMissing: ExecutableSpecificationRuleMetadata;
12
+ documentInvalid: ExecutableSpecificationRuleMetadata;
13
+ gateMissing: ExecutableSpecificationRuleMetadata;
14
+ gateNotDistinct: ExecutableSpecificationRuleMetadata;
15
+ generatedTypeBindingDuplicate: ExecutableSpecificationRuleMetadata;
16
+ generatedTypeGateMismatch: ExecutableSpecificationRuleMetadata;
17
+ pathCollision: ExecutableSpecificationRuleMetadata;
18
+ schemaBindingUnknown: ExecutableSpecificationRuleMetadata;
19
+ specificationIdDuplicate: ExecutableSpecificationRuleMetadata;
20
+ }>;
21
+ export declare const EXECUTABLE_SPECIFICATION_RULES_BY_ID: ReadonlyMap<string, ExecutableSpecificationRuleMetadata>;
22
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/executable-specifications/application/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C;AAkBD,eAAO,MAAM,8BAA8B;;;;;;;;;;EA+CzC,CAAC;AAEH,eAAO,MAAM,oCAAoC,EAAE,WAAW,CAC5D,MAAM,EACN,mCAAmC,CAGpC,CAAC"}
@@ -0,0 +1,23 @@
1
+ function rule(suffix, rationale, remediation, requiresArchitectureReview = false) {
2
+ return Object.freeze({
3
+ id: `quality.executable-specifications.${suffix}`,
4
+ severity: "error",
5
+ rationale,
6
+ remediation,
7
+ documentation: "docs/reference/executable-specifications.md",
8
+ requiresArchitectureReview
9
+ });
10
+ }
11
+ export const EXECUTABLE_SPECIFICATION_RULES = Object.freeze({
12
+ artifactMissing: rule("artifact-missing", "Every declared specification artifact must exist as a contained regular file.", "Create the declared artifact or correct the catalog path."),
13
+ documentInvalid: rule("document-invalid", "Every JSON specification document must conform to its declared local schema.", "Correct the document or its schema binding."),
14
+ gateMissing: rule("gate-missing", "Every consumer-owned executable gate must bind to an existing package script.", "Declare the package script and keep its catalog binding current."),
15
+ gateNotDistinct: rule("gate-not-distinct", "Type generation, property, mutation, and optional state-model gates are independent evidence.", "Bind every gate role to a distinct package script.", true),
16
+ generatedTypeBindingDuplicate: rule("generated-type-binding-duplicate", "A schema and generated output must each have one unambiguous type binding.", "Remove duplicate schema or output bindings."),
17
+ generatedTypeGateMismatch: rule("generated-type-gate-mismatch", "Type generation is required exactly when generated type outputs are declared.", "Declare both generatedTypes and typeGeneration, or omit the gate for a data-only specification."),
18
+ pathCollision: rule("path-collision", "Executable specification paths must be portable and must not collide across evidence, reserved input, generated output, model, or workspace-manifest roles.", "Use portable ASCII repository paths and assign a distinct path whenever artifact roles cannot share the same read-only evidence."),
19
+ schemaBindingUnknown: rule("schema-binding-unknown", "Documents and generated types must bind to a schema in the specification's local set.", "Use a declared schema $id or add the schema to schemaPaths."),
20
+ specificationIdDuplicate: rule("specification-id-duplicate", "Every executable specification must have one unambiguous catalog identity.", "Assign a unique normalized ID to every catalog entry.")
21
+ });
22
+ export const EXECUTABLE_SPECIFICATION_RULES_BY_ID = new Map(Object.values(EXECUTABLE_SPECIFICATION_RULES).map((metadata) => [metadata.id, metadata]));
23
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/capabilities/executable-specifications/application/rules.ts"],"names":[],"mappings":"AAWA,SAAS,IAAI,CACX,MAAc,EACd,SAAiB,EACjB,WAAmB,EACnB,0BAA0B,GAAG,KAAK;IAElC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,qCAAqC,MAAM,EAAE;QACjD,QAAQ,EAAE,OAAO;QACjB,SAAS;QACT,WAAW;QACX,aAAa,EAAE,6CAA6C;QAC5D,0BAA0B;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,eAAe,EAAE,IAAI,CACnB,kBAAkB,EAClB,+EAA+E,EAC/E,2DAA2D,CAC5D;IACD,eAAe,EAAE,IAAI,CACnB,kBAAkB,EAClB,8EAA8E,EAC9E,6CAA6C,CAC9C;IACD,WAAW,EAAE,IAAI,CACf,cAAc,EACd,+EAA+E,EAC/E,kEAAkE,CACnE;IACD,eAAe,EAAE,IAAI,CACnB,mBAAmB,EACnB,+FAA+F,EAC/F,oDAAoD,EACpD,IAAI,CACL;IACD,6BAA6B,EAAE,IAAI,CACjC,kCAAkC,EAClC,4EAA4E,EAC5E,6CAA6C,CAC9C;IACD,yBAAyB,EAAE,IAAI,CAC7B,8BAA8B,EAC9B,+EAA+E,EAC/E,iGAAiG,CAClG;IACD,aAAa,EAAE,IAAI,CACjB,gBAAgB,EAChB,6JAA6J,EAC7J,kIAAkI,CACnI;IACD,oBAAoB,EAAE,IAAI,CACxB,wBAAwB,EACxB,uFAAuF,EACvF,6DAA6D,CAC9D;IACD,wBAAwB,EAAE,IAAI,CAC5B,4BAA4B,EAC5B,4EAA4E,EAC5E,uDAAuD,CACxD;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oCAAoC,GAG7C,IAAI,GAAG,CACT,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CACzF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ExecutableSpecificationCatalog } from "../model/executable-specification.js";
2
+ import type { ExecutableSpecificationInspector } from "../ports/executable-specification-inspector.js";
3
+ export declare function analyzeExecutableSpecifications(input: {
4
+ readonly consumerRoot: string;
5
+ readonly catalog: ExecutableSpecificationCatalog;
6
+ readonly signal?: AbortSignal;
7
+ }, inspector: ExecutableSpecificationInspector): Promise<readonly import("../../../../check-contract.js").FoundationDiagnostic[]>;
8
+ //# sourceMappingURL=analyze-executable-specifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-executable-specifications.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/use-cases/analyze-executable-specifications.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAK3F,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAGvG,wBAAsB,+BAA+B,CACnD,KAAK,EAAE;IACL,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,EACD,SAAS,EAAE,gCAAgC,oFAqC5C"}
@@ -0,0 +1,36 @@
1
+ import { CapabilityInputError } from "../../../../capability-runtime.js";
2
+ import { assertNotCancelled } from "../../../../strict-yaml.js";
3
+ import { evaluateExecutableSpecificationTopology, evaluateExecutableSpecifications } from "../policies/evaluate-executable-specifications.js";
4
+ import { executableSpecificationArtifactPaths } from "../policies/portable-executable-specification-path.js";
5
+ export async function analyzeExecutableSpecifications(input, inspector) {
6
+ assertNotCancelled(input.signal);
7
+ const topologyDiagnostics = evaluateExecutableSpecificationTopology(input.catalog);
8
+ if (topologyDiagnostics.length > 0) {
9
+ return topologyDiagnostics;
10
+ }
11
+ const artifactCount = new Set(input.catalog.specifications.flatMap(executableSpecificationArtifactPaths)).size;
12
+ if (artifactCount > 1_024) {
13
+ throw new CapabilityInputError({
14
+ code: "EXECUTABLE_SPECIFICATION_ARTIFACT_COUNT_EXCEEDED",
15
+ message: "Executable specification catalogs may reference at most 1024 unique artifacts.",
16
+ phase: "executable-specification-preflight",
17
+ retryable: false
18
+ });
19
+ }
20
+ const observations = await inspector.inspectCatalog({
21
+ consumerRoot: input.consumerRoot,
22
+ catalog: input.catalog,
23
+ ...(input.signal === undefined ? {} : { signal: input.signal })
24
+ });
25
+ if (observations.length !== input.catalog.specifications.length ||
26
+ observations.some((observation, index) => observation.id !== input.catalog.specifications[index]?.id)) {
27
+ throw new CapabilityInputError({
28
+ code: "EXECUTABLE_SPECIFICATION_OBSERVATION_INVALID",
29
+ message: "Executable specification inspection must return one ordered observation for every catalog entry.",
30
+ phase: "executable-specification-inspection",
31
+ retryable: false
32
+ });
33
+ }
34
+ return evaluateExecutableSpecifications(input.catalog, observations);
35
+ }
36
+ //# sourceMappingURL=analyze-executable-specifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-executable-specifications.js","sourceRoot":"","sources":["../../../../../src/capabilities/executable-specifications/application/use-cases/analyze-executable-specifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EACL,uCAAuC,EACvC,gCAAgC,EACjC,MAAM,mDAAmD,CAAC;AAE3D,OAAO,EAAE,oCAAoC,EAAE,MAAM,uDAAuD,CAAC;AAE7G,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,KAIC,EACD,SAA2C;IAE3C,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,mBAAmB,GAAG,uCAAuC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAC3E,CAAC,IAAI,CAAC;IACP,IAAI,aAAa,GAAG,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,oBAAoB,CAAC;YAC7B,IAAI,EAAE,kDAAkD;YACxD,OAAO,EAAE,gFAAgF;YACzF,KAAK,EAAE,oCAAoC;YAC3C,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC;QAClD,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,IACE,YAAY,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM;QAC3D,YAAY,CAAC,IAAI,CACf,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CACnF,EACD,CAAC;QACD,MAAM,IAAI,oBAAoB,CAAC;YAC7B,IAAI,EAAE,8CAA8C;YACpD,OAAO,EAAE,kGAAkG;YAC3G,KAAK,EAAE,qCAAqC;YAC5C,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,gCAAgC,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ExecutableSpecificationCatalog } from "../application/model/executable-specification.js";
2
+ export declare const CAPABILITY_ID: "quality.executable-specifications";
3
+ export declare const CAPABILITY_CONFIG_SCHEMA_VERSION: 1;
4
+ export declare function loadCapabilityConfig(consumerRoot: string, configPath: string, signal?: AbortSignal): Promise<ExecutableSpecificationCatalog>;
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/executable-specifications/contract/config.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAGV,8BAA8B,EAK/B,MAAM,kDAAkD,CAAC;AAG1D,eAAO,MAAM,aAAa,EAAG,mCAA4C,CAAC;AAC1E,eAAO,MAAM,gCAAgC,EAAG,CAAU,CAAC;AA8K3D,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,8BAA8B,CAAC,CA+BzC"}