@metaobjectsdev/cli 0.22.1 → 0.23.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.
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAqBA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAkD5B,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM;AACX,kGAAkG;AAClG,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,MAAM,CAAC,CAkcjB"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"AAqBA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAkD5B,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM;AACX,kGAAkG;AAClG,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,MAAM,CAAC,CAydjB"}
@@ -15,7 +15,7 @@ import { FileProvider } from "../lib/file-provider.js";
15
15
  import { derivePayloadFieldTree } from "../lib/payload-field-tree.js";
16
16
  import { loadMetaobjectsConfig } from "../lib/load-metaobjects-config.js";
17
17
  import { computeCodegenDrift } from "../lib/codegen-drift.js";
18
- import { checkRequirements } from "../lib/requirement-check.js";
18
+ import { checkRequirements, summariseRequirements } from "../lib/requirement-check.js";
19
19
  import { checkVerifiedBy } from "../lib/verified-by-scan.js";
20
20
  import { resolveD1Config } from "../lib/config.js";
21
21
  import { buildWranglerExecuteArgs, defaultWranglerRunner, isWranglerLocalD1StatePath, } from "../lib/wrangler.js";
@@ -131,6 +131,23 @@ wranglerRunner) {
131
131
  // `@verifiedBy` resolution needs the project on disk, so it is a separate
132
132
  // scan; its diagnostics carry the same severities and share this reporter.
133
133
  const diags = [...checkRequirements(root), ...checkVerifiedBy(root, cwd)];
134
+ // Printed on EVERY run, clean or not — a gate that says nothing when it
135
+ // passes cannot be told apart from a gate that checked nothing, and the
136
+ // recorded-gap counts are the whole reason to keep a ledger.
137
+ const s = summariseRequirements(root);
138
+ if (s !== undefined) {
139
+ const order = ["planned", "live", "partial", "abandoned", "superseded"];
140
+ const parts = order
141
+ .filter((k) => (s.byStatus[k] ?? 0) > 0)
142
+ .map((k) => `${s.byStatus[k]} ${k}`);
143
+ log.info(`meta verify — requirements: ${s.total} entries (${s.functional} functional, ` +
144
+ `${s.architectural} architectural) — ${parts.join(", ")}; ` +
145
+ `${s.entitiesClaimed}/${s.entitiesTotal} entities claimed.`);
146
+ if (s.undecided > 0) {
147
+ log.info(`meta verify — requirements: ${s.undecided} recorded gap(s) with no @disposition. ` +
148
+ `These are known problems nobody has ruled on — set 'accepted' or 'deferred' to close the question.`);
149
+ }
150
+ }
134
151
  if (diags.length === 0)
135
152
  return 0;
136
153
  const errors = diags.filter((d) => d.severity === "error");
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,25 @@ export declare const ERR_REQUIREMENT_L4_NOT_OBJECT = "ERR_REQUIREMENT_L4_NOT_OBJ
15
15
  export declare const ERR_REQUIREMENT_L5_NOT_MEMBER = "ERR_REQUIREMENT_L5_NOT_MEMBER";
16
16
  export declare const ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS = "ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS";
17
17
  export declare const WARN_REQUIREMENT_OBJECT_UNCLAIMED = "WARN_REQUIREMENT_OBJECT_UNCLAIMED";
18
+ export declare const WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE = "WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE";
19
+ export declare const WARN_REQUIREMENT_DEFERRED_UNTRACKED = "WARN_REQUIREMENT_DEFERRED_UNTRACKED";
20
+ export declare const WARN_REQUIREMENT_NOTHING_IMPLEMENTS = "WARN_REQUIREMENT_NOTHING_IMPLEMENTS";
21
+ /** Counts behind the summary line `meta verify` prints on every run, clean or
22
+ * not. A clean run that says nothing cannot distinguish "checked, all good"
23
+ * from "checked nothing" — and a ledger that skipped an entire grain reads
24
+ * identically to a complete one. */
25
+ export interface RequirementSummary {
26
+ total: number;
27
+ functional: number;
28
+ architectural: number;
29
+ byStatus: Record<string, number>;
30
+ /** partial or planned with NO disposition recorded — the unreviewed gaps. */
31
+ undecided: number;
32
+ /** deferred entries naming no ticket, so nobody will be reminded. */
33
+ deferredUntracked: number;
34
+ entitiesTotal: number;
35
+ entitiesClaimed: number;
36
+ }
18
37
  /** Severity of the object-coverage gate. Promotion to `"error"` is a one-line
19
38
  * flip here, which activates an already-written test rather than requiring new
20
39
  * authoring under release pressure.
@@ -60,4 +79,15 @@ export declare function collectRequirements(root: MetaData): MetaRequirement[];
60
79
  * requirement claiming it. No test can. That truth is the adopter's job.
61
80
  */
62
81
  export declare function checkRequirements(root: MetaData): Diagnostic[];
82
+ /**
83
+ * Count what the ledger contains, for the line `meta verify` prints on EVERY
84
+ * run — including a clean one.
85
+ *
86
+ * This exists because silence is ambiguous. A run that prints nothing cannot be
87
+ * told apart from a run that checked nothing, and an entry that skipped a whole
88
+ * grain of the model looks exactly like one that covered it. The counts below
89
+ * are deliberately the ones an author would otherwise have to write a script to
90
+ * get: how many gaps are recorded, and how many of those nobody has ruled on.
91
+ */
92
+ export declare function summariseRequirements(root: MetaData): RequirementSummary | undefined;
63
93
  //# 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":"AAuBA,OAAO,EAaL,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;AAErF;;;;;;;;;;;;;;;;;;;;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;AAYD;;sDAEsD;AACtD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,EAAE,CAUrE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CA6I9D"}
1
+ {"version":3,"file":"requirement-check.d.ts","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"AAuBA,OAAO,EAcL,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;AA4CD;;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"}
@@ -20,7 +20,7 @@
20
20
  // Two kinds, opposite checks: `functional` fails when NOTHING implements it;
21
21
  // `architectural` fails when something VIOLATES it (v1: an empty claim set on a
22
22
  // live policy — claim-set arithmetic, deliberately not a predicate DSL).
23
- import { TYPE_OBJECT, TYPE_REQUIREMENT, OBJECT_SUBTYPE_ENTITY, PACKAGE_SEPARATOR, REQUIREMENT_SUBTYPE_ARCHITECTURAL, REQUIREMENT_LINK_FLOOR_LEVEL, REQUIREMENT_MIN_LEVEL, REQUIREMENT_MAX_LEVEL, REQUIREMENT_LEVEL_MEMBER, REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES, resolveObjectRef, didYouMeanHint, } from "@metaobjectsdev/metadata";
23
+ import { TYPE_OBJECT, TYPE_REQUIREMENT, OBJECT_SUBTYPE_ENTITY, PACKAGE_SEPARATOR, REQUIREMENT_SUBTYPE_ARCHITECTURAL, REQUIREMENT_LINK_FLOOR_LEVEL, REQUIREMENT_MIN_LEVEL, REQUIREMENT_MAX_LEVEL, REQUIREMENT_LEVEL_MEMBER, REQUIREMENT_DISPOSITION_DEFERRED, REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES, resolveObjectRef, didYouMeanHint, } from "@metaobjectsdev/metadata";
24
24
  export const ERR_REQUIREMENT_LINK_ABOVE_FLOOR = "ERR_REQUIREMENT_LINK_ABOVE_FLOOR";
25
25
  export const ERR_REQUIREMENT_DANGLING_REF = "ERR_REQUIREMENT_DANGLING_REF";
26
26
  export const ERR_REQUIREMENT_BAD_LEVEL = "ERR_REQUIREMENT_BAD_LEVEL";
@@ -29,6 +29,9 @@ export const ERR_REQUIREMENT_L4_NOT_OBJECT = "ERR_REQUIREMENT_L4_NOT_OBJECT";
29
29
  export const ERR_REQUIREMENT_L5_NOT_MEMBER = "ERR_REQUIREMENT_L5_NOT_MEMBER";
30
30
  export const ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS = "ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS";
31
31
  export const WARN_REQUIREMENT_OBJECT_UNCLAIMED = "WARN_REQUIREMENT_OBJECT_UNCLAIMED";
32
+ export const WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE = "WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE";
33
+ export const WARN_REQUIREMENT_DEFERRED_UNTRACKED = "WARN_REQUIREMENT_DEFERRED_UNTRACKED";
34
+ export const WARN_REQUIREMENT_NOTHING_IMPLEMENTS = "WARN_REQUIREMENT_NOTHING_IMPLEMENTS";
32
35
  /** Severity of the object-coverage gate. Promotion to `"error"` is a one-line
33
36
  * flip here, which activates an already-written test rather than requiring new
34
37
  * authoring under release pressure.
@@ -65,6 +68,43 @@ export function splitMemberRef(ref) {
65
68
  return { owner: ref, path: [] };
66
69
  return { owner: ref.slice(0, dot), path: ref.slice(dot + 1).split(".") };
67
70
  }
71
+ /** Resolution keys of every root-level object whose `extends` chain reaches
72
+ * `ancestor`. Walks the RESOLVED super pointer rather than the raw string, so a
73
+ * cross-package or dotted reference resolves the same way the loader resolved
74
+ * it — reading `superRef` here would be a second, divergent resolver. */
75
+ function subtypesOf(root, ancestor) {
76
+ const out = [];
77
+ for (const cand of root.children()) {
78
+ if (cand.type !== TYPE_OBJECT || cand === ancestor)
79
+ continue;
80
+ const seen = new Set();
81
+ let cur = cand.superData;
82
+ while (cur !== undefined && !seen.has(cur)) {
83
+ seen.add(cur);
84
+ if (cur === ancestor) {
85
+ out.push(cand.resolutionKey());
86
+ break;
87
+ }
88
+ cur = cur.superData;
89
+ }
90
+ }
91
+ return out;
92
+ }
93
+ /** True when this requirement, or anything nested beneath it, names an
94
+ * implementing node. Subtree-scoped deliberately: an L1 solution that delegates
95
+ * everything to its children implements nothing directly, and flagging that
96
+ * would fire on the correct shape of every tree. */
97
+ function subtreeClaimsAnything(req) {
98
+ if (req.implementedBy().length > 0)
99
+ return true;
100
+ for (const child of req.children()) {
101
+ if (child.type !== TYPE_REQUIREMENT)
102
+ continue;
103
+ if (subtreeClaimsAnything(child))
104
+ return true;
105
+ }
106
+ return false;
107
+ }
68
108
  /** Walk dotted member segments by CHILD NAME from an object node. */
69
109
  function resolveMember(obj, path) {
70
110
  let cur = obj;
@@ -90,6 +130,64 @@ export function collectRequirements(root) {
90
130
  walk(root);
91
131
  return out;
92
132
  }
133
+ /**
134
+ * Resolution keys of every object claimed by a requirement.
135
+ *
136
+ * SHARED by the gate and the summary deliberately. The two used to compute this
137
+ * separately and drifted: the summary missed the extends-chain propagation the
138
+ * gate applies to an ARCHITECTURAL claim, so a project using the documented
139
+ * BaseEntity pattern got a summary reporting entities as unclaimed while the
140
+ * gate beneath it named none. A summary that contradicts its own diagnostics
141
+ * reads as a measurement and cannot be reconciled with the run that produced it.
142
+ */
143
+ function claimedObjectKeys(root, reqs) {
144
+ const claimed = new Set();
145
+ for (const req of reqs) {
146
+ // A PLANNED requirement never contributes to coverage. Otherwise the
147
+ // cheapest way to clear an unclaimed-entity warning would be to declare an
148
+ // intention — the gate would measure ambition rather than work.
149
+ if (req.isPlanned())
150
+ continue;
151
+ // referrerPkg is the requirement's own effective package, so a bare ref
152
+ // binds package-locally under the ADR-0042 contract — the loader's own
153
+ // resolver, never a parallel name scan (#228).
154
+ const referrerPkg = req.package ?? req.fileDefaultPackage ?? "";
155
+ for (const ref of req.implementedBy()) {
156
+ const { owner, path } = splitMemberRef(ref);
157
+ const { node } = resolveObjectRef(root, owner, referrerPkg);
158
+ if (node === undefined)
159
+ continue;
160
+ if (path.length > 0 && resolveMember(node, path) === undefined)
161
+ continue;
162
+ claimed.add(node.resolutionKey());
163
+ // ARCHITECTURAL claims propagate DOWN the extends chain; functional ones
164
+ // do not. A policy ("every row is addressable") claimed on an abstract
165
+ // BaseEntity genuinely holds for everything extending it — that is what
166
+ // universality means, and without this the documented BaseEntity pattern
167
+ // is worse than not using it. A functional claim is the opposite: it says
168
+ // this entity exists for a REASON, and inheriting a reason from a shared
169
+ // base would mean adding an entity no longer forces anyone to say what it
170
+ // is for. Same mechanism, opposite polarity — as everywhere else in the
171
+ // subtype split.
172
+ if (req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL) {
173
+ for (const sub of subtypesOf(root, node))
174
+ claimed.add(sub);
175
+ }
176
+ }
177
+ }
178
+ return claimed;
179
+ }
180
+ /**
181
+ * The entities object coverage measures — and the same set for the gate and the
182
+ * summary, for the reason given on `claimedObjectKeys`.
183
+ *
184
+ * An ABSTRACT entity is shape, not data: there is no table and no rows, so
185
+ * demanding a capability claim for it is the same category error as demanding
186
+ * one for an object.value. It is exempt for the same reason.
187
+ */
188
+ function coverableEntities(root) {
189
+ return root.children().filter((n) => n.type === TYPE_OBJECT && n.subType === OBJECT_SUBTYPE_ENTITY && !n.isAbstract);
190
+ }
93
191
  /**
94
192
  * Check the requirement tree against the loaded model.
95
193
  *
@@ -103,18 +201,29 @@ export function checkRequirements(root) {
103
201
  const reqs = collectRequirements(root);
104
202
  if (reqs.length === 0)
105
203
  return out; // opt-in by declaration — no requirements, nothing to say
106
- const claimedObjects = new Set();
204
+ const claimedObjects = claimedObjectKeys(root, reqs);
107
205
  for (const req of reqs) {
108
206
  const architectural = req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL;
109
207
  const level = req.level();
110
208
  const refs = req.implementedBy();
111
- if (!architectural) {
112
- if (level === undefined || !Number.isInteger(level)
209
+ // -- the level rules -------------------------------------------------------
210
+ // A functional requirement MUST be levelled. An architectural one MAY be,
211
+ // and levelling is the OPT-IN: unlevelled it is the original flat,
212
+ // object-independent policy and these rules must not touch it. Once a level
213
+ // is present the node has joined a tree, and `@level`'s own registered
214
+ // description promises that "the same rules as functional apply: nesting
215
+ // must agree with the level". Enforcing that here is what makes the promise
216
+ // true — a levelled architectural node used to be exempt from BOTH checks,
217
+ // so an ISO-25010 tree could re-ascend or declare a level 7 in silence.
218
+ const levelled = level !== undefined;
219
+ if (!architectural || levelled) {
220
+ if (!levelled || !Number.isInteger(level)
113
221
  || level < REQUIREMENT_MIN_LEVEL || level > REQUIREMENT_MAX_LEVEL) {
114
222
  out.push({
115
223
  severity: "error", code: ERR_REQUIREMENT_BAD_LEVEL, name: req.name,
116
224
  message: `level must be an integer ${REQUIREMENT_MIN_LEVEL}-${REQUIREMENT_MAX_LEVEL} (got ${String(level)}). ` +
117
- `L1 solution, L2 segment (app/library), L3 service, L4 object, L5 member.`,
225
+ `L1 solution, L2 segment (app/library), L3 service, L4 object, L5 member.` +
226
+ (architectural ? ` On an architectural requirement the level is optional — omit it for a flat policy.` : ``),
118
227
  });
119
228
  }
120
229
  // Nesting IS the hierarchy, so a child must sit strictly below its parent.
@@ -148,9 +257,16 @@ export function checkRequirements(root) {
148
257
  const referrerPkg = req.package ?? req.fileDefaultPackage ?? "";
149
258
  const { node } = resolveObjectRef(root, owner, referrerPkg);
150
259
  const isObjectRef = path.length === 0;
151
- if (node !== undefined && (isObjectRef || resolveMember(node, path) !== undefined)) {
152
- claimedObjects.add(node.resolutionKey());
153
- }
260
+ // GRAIN, and it stays functional-only DELIBERATELY. On a functional
261
+ // requirement L4 and L5 MEAN "an object" and "a member" — that is what the
262
+ // allocation step allocates. On a levelled architectural one the upper
263
+ // tiers are a quality taxonomy and L4/L5 retain only their link-floor
264
+ // meaning, so a policy whose claim set legitimately mixes grains ("every
265
+ // money FIELD declares its currency", claimed alongside the entities that
266
+ // hold them) must not be forced to split by grain to say so. Extending
267
+ // this to architectural would be a new rule, not the missing half of an
268
+ // existing one — unlike the level checks above, which `@level` already
269
+ // promised.
154
270
  if (!architectural && level === REQUIREMENT_LINK_FLOOR_LEVEL && !isObjectRef) {
155
271
  out.push({
156
272
  severity: "error", code: ERR_REQUIREMENT_L4_NOT_OBJECT, name: req.name,
@@ -189,13 +305,57 @@ export function checkRequirements(root) {
189
305
  const status = req.status();
190
306
  const live = status !== undefined
191
307
  && REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES.includes(status);
192
- if (architectural && live && refs.length === 0) {
308
+ // Two exemptions, both structural rather than lenient.
309
+ //
310
+ // `planned` — a policy that is not built yet is SUPPOSED to be applied to
311
+ // nothing, so the check would fire on precisely the entries it should stay
312
+ // quiet about.
313
+ //
314
+ // An ORGANISATIONAL node in a levelled architectural tree — an "ISO 25010
315
+ // Security" at L1 delegates to its children and names nothing, exactly as
316
+ // an L1 functional node does. mayReferenceModel() is the right predicate
317
+ // because it already encodes "is this tier allowed to name the model at
318
+ // all": true for a flat policy (the original form), false for L1-L3 of a
319
+ // levelled one, true again at the link floor.
320
+ if (architectural && live && refs.length === 0 && req.mayReferenceModel()) {
193
321
  out.push({
194
322
  severity: "error", code: ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS, name: req.name,
195
323
  message: `architectural requirement is '${String(status)}' but nothing implements it. ` +
196
324
  `Its check is universality — a claim set of zero means the policy is declared and unapplied.`,
197
325
  });
198
326
  }
327
+ // -- disposition: the decision, not the state -----------------------------
328
+ const disposition = req.disposition();
329
+ if (disposition !== undefined && !req.hasOutstandingWork()) {
330
+ out.push({
331
+ severity: "warn", code: WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE, name: req.name,
332
+ message: `carries @disposition '${disposition}' but its status is '${String(status)}', which has no ` +
333
+ `outstanding work to decide about. A disposition is meaningful on 'planned' and 'partial' only — ` +
334
+ `on any other status the decision IS the status.`,
335
+ });
336
+ }
337
+ // -- functional existence, SUBTREE-scoped ---------------------------------
338
+ // A functional requirement's check is EXISTENCE: it fails when nothing
339
+ // implements it. But an organisational tier legitimately implements nothing
340
+ // ITSELF — it delegates to children, and that is the whole shape of the
341
+ // tree. So the question is not "does this node claim anything" but "does
342
+ // anything in this subtree claim anything". A live L1 whose entire subtree
343
+ // is empty is a capability declared and built by nobody.
344
+ if (!architectural && live && !subtreeClaimsAnything(req)) {
345
+ out.push({
346
+ severity: "warn", code: WARN_REQUIREMENT_NOTHING_IMPLEMENTS, name: req.name,
347
+ message: `is '${String(status)}' but neither it nor anything nested under it names an ` +
348
+ `implementing node. A functional requirement's check is existence — a subtree that claims ` +
349
+ `nothing is a capability nobody built.`,
350
+ });
351
+ }
352
+ if (disposition === REQUIREMENT_DISPOSITION_DEFERRED && req.trackedBy().length === 0) {
353
+ out.push({
354
+ severity: "warn", code: WARN_REQUIREMENT_DEFERRED_UNTRACKED, name: req.name,
355
+ message: `is deferred but names no @trackedBy issue. Deferring without a ticket is how a known gap ` +
356
+ `becomes an unknown one — nothing will raise it again.`,
357
+ });
358
+ }
199
359
  }
200
360
  // -- object coverage: adding an entity forces a requirement -----------------
201
361
  // Binary per entity, never a ratio: a "% claimed" number measures what the
@@ -218,9 +378,7 @@ export function checkRequirements(root) {
218
378
  //
219
379
  // So a green run means "every entity is claimed by something", not "every node is
220
380
  // described". The stronger reading would be false.
221
- for (const ent of root.children()) {
222
- if (ent.type !== TYPE_OBJECT || ent.subType !== OBJECT_SUBTYPE_ENTITY)
223
- continue;
381
+ for (const ent of coverableEntities(root)) {
224
382
  const key = ent.resolutionKey();
225
383
  if (!claimedObjects.has(key)) {
226
384
  out.push({
@@ -231,4 +389,52 @@ export function checkRequirements(root) {
231
389
  }
232
390
  return out;
233
391
  }
392
+ /**
393
+ * Count what the ledger contains, for the line `meta verify` prints on EVERY
394
+ * run — including a clean one.
395
+ *
396
+ * This exists because silence is ambiguous. A run that prints nothing cannot be
397
+ * told apart from a run that checked nothing, and an entry that skipped a whole
398
+ * grain of the model looks exactly like one that covered it. The counts below
399
+ * are deliberately the ones an author would otherwise have to write a script to
400
+ * get: how many gaps are recorded, and how many of those nobody has ruled on.
401
+ */
402
+ export function summariseRequirements(root) {
403
+ const reqs = collectRequirements(root);
404
+ if (reqs.length === 0)
405
+ return undefined; // opt-in by declaration
406
+ const summary = {
407
+ total: reqs.length,
408
+ functional: 0,
409
+ architectural: 0,
410
+ byStatus: {},
411
+ undecided: 0,
412
+ deferredUntracked: 0,
413
+ entitiesTotal: 0,
414
+ entitiesClaimed: 0,
415
+ };
416
+ for (const req of reqs) {
417
+ if (req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL)
418
+ summary.architectural++;
419
+ else
420
+ summary.functional++;
421
+ const status = req.status();
422
+ if (status !== undefined)
423
+ summary.byStatus[status] = (summary.byStatus[status] ?? 0) + 1;
424
+ if (req.hasOutstandingWork() && req.disposition() === undefined)
425
+ summary.undecided++;
426
+ if (req.disposition() === REQUIREMENT_DISPOSITION_DEFERRED && req.trackedBy().length === 0) {
427
+ summary.deferredUntracked++;
428
+ }
429
+ }
430
+ // Both sides of the ratio come from the SAME helpers the gate uses, so the
431
+ // printed summary cannot disagree with the diagnostics printed beneath it.
432
+ const claimed = claimedObjectKeys(root, reqs);
433
+ for (const ent of coverableEntities(root)) {
434
+ summary.entitiesTotal++;
435
+ if (claimed.has(ent.resolutionKey()))
436
+ summary.entitiesClaimed++;
437
+ }
438
+ return summary;
439
+ }
234
440
  //# sourceMappingURL=requirement-check.js.map
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/cli",
3
- "version": "0.22.1",
3
+ "version": "0.23.0",
4
4
  "description": "CLI for MetaObjects: scaffold, codegen, migrate, and drift-detection commands.",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -49,15 +49,15 @@
49
49
  ],
50
50
  "dependencies": {
51
51
  "@libsql/kysely-libsql": "^0.4.0",
52
- "@metaobjectsdev/codegen-ts": "0.22.1",
53
- "@metaobjectsdev/codegen-ts-react": "0.22.1",
54
- "@metaobjectsdev/codegen-ts-tanstack": "0.22.1",
55
- "@metaobjectsdev/docs-site": "0.22.1",
56
- "@metaobjectsdev/metadata": "0.22.1",
57
- "@metaobjectsdev/migrate-ts": "0.22.1",
58
- "@metaobjectsdev/render": "0.22.1",
59
- "@metaobjectsdev/runtime-ts": "0.22.1",
60
- "@metaobjectsdev/sdk": "0.22.1",
52
+ "@metaobjectsdev/codegen-ts": "0.23.0",
53
+ "@metaobjectsdev/codegen-ts-react": "0.23.0",
54
+ "@metaobjectsdev/codegen-ts-tanstack": "0.23.0",
55
+ "@metaobjectsdev/docs-site": "0.23.0",
56
+ "@metaobjectsdev/metadata": "0.23.0",
57
+ "@metaobjectsdev/migrate-ts": "0.23.0",
58
+ "@metaobjectsdev/render": "0.23.0",
59
+ "@metaobjectsdev/runtime-ts": "0.23.0",
60
+ "@metaobjectsdev/sdk": "0.23.0",
61
61
  "@toon-format/toon": "^2.3.0",
62
62
  "jiti": "^2.4.0"
63
63
  },
@@ -16,7 +16,7 @@ import { FileProvider } from "../lib/file-provider.js";
16
16
  import { derivePayloadFieldTree } from "../lib/payload-field-tree.js";
17
17
  import { loadMetaobjectsConfig } from "../lib/load-metaobjects-config.js";
18
18
  import { computeCodegenDrift } from "../lib/codegen-drift.js";
19
- import { checkRequirements } from "../lib/requirement-check.js";
19
+ import { checkRequirements, summariseRequirements } from "../lib/requirement-check.js";
20
20
  import { checkVerifiedBy } from "../lib/verified-by-scan.js";
21
21
  import { resolveD1Config } from "../lib/config.js";
22
22
  import {
@@ -178,6 +178,29 @@ export async function verifyCommand(
178
178
  // `@verifiedBy` resolution needs the project on disk, so it is a separate
179
179
  // scan; its diagnostics carry the same severities and share this reporter.
180
180
  const diags = [...checkRequirements(root), ...checkVerifiedBy(root, cwd)];
181
+
182
+ // Printed on EVERY run, clean or not — a gate that says nothing when it
183
+ // passes cannot be told apart from a gate that checked nothing, and the
184
+ // recorded-gap counts are the whole reason to keep a ledger.
185
+ const s = summariseRequirements(root);
186
+ if (s !== undefined) {
187
+ const order = ["planned", "live", "partial", "abandoned", "superseded"];
188
+ const parts = order
189
+ .filter((k) => (s.byStatus[k] ?? 0) > 0)
190
+ .map((k) => `${s.byStatus[k]} ${k}`);
191
+ log.info(
192
+ `meta verify — requirements: ${s.total} entries (${s.functional} functional, ` +
193
+ `${s.architectural} architectural) — ${parts.join(", ")}; ` +
194
+ `${s.entitiesClaimed}/${s.entitiesTotal} entities claimed.`,
195
+ );
196
+ if (s.undecided > 0) {
197
+ log.info(
198
+ `meta verify — requirements: ${s.undecided} recorded gap(s) with no @disposition. ` +
199
+ `These are known problems nobody has ruled on — set 'accepted' or 'deferred' to close the question.`,
200
+ );
201
+ }
202
+ }
203
+
181
204
  if (diags.length === 0) return 0;
182
205
  const errors = diags.filter((d) => d.severity === "error");
183
206
  const warns = diags.filter((d) => d.severity === "warn");
@@ -31,6 +31,7 @@ import {
31
31
  REQUIREMENT_MIN_LEVEL,
32
32
  REQUIREMENT_MAX_LEVEL,
33
33
  REQUIREMENT_LEVEL_MEMBER,
34
+ REQUIREMENT_DISPOSITION_DEFERRED,
34
35
  REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES,
35
36
  resolveObjectRef,
36
37
  didYouMeanHint,
@@ -57,6 +58,26 @@ export const ERR_REQUIREMENT_L4_NOT_OBJECT = "ERR_REQUIREMENT_L4_NOT_OBJECT";
57
58
  export const ERR_REQUIREMENT_L5_NOT_MEMBER = "ERR_REQUIREMENT_L5_NOT_MEMBER";
58
59
  export const ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS = "ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS";
59
60
  export const WARN_REQUIREMENT_OBJECT_UNCLAIMED = "WARN_REQUIREMENT_OBJECT_UNCLAIMED";
61
+ export const WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE = "WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE";
62
+ export const WARN_REQUIREMENT_DEFERRED_UNTRACKED = "WARN_REQUIREMENT_DEFERRED_UNTRACKED";
63
+ export const WARN_REQUIREMENT_NOTHING_IMPLEMENTS = "WARN_REQUIREMENT_NOTHING_IMPLEMENTS";
64
+
65
+ /** Counts behind the summary line `meta verify` prints on every run, clean or
66
+ * not. A clean run that says nothing cannot distinguish "checked, all good"
67
+ * from "checked nothing" — and a ledger that skipped an entire grain reads
68
+ * identically to a complete one. */
69
+ export interface RequirementSummary {
70
+ total: number;
71
+ functional: number;
72
+ architectural: number;
73
+ byStatus: Record<string, number>;
74
+ /** partial or planned with NO disposition recorded — the unreviewed gaps. */
75
+ undecided: number;
76
+ /** deferred entries naming no ticket, so nobody will be reminded. */
77
+ deferredUntracked: number;
78
+ entitiesTotal: number;
79
+ entitiesClaimed: number;
80
+ }
60
81
 
61
82
  /** Severity of the object-coverage gate. Promotion to `"error"` is a one-line
62
83
  * flip here, which activates an already-written test rather than requiring new
@@ -95,6 +116,38 @@ export function splitMemberRef(ref: string): { owner: string; path: string[] } {
95
116
  return { owner: ref.slice(0, dot), path: ref.slice(dot + 1).split(".") };
96
117
  }
97
118
 
119
+ /** Resolution keys of every root-level object whose `extends` chain reaches
120
+ * `ancestor`. Walks the RESOLVED super pointer rather than the raw string, so a
121
+ * cross-package or dotted reference resolves the same way the loader resolved
122
+ * it — reading `superRef` here would be a second, divergent resolver. */
123
+ function subtypesOf(root: MetaData, ancestor: MetaData): string[] {
124
+ const out: string[] = [];
125
+ for (const cand of root.children()) {
126
+ if (cand.type !== TYPE_OBJECT || cand === ancestor) continue;
127
+ const seen = new Set<MetaData>();
128
+ let cur = cand.superData;
129
+ while (cur !== undefined && !seen.has(cur)) {
130
+ seen.add(cur);
131
+ if (cur === ancestor) { out.push(cand.resolutionKey()); break; }
132
+ cur = cur.superData;
133
+ }
134
+ }
135
+ return out;
136
+ }
137
+
138
+ /** True when this requirement, or anything nested beneath it, names an
139
+ * implementing node. Subtree-scoped deliberately: an L1 solution that delegates
140
+ * everything to its children implements nothing directly, and flagging that
141
+ * would fire on the correct shape of every tree. */
142
+ function subtreeClaimsAnything(req: MetaRequirement): boolean {
143
+ if (req.implementedBy().length > 0) return true;
144
+ for (const child of req.children()) {
145
+ if (child.type !== TYPE_REQUIREMENT) continue;
146
+ if (subtreeClaimsAnything(child as MetaRequirement)) return true;
147
+ }
148
+ return false;
149
+ }
150
+
98
151
  /** Walk dotted member segments by CHILD NAME from an object node. */
99
152
  function resolveMember(obj: MetaData, path: string[]): MetaData | undefined {
100
153
  let cur: MetaData | undefined = obj;
@@ -120,6 +173,64 @@ export function collectRequirements(root: MetaData): MetaRequirement[] {
120
173
  return out;
121
174
  }
122
175
 
176
+ /**
177
+ * Resolution keys of every object claimed by a requirement.
178
+ *
179
+ * SHARED by the gate and the summary deliberately. The two used to compute this
180
+ * separately and drifted: the summary missed the extends-chain propagation the
181
+ * gate applies to an ARCHITECTURAL claim, so a project using the documented
182
+ * BaseEntity pattern got a summary reporting entities as unclaimed while the
183
+ * gate beneath it named none. A summary that contradicts its own diagnostics
184
+ * reads as a measurement and cannot be reconciled with the run that produced it.
185
+ */
186
+ function claimedObjectKeys(root: MetaData, reqs: MetaRequirement[]): Set<string> {
187
+ const claimed = new Set<string>();
188
+ for (const req of reqs) {
189
+ // A PLANNED requirement never contributes to coverage. Otherwise the
190
+ // cheapest way to clear an unclaimed-entity warning would be to declare an
191
+ // intention — the gate would measure ambition rather than work.
192
+ if (req.isPlanned()) continue;
193
+ // referrerPkg is the requirement's own effective package, so a bare ref
194
+ // binds package-locally under the ADR-0042 contract — the loader's own
195
+ // resolver, never a parallel name scan (#228).
196
+ const referrerPkg = req.package ?? req.fileDefaultPackage ?? "";
197
+ for (const ref of req.implementedBy()) {
198
+ const { owner, path } = splitMemberRef(ref);
199
+ const { node } = resolveObjectRef(root, owner, referrerPkg);
200
+ if (node === undefined) continue;
201
+ if (path.length > 0 && resolveMember(node, path) === undefined) continue;
202
+ claimed.add(node.resolutionKey());
203
+ // ARCHITECTURAL claims propagate DOWN the extends chain; functional ones
204
+ // do not. A policy ("every row is addressable") claimed on an abstract
205
+ // BaseEntity genuinely holds for everything extending it — that is what
206
+ // universality means, and without this the documented BaseEntity pattern
207
+ // is worse than not using it. A functional claim is the opposite: it says
208
+ // this entity exists for a REASON, and inheriting a reason from a shared
209
+ // base would mean adding an entity no longer forces anyone to say what it
210
+ // is for. Same mechanism, opposite polarity — as everywhere else in the
211
+ // subtype split.
212
+ if (req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL) {
213
+ for (const sub of subtypesOf(root, node)) claimed.add(sub);
214
+ }
215
+ }
216
+ }
217
+ return claimed;
218
+ }
219
+
220
+ /**
221
+ * The entities object coverage measures — and the same set for the gate and the
222
+ * summary, for the reason given on `claimedObjectKeys`.
223
+ *
224
+ * An ABSTRACT entity is shape, not data: there is no table and no rows, so
225
+ * demanding a capability claim for it is the same category error as demanding
226
+ * one for an object.value. It is exempt for the same reason.
227
+ */
228
+ function coverableEntities(root: MetaData): MetaData[] {
229
+ return root.children().filter(
230
+ (n) => n.type === TYPE_OBJECT && n.subType === OBJECT_SUBTYPE_ENTITY && !n.isAbstract,
231
+ );
232
+ }
233
+
123
234
  /**
124
235
  * Check the requirement tree against the loaded model.
125
236
  *
@@ -133,20 +244,31 @@ export function checkRequirements(root: MetaData): Diagnostic[] {
133
244
  const reqs = collectRequirements(root);
134
245
  if (reqs.length === 0) return out; // opt-in by declaration — no requirements, nothing to say
135
246
 
136
- const claimedObjects = new Set<string>();
247
+ const claimedObjects = claimedObjectKeys(root, reqs);
137
248
 
138
249
  for (const req of reqs) {
139
250
  const architectural = req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL;
140
251
  const level = req.level();
141
252
  const refs = req.implementedBy();
142
253
 
143
- if (!architectural) {
144
- if (level === undefined || !Number.isInteger(level)
254
+ // -- the level rules -------------------------------------------------------
255
+ // A functional requirement MUST be levelled. An architectural one MAY be,
256
+ // and levelling is the OPT-IN: unlevelled it is the original flat,
257
+ // object-independent policy and these rules must not touch it. Once a level
258
+ // is present the node has joined a tree, and `@level`'s own registered
259
+ // description promises that "the same rules as functional apply: nesting
260
+ // must agree with the level". Enforcing that here is what makes the promise
261
+ // true — a levelled architectural node used to be exempt from BOTH checks,
262
+ // so an ISO-25010 tree could re-ascend or declare a level 7 in silence.
263
+ const levelled = level !== undefined;
264
+ if (!architectural || levelled) {
265
+ if (!levelled || !Number.isInteger(level)
145
266
  || level < REQUIREMENT_MIN_LEVEL || level > REQUIREMENT_MAX_LEVEL) {
146
267
  out.push({
147
268
  severity: "error", code: ERR_REQUIREMENT_BAD_LEVEL, name: req.name,
148
269
  message: `level must be an integer ${REQUIREMENT_MIN_LEVEL}-${REQUIREMENT_MAX_LEVEL} (got ${String(level)}). ` +
149
- `L1 solution, L2 segment (app/library), L3 service, L4 object, L5 member.`,
270
+ `L1 solution, L2 segment (app/library), L3 service, L4 object, L5 member.` +
271
+ (architectural ? ` On an architectural requirement the level is optional — omit it for a flat policy.` : ``),
150
272
  });
151
273
  }
152
274
  // Nesting IS the hierarchy, so a child must sit strictly below its parent.
@@ -183,10 +305,16 @@ export function checkRequirements(root: MetaData): Diagnostic[] {
183
305
  const { node } = resolveObjectRef(root, owner, referrerPkg);
184
306
  const isObjectRef = path.length === 0;
185
307
 
186
- if (node !== undefined && (isObjectRef || resolveMember(node, path) !== undefined)) {
187
- claimedObjects.add(node.resolutionKey());
188
- }
189
-
308
+ // GRAIN, and it stays functional-only DELIBERATELY. On a functional
309
+ // requirement L4 and L5 MEAN "an object" and "a member" — that is what the
310
+ // allocation step allocates. On a levelled architectural one the upper
311
+ // tiers are a quality taxonomy and L4/L5 retain only their link-floor
312
+ // meaning, so a policy whose claim set legitimately mixes grains ("every
313
+ // money FIELD declares its currency", claimed alongside the entities that
314
+ // hold them) must not be forced to split by grain to say so. Extending
315
+ // this to architectural would be a new rule, not the missing half of an
316
+ // existing one — unlike the level checks above, which `@level` already
317
+ // promised.
190
318
  if (!architectural && level === REQUIREMENT_LINK_FLOOR_LEVEL && !isObjectRef) {
191
319
  out.push({
192
320
  severity: "error", code: ERR_REQUIREMENT_L4_NOT_OBJECT, name: req.name,
@@ -227,13 +355,59 @@ export function checkRequirements(root: MetaData): Diagnostic[] {
227
355
  const status = req.status();
228
356
  const live = status !== undefined
229
357
  && REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES.includes(status as RequirementStatus);
230
- if (architectural && live && refs.length === 0) {
358
+ // Two exemptions, both structural rather than lenient.
359
+ //
360
+ // `planned` — a policy that is not built yet is SUPPOSED to be applied to
361
+ // nothing, so the check would fire on precisely the entries it should stay
362
+ // quiet about.
363
+ //
364
+ // An ORGANISATIONAL node in a levelled architectural tree — an "ISO 25010
365
+ // Security" at L1 delegates to its children and names nothing, exactly as
366
+ // an L1 functional node does. mayReferenceModel() is the right predicate
367
+ // because it already encodes "is this tier allowed to name the model at
368
+ // all": true for a flat policy (the original form), false for L1-L3 of a
369
+ // levelled one, true again at the link floor.
370
+ if (architectural && live && refs.length === 0 && req.mayReferenceModel()) {
231
371
  out.push({
232
372
  severity: "error", code: ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS, name: req.name,
233
373
  message: `architectural requirement is '${String(status)}' but nothing implements it. ` +
234
374
  `Its check is universality — a claim set of zero means the policy is declared and unapplied.`,
235
375
  });
236
376
  }
377
+
378
+ // -- disposition: the decision, not the state -----------------------------
379
+ const disposition = req.disposition();
380
+ if (disposition !== undefined && !req.hasOutstandingWork()) {
381
+ out.push({
382
+ severity: "warn", code: WARN_REQUIREMENT_DISPOSITION_NOT_APPLICABLE, name: req.name,
383
+ message: `carries @disposition '${disposition}' but its status is '${String(status)}', which has no ` +
384
+ `outstanding work to decide about. A disposition is meaningful on 'planned' and 'partial' only — ` +
385
+ `on any other status the decision IS the status.`,
386
+ });
387
+ }
388
+ // -- functional existence, SUBTREE-scoped ---------------------------------
389
+ // A functional requirement's check is EXISTENCE: it fails when nothing
390
+ // implements it. But an organisational tier legitimately implements nothing
391
+ // ITSELF — it delegates to children, and that is the whole shape of the
392
+ // tree. So the question is not "does this node claim anything" but "does
393
+ // anything in this subtree claim anything". A live L1 whose entire subtree
394
+ // is empty is a capability declared and built by nobody.
395
+ if (!architectural && live && !subtreeClaimsAnything(req)) {
396
+ out.push({
397
+ severity: "warn", code: WARN_REQUIREMENT_NOTHING_IMPLEMENTS, name: req.name,
398
+ message: `is '${String(status)}' but neither it nor anything nested under it names an ` +
399
+ `implementing node. A functional requirement's check is existence — a subtree that claims ` +
400
+ `nothing is a capability nobody built.`,
401
+ });
402
+ }
403
+
404
+ if (disposition === REQUIREMENT_DISPOSITION_DEFERRED && req.trackedBy().length === 0) {
405
+ out.push({
406
+ severity: "warn", code: WARN_REQUIREMENT_DEFERRED_UNTRACKED, name: req.name,
407
+ message: `is deferred but names no @trackedBy issue. Deferring without a ticket is how a known gap ` +
408
+ `becomes an unknown one — nothing will raise it again.`,
409
+ });
410
+ }
237
411
  }
238
412
 
239
413
  // -- object coverage: adding an entity forces a requirement -----------------
@@ -257,8 +431,7 @@ export function checkRequirements(root: MetaData): Diagnostic[] {
257
431
  //
258
432
  // So a green run means "every entity is claimed by something", not "every node is
259
433
  // described". The stronger reading would be false.
260
- for (const ent of root.children()) {
261
- if (ent.type !== TYPE_OBJECT || ent.subType !== OBJECT_SUBTYPE_ENTITY) continue;
434
+ for (const ent of coverableEntities(root)) {
262
435
  const key = ent.resolutionKey();
263
436
  if (!claimedObjects.has(key)) {
264
437
  out.push({
@@ -270,3 +443,52 @@ export function checkRequirements(root: MetaData): Diagnostic[] {
270
443
 
271
444
  return out;
272
445
  }
446
+
447
+ /**
448
+ * Count what the ledger contains, for the line `meta verify` prints on EVERY
449
+ * run — including a clean one.
450
+ *
451
+ * This exists because silence is ambiguous. A run that prints nothing cannot be
452
+ * told apart from a run that checked nothing, and an entry that skipped a whole
453
+ * grain of the model looks exactly like one that covered it. The counts below
454
+ * are deliberately the ones an author would otherwise have to write a script to
455
+ * get: how many gaps are recorded, and how many of those nobody has ruled on.
456
+ */
457
+ export function summariseRequirements(root: MetaData): RequirementSummary | undefined {
458
+ const reqs = collectRequirements(root);
459
+ if (reqs.length === 0) return undefined; // opt-in by declaration
460
+
461
+ const summary: RequirementSummary = {
462
+ total: reqs.length,
463
+ functional: 0,
464
+ architectural: 0,
465
+ byStatus: {},
466
+ undecided: 0,
467
+ deferredUntracked: 0,
468
+ entitiesTotal: 0,
469
+ entitiesClaimed: 0,
470
+ };
471
+
472
+ for (const req of reqs) {
473
+ if (req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL) summary.architectural++;
474
+ else summary.functional++;
475
+
476
+ const status = req.status();
477
+ if (status !== undefined) summary.byStatus[status] = (summary.byStatus[status] ?? 0) + 1;
478
+
479
+ if (req.hasOutstandingWork() && req.disposition() === undefined) summary.undecided++;
480
+ if (req.disposition() === REQUIREMENT_DISPOSITION_DEFERRED && req.trackedBy().length === 0) {
481
+ summary.deferredUntracked++;
482
+ }
483
+ }
484
+
485
+ // Both sides of the ratio come from the SAME helpers the gate uses, so the
486
+ // printed summary cannot disagree with the diagnostics printed beneath it.
487
+ const claimed = claimedObjectKeys(root, reqs);
488
+ for (const ent of coverableEntities(root)) {
489
+ summary.entitiesTotal++;
490
+ if (claimed.has(ent.resolutionKey())) summary.entitiesClaimed++;
491
+ }
492
+
493
+ return summary;
494
+ }