@metaobjectsdev/cli 0.24.1 → 0.24.3

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.
@@ -3,8 +3,12 @@ export type Severity = "error" | "warn";
3
3
  export interface Diagnostic {
4
4
  severity: Severity;
5
5
  code: string;
6
- /** The requirement node's name, when the diagnostic belongs to one. */
7
- name?: string;
6
+ /** The subject's ADDRESS, when the diagnostic has one — the dotted child-name
7
+ * path. Two branches of a ledger may reuse a NAME, so a bare name does not
8
+ * locate the node, and a diagnostic you cannot locate is one you cannot act on.
9
+ * Absent on a diagnostic whose subject is not a requirement (object coverage
10
+ * names the entity in its message instead). */
11
+ path?: string;
8
12
  message: string;
9
13
  }
10
14
  export declare const ERR_REQUIREMENT_LINK_ABOVE_FLOOR = "ERR_REQUIREMENT_LINK_ABOVE_FLOOR";
@@ -66,10 +70,60 @@ export declare function splitMemberRef(ref: string): {
66
70
  owner: string;
67
71
  path: string[];
68
72
  };
69
- /** Every `requirement.*` node in the tree, at any nesting depth. Hierarchy IS
70
- * nesting an L1 solution contains its L2 segments so this is a walk, not a
71
- * scan of a flat list keyed by a `parent` string. */
73
+ /** A requirement paired with its ADDRESS the dotted child-name path from the
74
+ * root, which is how every other node in the model is addressed, and which the
75
+ * requirement-test generator also turns into the stub's filename. */
76
+ export interface AddressedRequirement {
77
+ readonly node: MetaRequirement;
78
+ readonly path: string;
79
+ }
80
+ /**
81
+ * Every `requirement.*` node in the tree, at any nesting depth, each with its
82
+ * dotted path. Hierarchy IS nesting — an L1 solution contains its L2 segments —
83
+ * so this is a walk, not a scan of a flat list keyed by a `parent` string.
84
+ *
85
+ * ONE derivation of the address for the gate AND the authoring lint, deliberately.
86
+ * They are two sections of a single `meta verify` run, and when they walked
87
+ * separately they addressed the same node two different ways — the gate by bare
88
+ * `name`, which is ambiguous the moment two branches of a ledger reuse one, and the
89
+ * lint by path. A reader cannot reconcile two addressings of one tree.
90
+ *
91
+ * The traversal descends through EVERY node rather than only through requirements:
92
+ * a requirement somewhere the child rules did not anticipate is still gated, which
93
+ * is the fail-closed direction for a gate.
94
+ */
95
+ export declare function collectAddressedRequirements(root: MetaData): AddressedRequirement[];
96
+ /**
97
+ * Resolve a `@supersededBy` reference to a requirement in the same ledger (FR-039).
98
+ *
99
+ * A requirement is addressed the way every other node is: a package qualifies the
100
+ * ROOT-level node only, and each dotted segment after it walks CHILD names — so
101
+ * `acme::caps::Billing.InvoiceRecord` names the `InvoiceRecord` child of the
102
+ * root-level `Billing`. A bare reference binds package-locally first and then at
103
+ * root level, which is the ADR-0042 contract every other reference already follows.
104
+ *
105
+ * Deliberately resolves against the LEDGER, not the model: a capability is replaced
106
+ * by another capability. Pointing this at an entity would be `@implementedBy` wearing
107
+ * a different name, and `@implementedBy` is exactly what a retired entry may not have.
108
+ */
109
+ export declare function resolveRequirementRef(addressed: readonly AddressedRequirement[], ref: string, referrerPkg: string): MetaRequirement | undefined;
110
+ /** The nodes alone, for callers with no use for the address. */
72
111
  export declare function collectRequirements(root: MetaData): MetaRequirement[];
112
+ /**
113
+ * What one `meta verify` run computes once and both requirement passes read.
114
+ *
115
+ * The gate and the summary each need the same two things, and each used to derive
116
+ * both for itself — so a run walked the model twice and resolved every
117
+ * `@implementedBy` claim twice, the second of which is the expensive half
118
+ * (resolution is O(claims x root objects)). Threading the result rather than the
119
+ * function is what the "SHARED by the gate and the summary" note on
120
+ * `claimedObjectKeys` was always asking for.
121
+ */
122
+ export interface RequirementScan {
123
+ readonly addressed: readonly AddressedRequirement[];
124
+ readonly claimedObjects: ReadonlySet<string>;
125
+ }
126
+ export declare function scanRequirements(root: MetaData): RequirementScan;
73
127
  /**
74
128
  * Check the requirement tree against the loaded model.
75
129
  *
@@ -78,7 +132,7 @@ export declare function collectRequirements(root: MetaData): MetaRequirement[];
78
132
  * prove: that a status is *true*, or that a node actually implements the
79
133
  * requirement claiming it. No test can. That truth is the adopter's job.
80
134
  */
81
- export declare function checkRequirements(root: MetaData): Diagnostic[];
135
+ export declare function checkRequirements(root: MetaData, scan?: RequirementScan): Diagnostic[];
82
136
  /**
83
137
  * Count what the ledger contains, for the line `meta verify` prints on EVERY
84
138
  * run — including a clean one.
@@ -89,5 +143,5 @@ export declare function checkRequirements(root: MetaData): Diagnostic[];
89
143
  * are deliberately the ones an author would otherwise have to write a script to
90
144
  * get: how many gaps are recorded, and how many of those nobody has ruled on.
91
145
  */
92
- export declare function summariseRequirements(root: MetaData): RequirementSummary | undefined;
146
+ export declare function summariseRequirements(root: MetaData, scan?: RequirementScan): RequirementSummary | undefined;
93
147
  //# sourceMappingURL=requirement-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-check.d.ts","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"AAsBA,OAAO,EAkBL,KAAK,QAAQ,EACb,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gCAAgC,qCAAqC,CAAC;AACnF,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,oCAAoC,yCAAyC,CAAC;AAC3F,eAAO,MAAM,iCAAiC,sCAAsC,CAAC;AACrF,eAAO,MAAM,2CAA2C,gDAAgD,CAAC;AACzG,eAAO,MAAM,mCAAmC,wCAAwC,CAAC;AACzF,eAAO,MAAM,mCAAmC,wCAAwC,CAAC;AAEzF;;;qCAGqC;AACrC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;sFAoBsF;AACtF,eAAO,MAAM,wBAAwB,EAAE,QAAiB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAM7E;AAkCD;;sDAEsD;AACtD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,EAAE,CAUrE;AA4DD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CA2M9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,GAAG,SAAS,CAqCpF"}
1
+ {"version":3,"file":"requirement-check.d.ts","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"AAsBA,OAAO,EAkBL,KAAK,QAAQ,EACb,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;;;oDAIgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gCAAgC,qCAAqC,CAAC;AACnF,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AACrE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,oCAAoC,yCAAyC,CAAC;AAC3F,eAAO,MAAM,iCAAiC,sCAAsC,CAAC;AACrF,eAAO,MAAM,2CAA2C,gDAAgD,CAAC;AACzG,eAAO,MAAM,mCAAmC,wCAAwC,CAAC;AACzF,eAAO,MAAM,mCAAmC,wCAAwC,CAAC;AAEzF;;;qCAGqC;AACrC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;sFAoBsF;AACtF,eAAO,MAAM,wBAAwB,EAAE,QAAiB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAM7E;AAkCD;;sEAEsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,QAAQ,GAAG,oBAAoB,EAAE,CAcnF;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,eAAe,GAAG,SAAS,CAiB7B;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,EAAE,CAErE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,CAGhE;AA4DD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,eAAwC,GAAG,UAAU,EAAE,CAmO9G;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,IAAI,GAAE,eAAwC,GAC7C,kBAAkB,GAAG,SAAS,CAsChC"}
@@ -108,21 +108,80 @@ function subtreeClaimsAnything(req) {
108
108
  }
109
109
  return false;
110
110
  }
111
- /** Every `requirement.*` node in the tree, at any nesting depth. Hierarchy IS
112
- * nesting an L1 solution contains its L2 segments so this is a walk, not a
113
- * scan of a flat list keyed by a `parent` string. */
114
- export function collectRequirements(root) {
111
+ /**
112
+ * Every `requirement.*` node in the tree, at any nesting depth, each with its
113
+ * dotted path. Hierarchy IS nesting an L1 solution contains its L2 segments —
114
+ * so this is a walk, not a scan of a flat list keyed by a `parent` string.
115
+ *
116
+ * ONE derivation of the address for the gate AND the authoring lint, deliberately.
117
+ * They are two sections of a single `meta verify` run, and when they walked
118
+ * separately they addressed the same node two different ways — the gate by bare
119
+ * `name`, which is ambiguous the moment two branches of a ledger reuse one, and the
120
+ * lint by path. A reader cannot reconcile two addressings of one tree.
121
+ *
122
+ * The traversal descends through EVERY node rather than only through requirements:
123
+ * a requirement somewhere the child rules did not anticipate is still gated, which
124
+ * is the fail-closed direction for a gate.
125
+ */
126
+ export function collectAddressedRequirements(root) {
115
127
  const out = [];
116
- const walk = (n) => {
128
+ const walk = (n, prefix) => {
117
129
  for (const c of n.children()) {
118
- if (c.type === TYPE_REQUIREMENT)
119
- out.push(c);
120
- walk(c);
130
+ // Only a requirement contributes a path segment. An intervening non-requirement
131
+ // node is traversed THROUGH, so the address stays the requirement hierarchy.
132
+ const isReq = c.type === TYPE_REQUIREMENT;
133
+ const path = isReq ? (prefix === "" ? c.name : `${prefix}.${c.name}`) : prefix;
134
+ if (isReq)
135
+ out.push({ node: c, path });
136
+ walk(c, path);
121
137
  }
122
138
  };
123
- walk(root);
139
+ walk(root, "");
124
140
  return out;
125
141
  }
142
+ /**
143
+ * Resolve a `@supersededBy` reference to a requirement in the same ledger (FR-039).
144
+ *
145
+ * A requirement is addressed the way every other node is: a package qualifies the
146
+ * ROOT-level node only, and each dotted segment after it walks CHILD names — so
147
+ * `acme::caps::Billing.InvoiceRecord` names the `InvoiceRecord` child of the
148
+ * root-level `Billing`. A bare reference binds package-locally first and then at
149
+ * root level, which is the ADR-0042 contract every other reference already follows.
150
+ *
151
+ * Deliberately resolves against the LEDGER, not the model: a capability is replaced
152
+ * by another capability. Pointing this at an entity would be `@implementedBy` wearing
153
+ * a different name, and `@implementedBy` is exactly what a retired entry may not have.
154
+ */
155
+ export function resolveRequirementRef(addressed, ref, referrerPkg) {
156
+ const keyed = new Map();
157
+ for (const { node, path } of addressed) {
158
+ const pkg = node.package ?? node.fileDefaultPackage ?? "";
159
+ if (pkg !== "")
160
+ keyed.set(`${pkg}::${path}`, node);
161
+ // Bare path is registered too, so a single-package ledger can reference
162
+ // without repeating its own package on every line.
163
+ if (!keyed.has(path))
164
+ keyed.set(path, node);
165
+ }
166
+ // An FQN binds exactly; a bare ref prefers the referrer's own package.
167
+ const exact = keyed.get(ref);
168
+ if (exact !== undefined)
169
+ return exact;
170
+ if (referrerPkg !== "") {
171
+ const local = keyed.get(`${referrerPkg}::${ref}`);
172
+ if (local !== undefined)
173
+ return local;
174
+ }
175
+ return undefined;
176
+ }
177
+ /** The nodes alone, for callers with no use for the address. */
178
+ export function collectRequirements(root) {
179
+ return collectAddressedRequirements(root).map((r) => r.node);
180
+ }
181
+ export function scanRequirements(root) {
182
+ const addressed = collectAddressedRequirements(root);
183
+ return { addressed, claimedObjects: claimedObjectKeys(root, addressed.map((r) => r.node)) };
184
+ }
126
185
  /**
127
186
  * Resolution keys of every object claimed by a requirement.
128
187
  *
@@ -189,13 +248,12 @@ function coverableEntities(root) {
189
248
  * prove: that a status is *true*, or that a node actually implements the
190
249
  * requirement claiming it. No test can. That truth is the adopter's job.
191
250
  */
192
- export function checkRequirements(root) {
251
+ export function checkRequirements(root, scan = scanRequirements(root)) {
193
252
  const out = [];
194
- const reqs = collectRequirements(root);
195
- if (reqs.length === 0)
253
+ const { addressed, claimedObjects } = scan;
254
+ if (addressed.length === 0)
196
255
  return out; // opt-in by declaration — no requirements, nothing to say
197
- const claimedObjects = claimedObjectKeys(root, reqs);
198
- for (const req of reqs) {
256
+ for (const { node: req, path: reqPath } of addressed) {
199
257
  const architectural = req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL;
200
258
  const level = req.level();
201
259
  const refs = req.implementedBy();
@@ -213,7 +271,7 @@ export function checkRequirements(root) {
213
271
  if (!levelled || !Number.isInteger(level)
214
272
  || level < REQUIREMENT_MIN_LEVEL || level > REQUIREMENT_MAX_LEVEL) {
215
273
  out.push({
216
- severity: "error", code: ERR_REQUIREMENT_BAD_LEVEL, name: req.name,
274
+ severity: "error", code: ERR_REQUIREMENT_BAD_LEVEL, path: reqPath,
217
275
  message: `level must be an integer ${REQUIREMENT_MIN_LEVEL}-${REQUIREMENT_MAX_LEVEL} (got ${String(level)}). ` +
218
276
  `L1 solution, L2 segment (app/library), L3 service, L4 object, L5 member.` +
219
277
  (architectural ? ` On an architectural requirement the level is optional — omit it for a flat policy.` : ``),
@@ -225,7 +283,7 @@ export function checkRequirements(root) {
225
283
  const pl = parent.level();
226
284
  if (pl !== undefined && level !== undefined && level <= pl) {
227
285
  out.push({
228
- severity: "error", code: ERR_REQUIREMENT_LEVEL_NESTING, name: req.name,
286
+ severity: "error", code: ERR_REQUIREMENT_LEVEL_NESTING, path: reqPath,
229
287
  message: `nested under "${parent.name}" (level ${pl}) but declares level ${level}. ` +
230
288
  `Nesting is the hierarchy — a child sits strictly below its parent.`,
231
289
  });
@@ -235,7 +293,7 @@ export function checkRequirements(root) {
235
293
  // -- the link boundary ----------------------------------------------------
236
294
  if (refs.length > 0 && !req.mayReferenceModel()) {
237
295
  out.push({
238
- severity: "error", code: ERR_REQUIREMENT_LINK_ABOVE_FLOOR, name: req.name,
296
+ severity: "error", code: ERR_REQUIREMENT_LINK_ABOVE_FLOOR, path: reqPath,
239
297
  message: `'implementedBy' is legal at L${REQUIREMENT_LINK_FLOOR_LEVEL} (object) and ` +
240
298
  `L${REQUIREMENT_MAX_LEVEL} (member) only. L1-L3 are organisational and never reference ` +
241
299
  `the model — move the links to a nested L${REQUIREMENT_LINK_FLOOR_LEVEL} child.`,
@@ -262,7 +320,7 @@ export function checkRequirements(root) {
262
320
  // promised.
263
321
  if (!architectural && level === REQUIREMENT_LINK_FLOOR_LEVEL && !isObjectRef) {
264
322
  out.push({
265
- severity: "error", code: ERR_REQUIREMENT_L4_NOT_OBJECT, name: req.name,
323
+ severity: "error", code: ERR_REQUIREMENT_L4_NOT_OBJECT, path: reqPath,
266
324
  message: `L${REQUIREMENT_LINK_FLOOR_LEVEL} references an object; '${ref}' names a member. ` +
267
325
  `Move it to a nested L${REQUIREMENT_LEVEL_MEMBER} child, or reference the object itself.`,
268
326
  });
@@ -270,7 +328,7 @@ export function checkRequirements(root) {
270
328
  }
271
329
  if (!architectural && level === REQUIREMENT_LEVEL_MEMBER && isObjectRef) {
272
330
  out.push({
273
- severity: "error", code: ERR_REQUIREMENT_L5_NOT_MEMBER, name: req.name,
331
+ severity: "error", code: ERR_REQUIREMENT_L5_NOT_MEMBER, path: reqPath,
274
332
  message: `L${REQUIREMENT_LEVEL_MEMBER} references a member (field, view or identity); ` +
275
333
  `'${ref}' names an object. Move it to its L${REQUIREMENT_LINK_FLOOR_LEVEL} parent.`,
276
334
  });
@@ -283,13 +341,38 @@ export function checkRequirements(root) {
283
341
  // job, and the reason this check cannot live in the loader.
284
342
  if (req.requiresLiveNodes()) {
285
343
  out.push({
286
- severity: "error", code: ERR_REQUIREMENT_DANGLING_REF, name: req.name,
344
+ severity: "error", code: ERR_REQUIREMENT_DANGLING_REF, path: reqPath,
287
345
  message: `'${ref}' does not resolve in the loaded model (status '${String(req.status())}' — ` +
288
346
  `the model moved and the requirement is stale).` + didYouMeanHint(root, owner),
289
347
  });
290
348
  }
291
349
  }
292
350
  }
351
+ // -- @supersededBy resolution (FR-039) ------------------------------------
352
+ // The 2026-08-10 ruling asked for exactly this at point 4 — "a supersededBy
353
+ // that RESOLVES (FQN-checked, so verify can fail on a dangling one), turning
354
+ // 'deleted in S6' from an inert comment into a build gate" — and 0.24.0
355
+ // deregistered the unresolved string version without ever building it.
356
+ //
357
+ // Resolution is what makes a supersession CHAIN survive. A prose note points
358
+ // one hop and rots when that hop is itself retired; a resolved reference does
359
+ // not, because the target is a real node carrying its own @supersededBy.
360
+ //
361
+ // The target is a REQUIREMENT, not a model node: a capability is replaced by
362
+ // another capability. It resolves package-locally under ADR-0042 through the
363
+ // requirement's own effective package, exactly as @implementedBy does.
364
+ const superseded = req.supersededBy();
365
+ if (superseded !== undefined) {
366
+ const referrerPkg = req.package ?? req.fileDefaultPackage ?? "";
367
+ if (resolveRequirementRef(addressed, superseded, referrerPkg) === undefined) {
368
+ out.push({
369
+ severity: "error", code: ERR_REQUIREMENT_DANGLING_REF, path: reqPath,
370
+ message: `@supersededBy '${superseded}' does not name a requirement in the loaded ` +
371
+ `ledger. It must name the requirement that REPLACED this one — if nothing did, ` +
372
+ `drop the attribute and let \`notes\` carry why the capability went.`,
373
+ });
374
+ }
375
+ }
293
376
  // -- architectural universality, v1: claim-set arithmetic -----------------
294
377
  // A live policy claimed by nothing is the audited-base case: declared and
295
378
  // applied to nothing. Deliberately NOT a violation-predicate DSL — that
@@ -312,7 +395,7 @@ export function checkRequirements(root) {
312
395
  // levelled one, true again at the link floor.
313
396
  if (architectural && live && refs.length === 0 && req.mayReferenceModel()) {
314
397
  out.push({
315
- severity: "error", code: ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS, name: req.name,
398
+ severity: "error", code: ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS, path: reqPath,
316
399
  message: `architectural requirement is '${String(status)}' but nothing implements it. ` +
317
400
  `Its check is universality — a claim set of zero means the policy is declared and unapplied.`,
318
401
  });
@@ -321,7 +404,7 @@ export function checkRequirements(root) {
321
404
  const disposition = req.disposition();
322
405
  if (disposition !== undefined && !req.hasOutstandingWork()) {
323
406
  out.push({
324
- severity: "warn", code: WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE, name: req.name,
407
+ severity: "warn", code: WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE, path: reqPath,
325
408
  message: `carries @disposition '${disposition}' but its status is '${String(status)}', which has no ` +
326
409
  `outstanding work to decide about. A disposition is meaningful on 'planned' and 'partial' only — ` +
327
410
  `on any other status the decision IS the status.`,
@@ -336,7 +419,7 @@ export function checkRequirements(root) {
336
419
  // is empty is a capability declared and built by nobody.
337
420
  if (!architectural && live && !subtreeClaimsAnything(req)) {
338
421
  out.push({
339
- severity: "warn", code: WARN_REQUIREMENT_NOTHING_IMPLEMENTS, name: req.name,
422
+ severity: "warn", code: WARN_REQUIREMENT_NOTHING_IMPLEMENTS, path: reqPath,
340
423
  message: `is '${String(status)}' but neither it nor anything nested under it names an ` +
341
424
  `implementing node. A functional requirement's check is existence — a subtree that claims ` +
342
425
  `nothing is a capability nobody built.`,
@@ -344,7 +427,7 @@ export function checkRequirements(root) {
344
427
  }
345
428
  if (disposition === REQUIREMENT_DISPOSITION_DEFERRED && req.trackedBy().length === 0) {
346
429
  out.push({
347
- severity: "warn", code: WARN_REQUIREMENT_DEFERRED_UNTRACKED, name: req.name,
430
+ severity: "warn", code: WARN_REQUIREMENT_DEFERRED_UNTRACKED, path: reqPath,
348
431
  message: `is deferred but names no @trackedBy issue. Deferring without a ticket is how a known gap ` +
349
432
  `becomes an unknown one — nothing will raise it again.`,
350
433
  });
@@ -392,8 +475,8 @@ export function checkRequirements(root) {
392
475
  * are deliberately the ones an author would otherwise have to write a script to
393
476
  * get: how many gaps are recorded, and how many of those nobody has ruled on.
394
477
  */
395
- export function summariseRequirements(root) {
396
- const reqs = collectRequirements(root);
478
+ export function summariseRequirements(root, scan = scanRequirements(root)) {
479
+ const reqs = scan.addressed.map((r) => r.node);
397
480
  if (reqs.length === 0)
398
481
  return undefined; // opt-in by declaration
399
482
  const summary = {
@@ -420,9 +503,10 @@ export function summariseRequirements(root) {
420
503
  summary.deferredUntracked++;
421
504
  }
422
505
  }
423
- // Both sides of the ratio come from the SAME helpers the gate uses, so the
424
- // printed summary cannot disagree with the diagnostics printed beneath it.
425
- const claimed = claimedObjectKeys(root, reqs);
506
+ // Both sides of the ratio come from the SAME scan the gate read, so the printed
507
+ // summary cannot disagree with the diagnostics printed beneath it — previously
508
+ // the same helper, now literally the same result.
509
+ const claimed = scan.claimedObjects;
426
510
  for (const ent of coverableEntities(root)) {
427
511
  summary.entitiesTotal++;
428
512
  if (claimed.has(ent.resolutionKey()))
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-check.js","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requirement-check.js","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type MetaData } from "@metaobjectsdev/metadata";
2
+ import { type AddressedRequirement, type Diagnostic } from "./requirement-check.js";
3
+ export declare const WARN_REQUIREMENT_NAME_NOT_ADDRESSABLE = "WARN_REQUIREMENT_NAME_NOT_ADDRESSABLE";
4
+ export declare const WARN_REQUIREMENT_NAME_READS_AS_PROSE = "WARN_REQUIREMENT_NAME_READS_AS_PROSE";
5
+ export declare const WARN_REQUIREMENT_NAME_RESTATES_STATEMENT = "WARN_REQUIREMENT_NAME_RESTATES_STATEMENT";
6
+ export declare const WARN_REQUIREMENT_PROSE_DUPLICATED = "WARN_REQUIREMENT_PROSE_DUPLICATED";
7
+ export declare const WARN_REQUIREMENT_PROSE_EMPTY = "WARN_REQUIREMENT_PROSE_EMPTY";
8
+ export declare const WARN_REQUIREMENT_INERT_DOC_SLOT = "WARN_REQUIREMENT_INERT_DOC_SLOT";
9
+ export declare const WARN_REQUIREMENT_TITLE_IS_AN_ID = "WARN_REQUIREMENT_TITLE_IS_AN_ID";
10
+ /**
11
+ * Lint every `requirement.*` node in the loaded model.
12
+ *
13
+ * Returns `[]` for a model declaring none — opt-in by declaration, the same way
14
+ * the gate and the docs surface are, so turning this on by default is a no-op for
15
+ * every project without a ledger.
16
+ *
17
+ * What it CANNOT tell you: whether a statement is true, whether a description is
18
+ * useful, or whether the counterexample would actually falsify the claim. Those
19
+ * are the judgements the ledger exists to record and no check reaches them. Every
20
+ * finding below is about a slot's MECHANICS — is this content reachable, is it
21
+ * distinct from its neighbour, is the name still an address.
22
+ */
23
+ export declare function lintRequirements(root: MetaData,
24
+ /** The run's already-collected requirements, when one exists. The lint takes the
25
+ * ADDRESSES alone rather than the gate's full `RequirementScan`: it has nothing
26
+ * to do with who claims what, and asking for the claim set would make a
27
+ * standalone call pay for a resolution it never reads. */
28
+ addressed?: readonly AddressedRequirement[]): Diagnostic[];
29
+ //# sourceMappingURL=requirement-lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement-lint.d.ts","sourceRoot":"","sources":["../../../src/lib/requirement-lint.ts"],"names":[],"mappings":"AAoCA,OAAO,EAcL,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EACyB,KAAK,oBAAoB,EAAE,KAAK,UAAU,EACzE,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,qCAAqC,0CAA0C,CAAC;AAC7F,eAAO,MAAM,oCAAoC,yCAAyC,CAAC;AAC3F,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AACnG,eAAO,MAAM,iCAAiC,sCAAsC,CAAC;AACrF,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,+BAA+B,oCAAoC,CAAC;AACjF,eAAO,MAAM,+BAA+B,oCAAoC,CAAC;AA2JjF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ;AACd;;;2DAG2D;AAC3D,SAAS,GAAE,SAAS,oBAAoB,EAAuC,GAC9E,UAAU,EAAE,CAiHd"}