@intentset/architecture 0.1.0 → 0.3.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.
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Areas (profile §9): a backend split into several Amplify backends, each its
3
+ * own CloudFormation deployment and source API, behind one AppSync Merged API.
4
+ * Nothing here runs unless `.intentset/architecture.yaml` declares areas.
5
+ *
6
+ * AMP007 a slice names a declared area as its domain, and its claims stay in that area
7
+ * AMP008 no area backend imports another; the shared backend package imports no area
8
+ * AMP009 each model, enum and operation is declared in one area's schema (a custom type: a warning)
9
+ * AMP010 no relationship or reference names another area's type
10
+ * AMP011 only the schema bridge calls generateClient (its schema imports are checked with AMP001)
11
+ *
12
+ * AMP012 (cross-area access and an acyclic deploy order) and AMP013 (one
13
+ * authorizer on the Merged API) are review assertions: neither is visible in
14
+ * source, so they are listed for review and never reported as passing.
15
+ */
16
+ import type { AreaConfig } from "./config.ts";
17
+ import { type Finding } from "./finding.ts";
18
+ import type { ImportEdge } from "./imports.ts";
19
+ import type { Model } from "./regions.ts";
20
+ export declare const AREA_REVIEW_REQUIRED: string[];
21
+ export interface AreaCheck {
22
+ findings: Finding[];
23
+ /** What could not be read: never a pass (invariant 6). */
24
+ unresolved: string[];
25
+ }
26
+ /** The area whose backend holds a path, or null. */
27
+ export declare function backendAreaOf(areas: readonly AreaConfig[], path: string): AreaConfig | null;
28
+ /** The area whose backend or frontend holds a path, or null. */
29
+ export declare function areaOf(areas: readonly AreaConfig[], path: string): AreaConfig | null;
30
+ /** True when the path is one of the declared areas' schema files. */
31
+ export declare function isAreaSchema(areas: readonly AreaConfig[], path: string): boolean;
32
+ export declare function checkAreas(model: Model, edges: readonly ImportEdge[]): AreaCheck;
33
+ //# sourceMappingURL=areas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areas.d.ts","sourceRoot":"","sources":["../src/areas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,eAAO,MAAM,oBAAoB,UAGhC,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE3F;AAED,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAEpF;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhF;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAqLhF"}
package/dist/areas.js ADDED
@@ -0,0 +1,189 @@
1
+ import { extractSchema, findCalls } from "./extract.js";
2
+ import { finding, listSome } from "./finding.js";
3
+ import { isCode } from "./paths.js";
4
+ import { compareStrings, matchAny } from "./patterns.js";
5
+ export const AREA_REVIEW_REQUIRED = [
6
+ "AMP012 backend code reaches another area's data through published resource names and the AWS SDK, and deploy-time dependencies between areas are acyclic: deployment wiring, not source",
7
+ "AMP013 one authorizer on the Merged API decides every request to every area and denies what it does not list: an authorizer's policy, not source",
8
+ ];
9
+ /** The area whose backend holds a path, or null. */
10
+ export function backendAreaOf(areas, path) {
11
+ return areas.find((area) => matchAny(area.backend, path)) ?? null;
12
+ }
13
+ /** The area whose backend or frontend holds a path, or null. */
14
+ export function areaOf(areas, path) {
15
+ return backendAreaOf(areas, path) ?? areas.find((area) => matchAny(area.frontend, path)) ?? null;
16
+ }
17
+ /** True when the path is one of the declared areas' schema files. */
18
+ export function isAreaSchema(areas, path) {
19
+ return areas.some((area) => area.schema === path);
20
+ }
21
+ const OPERATION_KINDS = new Set(["model", "enum", "query", "mutation", "subscription", null]);
22
+ export function checkAreas(model, edges) {
23
+ const { areas, sharedBackend, schemaBridge } = model.config;
24
+ const findings = [];
25
+ const unresolved = [];
26
+ if (areas.length === 0)
27
+ return { findings, unresolved };
28
+ const names = areas.map((area) => area.name).join(", ");
29
+ // AMP007: every slice in a declared area, and its claims inside it.
30
+ for (const slice of model.slices) {
31
+ const area = areas.find((candidate) => candidate.name === slice.meta.domain);
32
+ if (area === undefined) {
33
+ findings.push(finding({
34
+ code: "AMP007",
35
+ artifact: slice.id,
36
+ path: slice.path,
37
+ field: "/intentset/slice/domain",
38
+ message: `${slice.id} names the domain "${slice.meta.domain}", which is not a declared area; the areas are ${names}.`,
39
+ remediation: "Set domain to the area whose backend serves the slice, or declare the area in .intentset/architecture.yaml (profile §9, AMP007).",
40
+ }));
41
+ continue;
42
+ }
43
+ slice.meta.claims.forEach((claim, i) => {
44
+ const foreign = slice.claimFiles[i].filter((file) => {
45
+ const other = areaOf(areas, file);
46
+ return other !== null && other.name !== area.name;
47
+ });
48
+ if (foreign.length === 0)
49
+ return;
50
+ const others = [...new Set(foreign.map((file) => areaOf(areas, file)?.name))].sort(compareStrings);
51
+ findings.push(finding({
52
+ code: "AMP007",
53
+ artifact: slice.id,
54
+ path: slice.path,
55
+ field: `/intentset/slice/claims/${i}/path`,
56
+ message: `The ${claim.kind} claim ${claim.path} of ${slice.id}, a slice of area ${area.name}, reaches into area ${others.join(" and ")}: ${listSome(foreign)}.`,
57
+ remediation: "Narrow the claim to the slice's own area, or move the slice to the area that holds those files (profile §9, AMP007).",
58
+ paths: foreign,
59
+ }));
60
+ });
61
+ }
62
+ // AMP008: area backends deploy apart, so neither imports the other; shared backend code imports no area.
63
+ for (const edge of edges) {
64
+ if (edge.to === null || !model.inScope(edge.from))
65
+ continue;
66
+ const to = backendAreaOf(areas, edge.to);
67
+ if (to === null)
68
+ continue;
69
+ const from = backendAreaOf(areas, edge.from);
70
+ const location = { line: edge.line };
71
+ if (from !== null && from.name !== to.name) {
72
+ findings.push(finding({
73
+ code: "AMP008",
74
+ artifact: null,
75
+ path: edge.from,
76
+ location,
77
+ message: `${edge.from}, in the ${from.name} backend, imports ${edge.to} from the ${to.name} backend, and area backends deploy separately.`,
78
+ remediation: "Move what both need into the shared backend package, and reach the other area's data through its published resource names (profile §9, AMP008, AMP012).",
79
+ edges: [{ from: edge.from, to: edge.to }],
80
+ }));
81
+ }
82
+ else if (from === null && matchAny(sharedBackend, edge.from)) {
83
+ findings.push(finding({
84
+ code: "AMP008",
85
+ artifact: null,
86
+ path: edge.from,
87
+ location,
88
+ message: `${edge.from}, in the shared backend package, imports ${edge.to} from the ${to.name} backend, and the shared package must stay domain-neutral.`,
89
+ remediation: "Pass what the shared code needs in as a parameter, or move the code into the area that owns it (profile §9, AMP008).",
90
+ edges: [{ from: edge.from, to: edge.to }],
91
+ }));
92
+ }
93
+ }
94
+ // AMP009 and AMP010: one owner per name across the areas' schemas, and no reference across them.
95
+ const declared = new Map();
96
+ const read = new Map();
97
+ for (const area of areas) {
98
+ const text = model.files.get(area.schema);
99
+ if (text === undefined) {
100
+ findings.push(finding({
101
+ code: "AMP009",
102
+ artifact: null,
103
+ path: area.schema,
104
+ message: `The schema of area ${area.name}, ${area.schema}, is not a file in the repository, so its declarations were not checked.`,
105
+ remediation: "Correct the area's schema path in .intentset/architecture.yaml (profile §9).",
106
+ }));
107
+ continue;
108
+ }
109
+ const extraction = extractSchema(area.schema, text);
110
+ read.set(area.name, extraction);
111
+ if (!extraction.found) {
112
+ unresolved.push(`${area.schema}: no <builder>.schema({ ... }) call, so area ${area.name}'s declarations were not read`);
113
+ }
114
+ for (const problem of extraction.problems)
115
+ unresolved.push(`${area.schema}:${problem.line}: ${problem.message}`);
116
+ for (const declaration of extraction.declarations) {
117
+ const list = declared.get(declaration.name) ?? [];
118
+ list.push({ area: area.name, kind: declaration.kind, schema: area.schema, line: declaration.line });
119
+ declared.set(declaration.name, list);
120
+ }
121
+ }
122
+ for (const name of [...declared.keys()].sort(compareStrings)) {
123
+ const owners = declared.get(name) ?? [];
124
+ const inAreas = [...new Set(owners.map((owner) => owner.area))].sort(compareStrings);
125
+ if (inAreas.length < 2)
126
+ continue;
127
+ const later = owners.find((owner) => owner.area === inAreas[1]) ?? owners[1];
128
+ const operation = owners.some((owner) => OPERATION_KINDS.has(owner.kind));
129
+ findings.push(finding({
130
+ code: "AMP009",
131
+ ...(operation ? {} : { severity: "warning" }),
132
+ artifact: null,
133
+ path: later.schema,
134
+ location: { line: later.line },
135
+ message: operation
136
+ ? `${name} is declared in the schemas of areas ${inAreas.join(" and ")}; the Merged API joins every area into one namespace and refuses a field two sources resolve.`
137
+ : `The custom type ${name} is declared in the schemas of areas ${inAreas.join(" and ")}, which share one type namespace in the Merged API.`,
138
+ remediation: operation
139
+ ? `Keep ${name} in the one area whose functions read and write it, and link to it from the others by ID (profile §9, AMP009).`
140
+ : `Prefix the type with its area's name, or name it after the operation that returns it (profile §9, AMP009).`,
141
+ paths: [...new Set(owners.map((owner) => owner.schema))].sort(compareStrings),
142
+ }));
143
+ }
144
+ for (const area of areas) {
145
+ const extraction = read.get(area.name);
146
+ if (extraction === undefined)
147
+ continue;
148
+ const own = new Set(extraction.declarations.map((declaration) => declaration.name));
149
+ for (const reference of extraction.references) {
150
+ if (own.has(reference.target))
151
+ continue;
152
+ const elsewhere = (declared.get(reference.target) ?? []).map((owner) => owner.area);
153
+ if (elsewhere.length === 0)
154
+ continue;
155
+ findings.push(finding({
156
+ code: "AMP010",
157
+ artifact: null,
158
+ path: area.schema,
159
+ location: { line: reference.line },
160
+ message: `${area.schema} ${reference.via}("${reference.target}") names a type that area ${elsewhere.sort(compareStrings)[0]} declares; relationships and references do not cross areas.`,
161
+ remediation: "Store the other area's ID as a plain field and resolve it in a function of this area (profile §9, AMP010).",
162
+ }));
163
+ }
164
+ }
165
+ // AMP011: one client, on the Merged API, made in one place.
166
+ for (const [path, text] of model.files) {
167
+ if (path === schemaBridge || !isCode(path) || model.isTest(path) || !model.inScope(path))
168
+ continue;
169
+ if (model.underBackend(path) || matchAny(sharedBackend, path))
170
+ continue;
171
+ if (!text.includes("generateClient"))
172
+ continue;
173
+ const lines = findCalls(path, text, "generateClient");
174
+ if (lines.length === 0)
175
+ continue;
176
+ findings.push(finding({
177
+ code: "AMP011",
178
+ artifact: null,
179
+ path,
180
+ location: { line: lines[0] },
181
+ message: schemaBridge === null
182
+ ? `${path} calls generateClient, and this repository declares no schema bridge to make the one client on the Merged API.`
183
+ : `${path} calls generateClient; only the schema bridge ${schemaBridge} makes the client, once, on the Merged API.`,
184
+ remediation: "Declare schemaBridge in .intentset/architecture.yaml and import the client from it everywhere else (profile §9, AMP011).",
185
+ }));
186
+ }
187
+ return { findings, unresolved };
188
+ }
189
+ //# sourceMappingURL=areas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areas.js","sourceRoot":"","sources":["../src/areas.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,3 @@
1
- /**
2
- * The rules one import edge can break (VSA003, VSA006, region boundaries;
3
- * profile TS001–TS003, TS006, AMP001, AMP002, AMP006). Each edge gets at
4
- * most one boundary finding, the most specific that applies, in this order:
5
- *
6
- * 1. AMP001 frontend code importing anything under a backend root, unless
7
- * a client-seam file imports a named response-parser module.
8
- * 2. REG001 region boundary: shared importing infrastructure, composition
9
- * or a slice; infrastructure importing composition or a slice;
10
- * a slice importing composition (VSA §5). VSA007 is a review
11
- * assertion about business ownership, so a structural region
12
- * violation has its own code.
13
- * 3. TS003 a screen of another slice imported by anything but a named
14
- * router file; or one of a slice's entrypoints importing its own
15
- * screen.
16
- * 4. VSA003 another slice's file that is none of its entrypoints, by
17
- * relative path, alias or re-export; with TS006 beside it when a
18
- * wildcard alias opened the path. Every entrypoint is a public
19
- * surface, and the message names the one in the importer's own
20
- * package first, since that is the surface it should use.
21
- * 5. AMP006 a policy or model file importing its slice's client seam or
22
- * infrastructure, or a backend SDK.
23
- * 6. VSA006 an edge inside one slice that the layer matrix does not allow.
24
- *
25
- * Beside those: TS002 (warning) when one slice reaches another's entrypoint
26
- * by relative path although an alias for it is configured; AMP002 when a
27
- * slice file outside its client seam imports a backend SDK; TS001 (warning)
28
- * when an entrypoint re-exports with `export *`.
29
- *
30
- * Test files get the separate pass profile §3 asks for: they may import
31
- * their own slice's internals, and VSA003 and TS003 still apply to anyone
32
- * else's.
33
- *
34
- * Edges from files inside the declared scope are checked, including those to
35
- * a file outside it that a slice claims. Edges from files outside the scope
36
- * are checked for one thing only: reaching past a slice's public surfaces to
37
- * a file inside the scope, which is VSA003 (TS003 for a screen) as a warning,
38
- * so a narrow scope cannot hide its consumers and they do not fail it
39
- * (VSA §9). They count toward no edge total and no slice dependency.
40
- */
41
1
  import { type Finding } from "./finding.ts";
42
2
  import type { ImportEdge } from "./imports.ts";
43
3
  import { type Model } from "./regions.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../src/boundaries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAmB,KAAK,KAAK,EAA+B,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,6FAA6F;IAC7F,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;CACzB;AAyDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAqV9G;AAED,wHAAwH;AACxH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAmCzD"}
1
+ {"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../src/boundaries.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAmB,KAAK,KAAK,EAA+B,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,6FAA6F;IAC7F,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;CACzB;AAyDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAuW9G;AAED,wHAAwH;AACxH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAmCzD"}
@@ -38,6 +38,7 @@
38
38
  * so a narrow scope cannot hide its consumers and they do not fail it
39
39
  * (VSA §9). They count toward no edge total and no slice dependency.
40
40
  */
41
+ import { isAreaSchema } from "./areas.js";
41
42
  import { finding, listSome } from "./finding.js";
42
43
  import { inSeam, isPure, knownLayer, layerAllows, layerOf } from "./layers.js";
43
44
  import { matchAny, matchPattern } from "./patterns.js";
@@ -248,9 +249,24 @@ export function checkBoundaries(model, edges, resolver) {
248
249
  if (!model.inScope(to) && target === undefined)
249
250
  continue;
250
251
  const subject = { edges: [{ from, to }, ...(source && target ? [{ from: source.id, to: target.id }] : [])] };
251
- // 1. AMP001
252
- if (model.underBackend(to) && !model.underBackend(from)) {
252
+ // 1. AMP001, and AMP011 for an area repository's schema bridge (profile §9). The shared backend
253
+ // package is backend code: what it may import is AMP008's question.
254
+ if (model.underBackend(to) && !model.underBackend(from) && !matchAny(config.sharedBackend, from)) {
253
255
  const seam = source !== undefined && inSeam(source, from);
256
+ if (edge.typeOnly && isAreaSchema(config.areas, to)) {
257
+ if (from !== config.schemaBridge) {
258
+ findings.push(finding({
259
+ code: "AMP011",
260
+ artifact,
261
+ path: from,
262
+ location,
263
+ message: `${from} ${how(edge)}, the schema of an area, and only the schema bridge${config.schemaBridge === null ? ", which this repository has not declared," : ` ${config.schemaBridge}`} may.`,
264
+ remediation: "Import the client and its types from the schema bridge, which joins every area's schema into one type (profile §9, AMP011).",
265
+ ...subject,
266
+ }));
267
+ }
268
+ continue;
269
+ }
254
270
  if (!(seam && matchAny(config.responseParserModules, to))) {
255
271
  findings.push(finding({
256
272
  code: "AMP001",
@@ -1 +1 @@
1
- {"version":3,"file":"boundaries.js","sourceRoot":"","sources":["../src/boundaries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundaries.js","sourceRoot":"","sources":["../src/boundaries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAgB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAA2C,MAAM,cAAc,CAAC;AAoBxF,SAAS,GAAG,CAAC,IAAgB;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;QACxB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACb,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SAAS,CAAC;IAClB,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC;AACvC,CAAC;AAED,SAAS,OAAO,CAAC,IAAgB;IAC/B,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU;QAC5B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,WAAW;YACxB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC;AAClF,CAAC;AAED,qHAAqH;AACrH,SAAS,WAAW,CAAC,KAAY,EAAE,MAAiB,EAAE,IAAY;IAChE,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACtF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,2FAA2F;AAC3F,SAAS,gBAAgB,CAAC,KAAY,EAAE,MAAiB,EAAE,IAAY;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,yBAAyB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2BAA2B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAClG,OAAO,yBAAyB,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;AACvH,CAAC;AAED,6FAA6F;AAC7F,SAAS,aAAa,CAAC,KAAY,EAAE,MAAiB,EAAE,IAAY;IAClE,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACxC,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,EAAE,gBAAgB,CAAC;AACpG,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,KAAK,UAAU;YACb,OAAO,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC;QACpC;YACE,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,KAA4B,EAAE,QAAkB;IAC5F,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAChD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,OAAO,GAAG,CAAC,MAAc,EAAyB,EAAE,CACxD,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAE1E,2GAA2G;IAC3G,mFAAmF;IACnF,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAkB,EAAE;QACtD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC1B,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC;QAClE,IAAI,KAAK,KAAK,MAAM,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,2CAA2C;YAC9G,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC9G,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,GAAG,GAAG,gFAAgF,CAAC;QAC7F,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7D,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBAC7B,OAAO,EAAE,GAAG,GAAG,wCAAwC,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,EAAE,yDAAyD;gBACnJ,WAAW,EAAE,0BAA0B,MAAM,CAAC,EAAE,8CAA8C,MAAM,CAAC,EAAE,2CAA2C,GAAG,EAAE;gBACvJ,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO,EAAE,GAAG,GAAG,wCAAwC,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,EAAE,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG;YAC9K,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,gDAAgD,GAAG,EAAE;YACvG,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,IAAI,KAAK,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAErC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;gBAAE,SAAS;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK;gBAAE,SAAS;YAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;oBACN,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,IAAI;oBACV,QAAQ;oBACR,OAAO,EAAE,aAAa,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,EAAE,uDAAuD;oBACxH,WAAW,EAAE,QAAQ,MAAM,CAAC,EAAE,mBAAmB,MAAM,CAAC,EAAE,8DAA8D;oBACxH,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;iBAC/B,CAAC,CACH,CAAC;YACJ,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtD,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;oBACN,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,IAAI;oBACV,QAAQ;oBACR,OAAO,EAAE,aAAa,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,EAAE,KAAK,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG;oBACpH,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,0EAA0E;oBAC5H,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;iBAC/B,CAAC,CACH,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;QAEpC,IAAI,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;gBACN,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,SAAS;gBACnB,QAAQ;gBACR,IAAI,EAAE,IAAI;gBACV,QAAQ;gBACR,OAAO,EAAE,qBAAqB,MAAM,CAAC,EAAE,gCAAgC,IAAI,CAAC,SAAS,mEAAmE;gBACxJ,WAAW,EAAE,uDAAuD;gBACpE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;aACjD,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACrB,IACE,MAAM,KAAK,SAAS;gBACpB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;gBACzB,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAClE,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;wBACN,IAAI,EAAE,QAAQ;wBACd,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,QAAQ;wBACR,OAAO,EAAE,GAAG,IAAI,iCAAiC,MAAM,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,kBAAkB;wBAC7F,WAAW,EACT,yGAAyG;wBAC3G,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;qBACtC,CAAC,CACH,CAAC;gBACJ,CAAC;qBAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;oBACjC,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;wBACN,IAAI,EAAE,QAAQ;wBACd,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,QAAQ;wBACR,OAAO,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,+CAA+C,MAAM,CAAC,EAAE,GAAG;wBACxF,WAAW,EAAE,8BAA8B,MAAM,CAAC,EAAE,0DAA0D;wBAC9G,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;qBACtC,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,SAAS,EAAE,CAAC;QACZ,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;YAC5E,eAAe,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACzD,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAE7G,gGAAgG;QAChG,oEAAoE;QACpE,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;gBACpD,IAAI,IAAI,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;oBACjC,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;wBACN,IAAI,EAAE,QAAQ;wBACd,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,QAAQ;wBACR,OAAO,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,sDAAsD,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO;wBAChM,WAAW,EACT,6HAA6H;wBAC/H,GAAG,OAAO;qBACX,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;oBACN,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,IAAI,EAAE,IAAI;oBACV,QAAQ;oBACR,OAAO,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,0DAA0D;oBACnK,WAAW,EAAE,IAAI;wBACf,CAAC,CAAC,uIAAuI;wBACzI,CAAC,CAAC,qJAAqJ;oBACzJ,GAAG,OAAO;iBACX,CAAC,CACH,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,wBAAwB;QACxB,MAAM,eAAe,GACnB,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpG,CAAC,UAAU,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1F,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACnE,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;gBACN,IAAI,EAAE,QAAQ;gBACd,QAAQ;gBACR,IAAI,EAAE,IAAI;gBACV,QAAQ;gBACR,OAAO,EAAE,oBAAoB,cAAc,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,cAAc,CAAC,QAAQ,CAAC,GAAG;gBAC1H,WAAW,EACT,UAAU,CAAC,IAAI,KAAK,QAAQ;oBAC1B,CAAC,CAAC,2HAA2H;oBAC7H,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,gBAAgB;wBACpC,CAAC,CAAC,2HAA2H;wBAC7H,CAAC,CAAC,mHAAmH;gBAC3H,GAAG,OAAO;aACX,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,8GAA8G;QAC9G,oHAAoH;QACpH,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAAE,SAAS;QAEzF,sDAAsD;QACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;oBACxC,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;wBACN,IAAI,EAAE,OAAO;wBACb,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,QAAQ;wBACR,OAAO,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,EAAE,6DAA6D;wBACpH,WAAW,EACT,MAAM,KAAK,SAAS;4BAClB,CAAC,CAAC,0BAA0B,MAAM,CAAC,EAAE,8CAA8C,MAAM,CAAC,EAAE,yCAAyC;4BACrI,CAAC,CAAC,mHAAmH;wBACzH,GAAG,OAAO;qBACX,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;oBACN,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,IAAI,EAAE,IAAI;oBACV,QAAQ;oBACR,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,EAAE,oBAAoB,OAAO,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG;oBACtL,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,uFAAuF;oBACzI,GAAG,OAAO;iBACX,CAAC,CACH,CAAC;gBACF,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,CAAC,EAAE,CAAC;oBAC7E,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;wBACN,IAAI,EAAE,OAAO;wBACb,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,QAAQ;wBACR,OAAO,EAAE,oBAAoB,IAAI,CAAC,SAAS,WAAW,EAAE,uBAAuB,MAAM,CAAC,EAAE,8BAA8B;wBACtH,WAAW,EAAE,qBAAqB,MAAM,CAAC,EAAE,wEAAwE;wBACnH,GAAG,OAAO;qBACX,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,CAAC;gBAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;wBACN,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,SAAS;wBACnB,QAAQ;wBACR,IAAI,EAAE,IAAI;wBACV,QAAQ;wBACR,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,8BAA8B,MAAM,CAAC,EAAE,aAAa,IAAI,CAAC,SAAS,uCAAuC,KAAK,IAAI;wBACvI,WAAW,EAAE,WAAW,KAAK,YAAY;wBACzC,GAAG,OAAO;qBACX,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QAEnC,yDAAyD;QACzD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACnF,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;gBACN,IAAI,EAAE,OAAO;gBACb,QAAQ;gBACR,IAAI,EAAE,IAAI;gBACV,QAAQ;gBACR,OAAO,EAAE,qBAAqB,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,iFAAiF;gBACrI,WAAW,EAAE,mFAAmF;gBAChG,GAAG,OAAO;aACX,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QACD,YAAY;QACZ,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,CAAC;YACjH,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;gBACN,IAAI,EAAE,QAAQ;gBACd,QAAQ;gBACR,IAAI,EAAE,IAAI;gBACV,QAAQ;gBACR,OAAO,EAAE,GAAG,IAAI,iCAAiC,MAAM,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,GAAG;gBACrK,WAAW,EACT,4GAA4G;gBAC9G,GAAG,OAAO;aACX,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QACD,YAAY;QACZ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;gBACtG,SAAS;YACX,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CACtE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC5C,CAAC;gBACF,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;oBACN,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,IAAI,EAAE,IAAI;oBACV,QAAQ;oBACR,OAAO,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,aAAa,MAAM,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,SAAS;oBACjH,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,0DAA0D;oBAC5H,GAAG,OAAO;iBACX,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AAC9D,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,IACE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACrC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;gBACxB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAEpB,SAAS;YACX,sFAAsF;YACtF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;gBAAE,SAAS;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;gBAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACxC,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;YACN,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,KAAK,CAAC,EAAE;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,QAAQ,OAAO,KAAK,CAAC,EAAE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,4CAA4C,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,oCAAoC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,YAAY,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG;YACrX,WAAW,EACT,wHAAwH;YAC1H,KAAK,EAAE,YAAY;SACpB,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/check.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * migration mode. What could not be checked is listed in `unresolved` and,
12
12
  * for imports, reported as a TS004 warning: never a pass (invariant 6).
13
13
  */
14
- import { type Diagnostic, type Graph, type Level, type Registries } from "@intentset/core";
14
+ import { type Diagnostic, type Graph, type Level, type OwnershipEntry, type OwnershipReportSection, type Registries } from "@intentset/core";
15
15
  import { type BaselineEntry, type Mode } from "./baseline.ts";
16
16
  import { type ArchitectureConfig } from "./config.ts";
17
17
  import { type ExceptionRecord } from "./exceptions.ts";
@@ -64,10 +64,27 @@ export interface ArchitectureResult {
64
64
  summary: ArchitectureSummary;
65
65
  /** The resolved import graph, for reports and impact views. */
66
66
  edges: ImportEdge[];
67
+ /**
68
+ * Where every file falls, sorted by path: each production file's region and
69
+ * owner, every test file with the slice its claims match, and nothing for a
70
+ * file in the external region (root configuration, scripts, documents that
71
+ * nothing claims). Out-of-scope files are attributed too: scope decides what
72
+ * is reported, not who owns what.
73
+ */
74
+ ownership: OwnershipEntry[];
67
75
  }
68
76
  /** VSA §2: the rules that are review assertions, snapshot diffs or contract diffs rather than structure. */
69
77
  export declare const REVIEW_REQUIRED: string[];
70
78
  export declare function checkArchitecture(graph: Graph, registries: Registries, tree: {
71
79
  files: ReadonlyMap<string, string>;
72
80
  }, options?: CheckOptions): ArchitectureResult;
81
+ /**
82
+ * `reports.ownership` for the export (spec/export.md §4.4): the check's file
83
+ * attribution, stamped with the snapshot it was read at, so a consumer can
84
+ * turn a file from a stack frame into a slice, its behaviors and its owner.
85
+ */
86
+ export declare function ownershipReport(result: ArchitectureResult, snapshot: {
87
+ commit: string | null;
88
+ graphHash: string;
89
+ }): OwnershipReportSection;
73
90
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAA4B,KAAK,kBAAkB,EAAyC,MAAM,aAAa,CAAC;AAEvH,OAAO,EAAmB,KAAK,eAAe,EAAuC,MAAM,iBAAiB,CAAC;AAE7G,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAOjE,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,8FAA8F;IAC9F,UAAU,CAAC,EAAE,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IACpE,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,gFAAgF;IAChF,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,cAAc,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gFAAgF;IAChF,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,+DAA+D;IAC/D,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,4GAA4G;AAC5G,eAAO,MAAM,eAAe,UAO3B,CAAC;AAMF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC5C,OAAO,GAAE,YAAiB,GACzB,kBAAkB,CAiGpB"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAA4B,KAAK,kBAAkB,EAAyC,MAAM,aAAa,CAAC;AAEvH,OAAO,EAAmB,KAAK,eAAe,EAAuC,MAAM,iBAAiB,CAAC;AAE7G,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAOjE,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,8FAA8F;IAC9F,UAAU,CAAC,EAAE,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IACpE,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,gFAAgF;IAChF,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,cAAc,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gFAAgF;IAChF,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,+DAA+D;IAC/D,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,4GAA4G;AAC5G,eAAO,MAAM,eAAe,UAO3B,CAAC;AAMF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC5C,OAAO,GAAE,YAAiB,GACzB,kBAAkB,CA+GpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrD,sBAAsB,CAOxB"}
package/dist/check.js CHANGED
@@ -11,7 +11,8 @@
11
11
  * migration mode. What could not be checked is listed in `unresolved` and,
12
12
  * for imports, reported as a TS004 warning: never a pass (invariant 6).
13
13
  */
14
- import { sortDiagnostics } from "@intentset/core";
14
+ import { sortDiagnostics, } from "@intentset/core";
15
+ import { AREA_REVIEW_REQUIRED, checkAreas } from "./areas.js";
15
16
  import { applyBaseline } from "./baseline.js";
16
17
  import { checkBoundaries, checkUnclassified } from "./boundaries.js";
17
18
  import { checkClaims } from "./claims.js";
@@ -83,6 +84,9 @@ export function checkArchitecture(graph, registries, tree, options = {}) {
83
84
  const boundaries = checkBoundaries(model, imports.edges, resolver);
84
85
  findings.push(...boundaries.findings);
85
86
  findings.push(...checkUnclassified(model));
87
+ const areaCheck = checkAreas(model, imports.edges);
88
+ findings.push(...areaCheck.findings);
89
+ unresolved.push(...areaCheck.unresolved);
86
90
  const dependencies = checkDependencies(model, graph, boundaries.sliceEdges);
87
91
  findings.push(...dependencies.findings);
88
92
  // Exceptions: the tree's records and any handed in.
@@ -123,8 +127,33 @@ export function checkArchitecture(graph, registries, tree, options = {}) {
123
127
  baselined: baseline.baselined,
124
128
  baselineStale: baseline.stale.length,
125
129
  unresolved: [...new Set(unresolved)].sort(compareStrings),
126
- reviewRequired: [...REVIEW_REQUIRED],
130
+ reviewRequired: [...REVIEW_REQUIRED, ...(config.areas.length > 0 ? AREA_REVIEW_REQUIRED : [])],
131
+ };
132
+ const ownership = [];
133
+ for (const path of model.files.keys()) {
134
+ if (model.isTest(path)) {
135
+ ownership.push({ path, region: "test", owner: model.testOwner(path) });
136
+ continue;
137
+ }
138
+ const region = model.regionOf(path);
139
+ if (region.kind === "external")
140
+ continue;
141
+ ownership.push({ path, region: region.kind, owner: region.owner ?? null });
142
+ }
143
+ ownership.sort((a, b) => compareStrings(a.path, b.path));
144
+ return { diagnostics, summary, edges: imports.edges, ownership };
145
+ }
146
+ /**
147
+ * `reports.ownership` for the export (spec/export.md §4.4): the check's file
148
+ * attribution, stamped with the snapshot it was read at, so a consumer can
149
+ * turn a file from a stack frame into a slice, its behaviors and its owner.
150
+ */
151
+ export function ownershipReport(result, snapshot) {
152
+ return {
153
+ commit: snapshot.commit,
154
+ graphHash: snapshot.graphHash,
155
+ files: result.ownership.map((entry) => ({ ...entry })),
156
+ withheld: 0,
127
157
  };
128
- return { diagnostics, summary, edges: imports.edges };
129
158
  }
130
159
  //# sourceMappingURL=check.js.map
package/dist/check.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAOL,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAiC,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAA2B,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAwB,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAgB,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA8DxC,4GAA4G;AAC5G,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,kHAAkH;IAClH,gGAAgG;IAChG,mGAAmG;IACnG,0GAA0G;IAC1G,qGAAqG;IACrG,6FAA6F;CAC9F,CAAC;AAEF,SAAS,KAAK;IACZ,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,UAAsB,EACtB,IAA4C,EAC5C,OAAO,GAAiB,EAAE;IAE1B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC;IACnE,MAAM,iBAAiB,GAAiB,EAAE,CAAC;IAC3C,IAAI,UAAmD,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC5D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,sBAAsB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;QAC1E,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACpC,UAAU,CAAC,IAAI,CACb,GAAG,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,+CAA+C,CACtH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3E,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACvG,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oDAAoD;YAC5H,WAAW,EACT,4HAA4H;SAC/H,CAAC,CACH,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtH,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5E,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAExC,oDAAoD;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,GAA8B,CAAC;QAC7D,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrF,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IAE9E,IAAI,WAAW,GAAiB;QAC9B,GAAG,iBAAiB;QACpB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QACnD,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAChD,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;KAC1D,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1E,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACvC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC;IAClD,CAAC,CAAC;IACF,MAAM,OAAO,GAAwB;QACnC,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC3B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;QACtG,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAC7G,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QACjG,KAAK,EAAE,UAAU,CAAC,SAAS;QAC3B,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QACpC,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACzD,cAAc,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC/F,CAAC;IACF,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACzC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA0B,EAC1B,QAAsD;IAEtD,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACtD,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC"}
package/dist/claims.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Path and resource ownership (VSA §3, §7; VSA009; profile AMP004).
3
3
  *
4
- * - A nonempty claim that matches no file is VSA009.
4
+ * - A nonempty claim that matches no file is VSA009: a warning while the
5
+ * slice is draft (planned, not yet owned), an error once it is not.
5
6
  * - Two slices resolving one file is VSA009, once per pair of claims, naming
6
7
  * both slices, both claims and the files.
7
8
  * - A file claimed by a slice and recorded as a registry resource has two
@@ -1 +1 @@
1
- {"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,cAAc,CAAC;AAGvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,CA2MzF"}
1
+ {"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,cAAc,CAAC;AAGvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,CA+MzF"}
package/dist/claims.js CHANGED
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Path and resource ownership (VSA §3, §7; VSA009; profile AMP004).
3
3
  *
4
- * - A nonempty claim that matches no file is VSA009.
4
+ * - A nonempty claim that matches no file is VSA009: a warning while the
5
+ * slice is draft (planned, not yet owned), an error once it is not.
5
6
  * - Two slices resolving one file is VSA009, once per pair of claims, naming
6
7
  * both slices, both claims and the files.
7
8
  * - A file claimed by a slice and recorded as a registry resource has two
@@ -41,12 +42,16 @@ export function checkClaims(model, graph, registriesPath) {
41
42
  return;
42
43
  }
43
44
  if (slice.claimFiles[i].length === 0) {
45
+ const planned = slice.artifact.meta.status === "draft";
44
46
  findings.push(finding({
45
47
  code: "VSA009",
48
+ ...(planned ? { severity: "warning" } : {}),
46
49
  artifact: slice.id,
47
50
  path: slice.path,
48
51
  field,
49
- message: `The ${claim.kind} claim ${claim.path} of ${slice.id} matches no file in the repository.`,
52
+ message: planned
53
+ ? `The ${claim.kind} claim ${claim.path} of draft slice ${slice.id} matches no file yet; it is planned, and an error once the slice leaves draft.`
54
+ : `The ${claim.kind} claim ${claim.path} of ${slice.id} matches no file in the repository.`,
50
55
  remediation: "Correct the path, add the files it promises, or remove the claim; an empty claim is not ownership (VSA §3).",
51
56
  }));
52
57
  }