@metaobjectsdev/cli 0.21.6 → 0.22.0-rc.2
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.
- package/dist/src/commands/verify.d.ts.map +1 -1
- package/dist/src/commands/verify.js +30 -1
- package/dist/src/commands/verify.js.map +1 -1
- package/dist/src/lib/detect-stack.d.ts +3 -1
- package/dist/src/lib/detect-stack.d.ts.map +1 -1
- package/dist/src/lib/detect-stack.js +50 -5
- package/dist/src/lib/detect-stack.js.map +1 -1
- package/dist/src/lib/requirement-check.d.ts +63 -0
- package/dist/src/lib/requirement-check.d.ts.map +1 -0
- package/dist/src/lib/requirement-check.js +234 -0
- package/dist/src/lib/requirement-check.js.map +1 -0
- package/dist/src/lib/verified-by-scan.d.ts +18 -0
- package/dist/src/lib/verified-by-scan.d.ts.map +1 -0
- package/dist/src/lib/verified-by-scan.js +168 -0
- package/dist/src/lib/verified-by-scan.js.map +1 -0
- package/package.json +10 -10
- package/src/commands/verify.ts +28 -1
- package/src/lib/detect-stack.ts +48 -5
- package/src/lib/requirement-check.ts +272 -0
- package/src/lib/verified-by-scan.ts +190 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/verify.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -15,6 +15,8 @@ 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";
|
|
19
|
+
import { checkVerifiedBy } from "../lib/verified-by-scan.js";
|
|
18
20
|
import { resolveD1Config } from "../lib/config.js";
|
|
19
21
|
import { buildWranglerExecuteArgs, defaultWranglerRunner, isWranglerLocalD1StatePath, } from "../lib/wrangler.js";
|
|
20
22
|
import { buildProjectionViews } from "@metaobjectsdev/codegen-ts";
|
|
@@ -113,13 +115,40 @@ wranglerRunner) {
|
|
|
113
115
|
const templateExit = runTemplates ? runTemplateVerify() : 0;
|
|
114
116
|
const schemaExit = await runSchemaVerify();
|
|
115
117
|
const codegenExit = runCodegen ? await runCodegenVerify() : 0;
|
|
118
|
+
// Requirements have no subverb: `requirement.*` nodes are metadata, so they
|
|
119
|
+
// are checked on every `meta verify`. Opt-in by DECLARATION — a model with no
|
|
120
|
+
// requirement nodes is silent, not in drift.
|
|
121
|
+
const requirementExit = runRequirementVerify();
|
|
116
122
|
// Advisory verify-as-teacher pass: surface hand-rolled work the metadata could
|
|
117
123
|
// model. Warnings ONLY — never changes the exit code (bias to under-flagging).
|
|
118
124
|
// Suppressed with --no-antipatterns or META_NO_ANTIPATTERNS=1 for the rare
|
|
119
125
|
// noisy project (both opt-outs work on `meta verify` and `meta gen`).
|
|
120
126
|
if (!flags.noAntipatterns && process.env.META_NO_ANTIPATTERNS !== "1")
|
|
121
127
|
runAntiPatternAdvisory();
|
|
122
|
-
return Math.max(templateExit, schemaExit, codegenExit);
|
|
128
|
+
return Math.max(templateExit, schemaExit, codegenExit, requirementExit);
|
|
129
|
+
// -- requirements (#290) ---------------------------------------------------
|
|
130
|
+
function runRequirementVerify() {
|
|
131
|
+
// `@verifiedBy` resolution needs the project on disk, so it is a separate
|
|
132
|
+
// scan; its diagnostics carry the same severities and share this reporter.
|
|
133
|
+
const diags = [...checkRequirements(root), ...checkVerifiedBy(root, cwd)];
|
|
134
|
+
if (diags.length === 0)
|
|
135
|
+
return 0;
|
|
136
|
+
const errors = diags.filter((d) => d.severity === "error");
|
|
137
|
+
const warns = diags.filter((d) => d.severity === "warn");
|
|
138
|
+
const CAP = 20;
|
|
139
|
+
for (const d of errors)
|
|
140
|
+
log.error(` ${d.code}${d.name !== undefined ? ` [${d.name}]` : ""}: ${d.message}`);
|
|
141
|
+
for (const d of warns.slice(0, CAP)) {
|
|
142
|
+
log.warn(` ${d.code}${d.name !== undefined ? ` [${d.name}]` : ""}: ${d.message}`);
|
|
143
|
+
}
|
|
144
|
+
if (warns.length > CAP)
|
|
145
|
+
log.warn(` …and ${warns.length - CAP} more.`);
|
|
146
|
+
if (errors.length > 0) {
|
|
147
|
+
log.error(`meta verify — requirements: ${errors.length} error(s).`);
|
|
148
|
+
return 1;
|
|
149
|
+
}
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
123
152
|
// -- verify-as-teacher (advisory) ------------------------------------------
|
|
124
153
|
function runAntiPatternAdvisory() {
|
|
125
154
|
let findings;
|
|
@@ -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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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type Stack } from "@metaobjectsdev/sdk/agent-context";
|
|
2
|
-
/** Resolve the stack: explicit --server/--client overrides take precedence; otherwise detect.
|
|
2
|
+
/** Resolve the stack: explicit --server/--client overrides take precedence; otherwise detect.
|
|
3
|
+
* Concern tokens (e.g. requirements) are always OBSERVED from project state, independent of
|
|
4
|
+
* any --server/--client override — a concern is not a stack axis. */
|
|
3
5
|
export declare function resolveStack(cwd: string, overrides: {
|
|
4
6
|
servers: string[];
|
|
5
7
|
clients: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-stack.d.ts","sourceRoot":"","sources":["../../../src/lib/detect-stack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detect-stack.d.ts","sourceRoot":"","sources":["../../../src/lib/detect-stack.ts"],"names":[],"mappings":"AAGA,OAAO,EAEkC,KAAK,KAAK,EAElD,MAAM,mCAAmC,CAAC;AA+D3C;;qEAEqE;AACrE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,KAAK,CAUpG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { detectStack, makeStack, SERVER_LANGS, CLIENT_FRAMEWORKS, } from "@metaobjectsdev/sdk/agent-context";
|
|
3
|
+
import { detectStack, detectConcerns, makeStack, SERVER_LANGS, CLIENT_FRAMEWORKS, } from "@metaobjectsdev/sdk/agent-context";
|
|
4
4
|
function depNames(cwd) {
|
|
5
5
|
const out = new Set();
|
|
6
6
|
const pkgPath = join(cwd, "package.json");
|
|
@@ -16,23 +16,68 @@ function depNames(cwd) {
|
|
|
16
16
|
}
|
|
17
17
|
return out;
|
|
18
18
|
}
|
|
19
|
+
const METADATA_DIR = "metaobjects";
|
|
20
|
+
const METADATA_FILE_PATTERN = /\.(json|ya?ml)$/i;
|
|
21
|
+
// Cheap substring probe, not a metamodel load: matches both canonical JSON's
|
|
22
|
+
// quoted `"requirement.functional"` key and sigil-free YAML's bare
|
|
23
|
+
// `requirement.functional:` authoring form.
|
|
24
|
+
const REQUIREMENT_NODE_MARKER = "requirement.";
|
|
25
|
+
/** Recursively scans `metaobjects/` for any `.json`/`.yaml`/`.yml` file containing a
|
|
26
|
+
* `requirement.*` node marker. Defensive throughout: a missing/unreadable directory
|
|
27
|
+
* or file is treated as "not found", never thrown — this is a cheap heuristic, not
|
|
28
|
+
* a metamodel load. */
|
|
29
|
+
function hasRequirementNodes(cwd) {
|
|
30
|
+
const root = join(cwd, METADATA_DIR);
|
|
31
|
+
if (!existsSync(root))
|
|
32
|
+
return false;
|
|
33
|
+
const pending = [root];
|
|
34
|
+
while (pending.length > 0) {
|
|
35
|
+
const dir = pending.pop();
|
|
36
|
+
let entries;
|
|
37
|
+
try {
|
|
38
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
continue; // unreadable directory — skip it, keep scanning siblings
|
|
42
|
+
}
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
const full = join(dir, entry.name);
|
|
45
|
+
if (entry.isDirectory()) {
|
|
46
|
+
pending.push(full);
|
|
47
|
+
}
|
|
48
|
+
else if (METADATA_FILE_PATTERN.test(entry.name)) {
|
|
49
|
+
try {
|
|
50
|
+
if (readFileSync(full, "utf8").includes(REQUIREMENT_NODE_MARKER))
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch { /* unreadable file — treat as no match */ }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
19
59
|
function probe(cwd) {
|
|
20
60
|
const deps = depNames(cwd);
|
|
21
61
|
const names = existsSync(cwd) ? readdirSync(cwd) : [];
|
|
22
62
|
return {
|
|
23
63
|
hasDep: (name) => deps.has(name),
|
|
24
64
|
hasFileMatching: (re) => names.some((n) => re.test(n)),
|
|
65
|
+
hasRequirementNodes: () => hasRequirementNodes(cwd),
|
|
25
66
|
};
|
|
26
67
|
}
|
|
27
|
-
/** Resolve the stack: explicit --server/--client overrides take precedence; otherwise detect.
|
|
68
|
+
/** Resolve the stack: explicit --server/--client overrides take precedence; otherwise detect.
|
|
69
|
+
* Concern tokens (e.g. requirements) are always OBSERVED from project state, independent of
|
|
70
|
+
* any --server/--client override — a concern is not a stack axis. */
|
|
28
71
|
export function resolveStack(cwd, overrides) {
|
|
29
72
|
const validServers = SERVER_LANGS;
|
|
30
73
|
const validClients = CLIENT_FRAMEWORKS;
|
|
31
74
|
const oServers = overrides.servers.filter((s) => validServers.includes(s));
|
|
32
75
|
const oClients = overrides.clients.filter((c) => validClients.includes(c));
|
|
76
|
+
const p = probe(cwd);
|
|
77
|
+
const concerns = detectConcerns(p);
|
|
33
78
|
if (oServers.length > 0 || oClients.length > 0)
|
|
34
|
-
return makeStack(oServers, oClients);
|
|
35
|
-
const detected = detectStack(
|
|
36
|
-
return makeStack(detected.servers, detected.clients);
|
|
79
|
+
return makeStack(oServers, oClients, concerns);
|
|
80
|
+
const detected = detectStack(p);
|
|
81
|
+
return makeStack(detected.servers, detected.clients, concerns);
|
|
37
82
|
}
|
|
38
83
|
//# sourceMappingURL=detect-stack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-stack.js","sourceRoot":"","sources":["../../../src/lib/detect-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"detect-stack.js","sourceRoot":"","sources":["../../../src/lib/detect-stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type MetaData, type MetaRequirement } from "@metaobjectsdev/metadata";
|
|
2
|
+
export type Severity = "error" | "warn";
|
|
3
|
+
export interface Diagnostic {
|
|
4
|
+
severity: Severity;
|
|
5
|
+
code: string;
|
|
6
|
+
/** The requirement node's name, when the diagnostic belongs to one. */
|
|
7
|
+
name?: string;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const ERR_REQUIREMENT_LINK_ABOVE_FLOOR = "ERR_REQUIREMENT_LINK_ABOVE_FLOOR";
|
|
11
|
+
export declare const ERR_REQUIREMENT_DANGLING_REF = "ERR_REQUIREMENT_DANGLING_REF";
|
|
12
|
+
export declare const ERR_REQUIREMENT_BAD_LEVEL = "ERR_REQUIREMENT_BAD_LEVEL";
|
|
13
|
+
export declare const ERR_REQUIREMENT_LEVEL_NESTING = "ERR_REQUIREMENT_LEVEL_NESTING";
|
|
14
|
+
export declare const ERR_REQUIREMENT_L4_NOT_OBJECT = "ERR_REQUIREMENT_L4_NOT_OBJECT";
|
|
15
|
+
export declare const ERR_REQUIREMENT_L5_NOT_MEMBER = "ERR_REQUIREMENT_L5_NOT_MEMBER";
|
|
16
|
+
export declare const ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS = "ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS";
|
|
17
|
+
export declare const WARN_REQUIREMENT_OBJECT_UNCLAIMED = "WARN_REQUIREMENT_OBJECT_UNCLAIMED";
|
|
18
|
+
/** Severity of the object-coverage gate. Promotion to `"error"` is a one-line
|
|
19
|
+
* flip here, which activates an already-written test rather than requiring new
|
|
20
|
+
* authoring under release pressure.
|
|
21
|
+
*
|
|
22
|
+
* It stays `"warn"`, and the reason is measured rather than cautious:
|
|
23
|
+
*
|
|
24
|
+
* - On a real 120-file estate carrying a SINGLE requirement, this gate reports
|
|
25
|
+
* 93 unclaimed entities — every entity in the repository. At `"error"` a
|
|
26
|
+
* project adopting requirements incrementally fails its first `verify` after
|
|
27
|
+
* authoring one entry, which teaches people to delete the entry.
|
|
28
|
+
* - The gate is satisfiable without being informative: `claimedObjects` below
|
|
29
|
+
* counts a claim from any requirement at any level and any status, so
|
|
30
|
+
* appending an FQN to an existing list clears it. Green proves an entity is
|
|
31
|
+
* NAMED, never that it is understood.
|
|
32
|
+
* - The experiment meant to settle whether forcing it yields real entries or
|
|
33
|
+
* padding stopped at its ceiling probe: at `"warn"` agents already authored
|
|
34
|
+
* proper L3/L4/L5 entries for what they added, so the arms could not differ.
|
|
35
|
+
* That is not evidence promotion is useless — it is evidence that instrument
|
|
36
|
+
* cannot see it.
|
|
37
|
+
*
|
|
38
|
+
* spec/design-docs/2026-08-11-prereg-duplication-and-levels.md, "Round E result". */
|
|
39
|
+
export declare const OBJECT_COVERAGE_SEVERITY: Severity;
|
|
40
|
+
/**
|
|
41
|
+
* Split a member reference into its owning object ref and the dotted member path.
|
|
42
|
+
* `::` qualifies the ROOT-level node only, so the object ref ends at the FIRST
|
|
43
|
+
* `.` after the last `::`.
|
|
44
|
+
* `acme::sales::Order.total.display` -> `["acme::sales::Order", ["total","display"]]`
|
|
45
|
+
*/
|
|
46
|
+
export declare function splitMemberRef(ref: string): {
|
|
47
|
+
owner: string;
|
|
48
|
+
path: string[];
|
|
49
|
+
};
|
|
50
|
+
/** Every `requirement.*` node in the tree, at any nesting depth. Hierarchy IS
|
|
51
|
+
* nesting — an L1 solution contains its L2 segments — so this is a walk, not a
|
|
52
|
+
* scan of a flat list keyed by a `parent` string. */
|
|
53
|
+
export declare function collectRequirements(root: MetaData): MetaRequirement[];
|
|
54
|
+
/**
|
|
55
|
+
* Check the requirement tree against the loaded model.
|
|
56
|
+
*
|
|
57
|
+
* What a clean run proves: referential integrity — links sit at or below the
|
|
58
|
+
* link floor, nesting agrees with levels, and references resolve. What it CANNOT
|
|
59
|
+
* prove: that a status is *true*, or that a node actually implements the
|
|
60
|
+
* requirement claiming it. No test can. That truth is the adopter's job.
|
|
61
|
+
*/
|
|
62
|
+
export declare function checkRequirements(root: MetaData): Diagnostic[];
|
|
63
|
+
//# sourceMappingURL=requirement-check.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// `meta verify` — the requirement (capability) gate.
|
|
2
|
+
//
|
|
3
|
+
// Requirements are METADATA: `requirement.functional` / `requirement.architectural`
|
|
4
|
+
// are registered metamodel types, declared in `metaobjects/` beside the entities
|
|
5
|
+
// they describe. So this file parses NOTHING. It reads `requirement.*` nodes off
|
|
6
|
+
// the already-loaded model and checks the things the loader cannot.
|
|
7
|
+
//
|
|
8
|
+
// Division of labour, and the reason for it:
|
|
9
|
+
//
|
|
10
|
+
// LOADER (unconditional) the `@status` enum via `allowedValues`, required
|
|
11
|
+
// attrs, child rules, levels being integers.
|
|
12
|
+
// VERIFY (conditional) `@implementedBy` resolution, whose SEVERITY DEPENDS
|
|
13
|
+
// ON `@status`. A loader `references` descriptor
|
|
14
|
+
// always errors on an unresolved target, and an
|
|
15
|
+
// `abandoned` requirement exists precisely to name
|
|
16
|
+
// nodes that are gone — declaring it there would make
|
|
17
|
+
// the entries carrying the mechanism's only controlled
|
|
18
|
+
// evidence fail to load.
|
|
19
|
+
//
|
|
20
|
+
// Two kinds, opposite checks: `functional` fails when NOTHING implements it;
|
|
21
|
+
// `architectural` fails when something VIOLATES it (v1: an empty claim set on a
|
|
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";
|
|
24
|
+
export const ERR_REQUIREMENT_LINK_ABOVE_FLOOR = "ERR_REQUIREMENT_LINK_ABOVE_FLOOR";
|
|
25
|
+
export const ERR_REQUIREMENT_DANGLING_REF = "ERR_REQUIREMENT_DANGLING_REF";
|
|
26
|
+
export const ERR_REQUIREMENT_BAD_LEVEL = "ERR_REQUIREMENT_BAD_LEVEL";
|
|
27
|
+
export const ERR_REQUIREMENT_LEVEL_NESTING = "ERR_REQUIREMENT_LEVEL_NESTING";
|
|
28
|
+
export const ERR_REQUIREMENT_L4_NOT_OBJECT = "ERR_REQUIREMENT_L4_NOT_OBJECT";
|
|
29
|
+
export const ERR_REQUIREMENT_L5_NOT_MEMBER = "ERR_REQUIREMENT_L5_NOT_MEMBER";
|
|
30
|
+
export const ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS = "ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS";
|
|
31
|
+
export const WARN_REQUIREMENT_OBJECT_UNCLAIMED = "WARN_REQUIREMENT_OBJECT_UNCLAIMED";
|
|
32
|
+
/** Severity of the object-coverage gate. Promotion to `"error"` is a one-line
|
|
33
|
+
* flip here, which activates an already-written test rather than requiring new
|
|
34
|
+
* authoring under release pressure.
|
|
35
|
+
*
|
|
36
|
+
* It stays `"warn"`, and the reason is measured rather than cautious:
|
|
37
|
+
*
|
|
38
|
+
* - On a real 120-file estate carrying a SINGLE requirement, this gate reports
|
|
39
|
+
* 93 unclaimed entities — every entity in the repository. At `"error"` a
|
|
40
|
+
* project adopting requirements incrementally fails its first `verify` after
|
|
41
|
+
* authoring one entry, which teaches people to delete the entry.
|
|
42
|
+
* - The gate is satisfiable without being informative: `claimedObjects` below
|
|
43
|
+
* counts a claim from any requirement at any level and any status, so
|
|
44
|
+
* appending an FQN to an existing list clears it. Green proves an entity is
|
|
45
|
+
* NAMED, never that it is understood.
|
|
46
|
+
* - The experiment meant to settle whether forcing it yields real entries or
|
|
47
|
+
* padding stopped at its ceiling probe: at `"warn"` agents already authored
|
|
48
|
+
* proper L3/L4/L5 entries for what they added, so the arms could not differ.
|
|
49
|
+
* That is not evidence promotion is useless — it is evidence that instrument
|
|
50
|
+
* cannot see it.
|
|
51
|
+
*
|
|
52
|
+
* spec/design-docs/2026-08-11-prereg-duplication-and-levels.md, "Round E result". */
|
|
53
|
+
export const OBJECT_COVERAGE_SEVERITY = "warn";
|
|
54
|
+
/**
|
|
55
|
+
* Split a member reference into its owning object ref and the dotted member path.
|
|
56
|
+
* `::` qualifies the ROOT-level node only, so the object ref ends at the FIRST
|
|
57
|
+
* `.` after the last `::`.
|
|
58
|
+
* `acme::sales::Order.total.display` -> `["acme::sales::Order", ["total","display"]]`
|
|
59
|
+
*/
|
|
60
|
+
export function splitMemberRef(ref) {
|
|
61
|
+
const pkgEnd = ref.lastIndexOf(PACKAGE_SEPARATOR);
|
|
62
|
+
const from = pkgEnd === -1 ? 0 : pkgEnd + PACKAGE_SEPARATOR.length;
|
|
63
|
+
const dot = ref.indexOf(".", from);
|
|
64
|
+
if (dot === -1)
|
|
65
|
+
return { owner: ref, path: [] };
|
|
66
|
+
return { owner: ref.slice(0, dot), path: ref.slice(dot + 1).split(".") };
|
|
67
|
+
}
|
|
68
|
+
/** Walk dotted member segments by CHILD NAME from an object node. */
|
|
69
|
+
function resolveMember(obj, path) {
|
|
70
|
+
let cur = obj;
|
|
71
|
+
for (const seg of path) {
|
|
72
|
+
if (cur === undefined)
|
|
73
|
+
return undefined;
|
|
74
|
+
cur = cur.children().find((c) => c.name === seg);
|
|
75
|
+
}
|
|
76
|
+
return cur;
|
|
77
|
+
}
|
|
78
|
+
/** Every `requirement.*` node in the tree, at any nesting depth. Hierarchy IS
|
|
79
|
+
* nesting — an L1 solution contains its L2 segments — so this is a walk, not a
|
|
80
|
+
* scan of a flat list keyed by a `parent` string. */
|
|
81
|
+
export function collectRequirements(root) {
|
|
82
|
+
const out = [];
|
|
83
|
+
const walk = (n) => {
|
|
84
|
+
for (const c of n.children()) {
|
|
85
|
+
if (c.type === TYPE_REQUIREMENT)
|
|
86
|
+
out.push(c);
|
|
87
|
+
walk(c);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
walk(root);
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Check the requirement tree against the loaded model.
|
|
95
|
+
*
|
|
96
|
+
* What a clean run proves: referential integrity — links sit at or below the
|
|
97
|
+
* link floor, nesting agrees with levels, and references resolve. What it CANNOT
|
|
98
|
+
* prove: that a status is *true*, or that a node actually implements the
|
|
99
|
+
* requirement claiming it. No test can. That truth is the adopter's job.
|
|
100
|
+
*/
|
|
101
|
+
export function checkRequirements(root) {
|
|
102
|
+
const out = [];
|
|
103
|
+
const reqs = collectRequirements(root);
|
|
104
|
+
if (reqs.length === 0)
|
|
105
|
+
return out; // opt-in by declaration — no requirements, nothing to say
|
|
106
|
+
const claimedObjects = new Set();
|
|
107
|
+
for (const req of reqs) {
|
|
108
|
+
const architectural = req.subType === REQUIREMENT_SUBTYPE_ARCHITECTURAL;
|
|
109
|
+
const level = req.level();
|
|
110
|
+
const refs = req.implementedBy();
|
|
111
|
+
if (!architectural) {
|
|
112
|
+
if (level === undefined || !Number.isInteger(level)
|
|
113
|
+
|| level < REQUIREMENT_MIN_LEVEL || level > REQUIREMENT_MAX_LEVEL) {
|
|
114
|
+
out.push({
|
|
115
|
+
severity: "error", code: ERR_REQUIREMENT_BAD_LEVEL, name: req.name,
|
|
116
|
+
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.`,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Nesting IS the hierarchy, so a child must sit strictly below its parent.
|
|
121
|
+
const parent = req.parent;
|
|
122
|
+
if (parent !== undefined && parent.type === TYPE_REQUIREMENT) {
|
|
123
|
+
const pl = parent.level();
|
|
124
|
+
if (pl !== undefined && level !== undefined && level <= pl) {
|
|
125
|
+
out.push({
|
|
126
|
+
severity: "error", code: ERR_REQUIREMENT_LEVEL_NESTING, name: req.name,
|
|
127
|
+
message: `nested under "${parent.name}" (level ${pl}) but declares level ${level}. ` +
|
|
128
|
+
`Nesting is the hierarchy — a child sits strictly below its parent.`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// -- the link boundary ----------------------------------------------------
|
|
134
|
+
if (refs.length > 0 && !req.mayReferenceModel()) {
|
|
135
|
+
out.push({
|
|
136
|
+
severity: "error", code: ERR_REQUIREMENT_LINK_ABOVE_FLOOR, name: req.name,
|
|
137
|
+
message: `'implementedBy' is legal at L${REQUIREMENT_LINK_FLOOR_LEVEL} (object) and ` +
|
|
138
|
+
`L${REQUIREMENT_MAX_LEVEL} (member) only. L1-L3 are organisational and never reference ` +
|
|
139
|
+
`the model — move the links to a nested L${REQUIREMENT_LINK_FLOOR_LEVEL} child.`,
|
|
140
|
+
});
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
for (const ref of refs) {
|
|
144
|
+
const { owner, path } = splitMemberRef(ref);
|
|
145
|
+
// referrerPkg is the requirement's own effective package, so a bare ref
|
|
146
|
+
// binds package-locally under the ADR-0042 contract — the loader's own
|
|
147
|
+
// resolver, never a parallel name scan (#228).
|
|
148
|
+
const referrerPkg = req.package ?? req.fileDefaultPackage ?? "";
|
|
149
|
+
const { node } = resolveObjectRef(root, owner, referrerPkg);
|
|
150
|
+
const isObjectRef = path.length === 0;
|
|
151
|
+
if (node !== undefined && (isObjectRef || resolveMember(node, path) !== undefined)) {
|
|
152
|
+
claimedObjects.add(node.resolutionKey());
|
|
153
|
+
}
|
|
154
|
+
if (!architectural && level === REQUIREMENT_LINK_FLOOR_LEVEL && !isObjectRef) {
|
|
155
|
+
out.push({
|
|
156
|
+
severity: "error", code: ERR_REQUIREMENT_L4_NOT_OBJECT, name: req.name,
|
|
157
|
+
message: `L${REQUIREMENT_LINK_FLOOR_LEVEL} references an object; '${ref}' names a member. ` +
|
|
158
|
+
`Move it to a nested L${REQUIREMENT_LEVEL_MEMBER} child, or reference the object itself.`,
|
|
159
|
+
});
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (!architectural && level === REQUIREMENT_LEVEL_MEMBER && isObjectRef) {
|
|
163
|
+
out.push({
|
|
164
|
+
severity: "error", code: ERR_REQUIREMENT_L5_NOT_MEMBER, name: req.name,
|
|
165
|
+
message: `L${REQUIREMENT_LEVEL_MEMBER} references a member (field, view or identity); ` +
|
|
166
|
+
`'${ref}' names an object. Move it to its L${REQUIREMENT_LINK_FLOOR_LEVEL} parent.`,
|
|
167
|
+
});
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
const resolved = node !== undefined && (isObjectRef || resolveMember(node, path) !== undefined);
|
|
171
|
+
if (!resolved) {
|
|
172
|
+
// Severity is CONDITIONAL ON STATUS, and the asymmetry inverts as a pair.
|
|
173
|
+
// On abandoned/superseded the nodes are SUPPOSED to be gone — that is the
|
|
174
|
+
// entry doing its job, and the reason this check cannot live in the loader.
|
|
175
|
+
if (req.requiresLiveNodes()) {
|
|
176
|
+
out.push({
|
|
177
|
+
severity: "error", code: ERR_REQUIREMENT_DANGLING_REF, name: req.name,
|
|
178
|
+
message: `'${ref}' does not resolve in the loaded model (status '${String(req.status())}' — ` +
|
|
179
|
+
`the model moved and the requirement is stale).` + didYouMeanHint(root, owner),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// -- architectural universality, v1: claim-set arithmetic -----------------
|
|
185
|
+
// A live policy claimed by nothing is the audited-base case: declared and
|
|
186
|
+
// applied to nothing. Deliberately NOT a violation-predicate DSL — that
|
|
187
|
+
// would be the registration this design already argued its way to, arriving
|
|
188
|
+
// a second time through the back door.
|
|
189
|
+
const status = req.status();
|
|
190
|
+
const live = status !== undefined
|
|
191
|
+
&& REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES.includes(status);
|
|
192
|
+
if (architectural && live && refs.length === 0) {
|
|
193
|
+
out.push({
|
|
194
|
+
severity: "error", code: ERR_REQUIREMENT_ARCH_NO_IMPLEMENTERS, name: req.name,
|
|
195
|
+
message: `architectural requirement is '${String(status)}' but nothing implements it. ` +
|
|
196
|
+
`Its check is universality — a claim set of zero means the policy is declared and unapplied.`,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// -- object coverage: adding an entity forces a requirement -----------------
|
|
201
|
+
// Binary per entity, never a ratio: a "% claimed" number measures what the
|
|
202
|
+
// schema can express, is biased against the hardest rules, and invites
|
|
203
|
+
// optimising the number.
|
|
204
|
+
//
|
|
205
|
+
// SCOPE, stated because it is a decision and not an oversight:
|
|
206
|
+
//
|
|
207
|
+
// ENTITIES ONLY. `object.value` and `object.projection` are exempt. A value is a
|
|
208
|
+
// shape (a DTO, a payload, a message) and a projection is DERIVED from an entity
|
|
209
|
+
// that is itself claimable — requiring both to carry their own capability claim
|
|
210
|
+
// would multiply entries without adding information.
|
|
211
|
+
//
|
|
212
|
+
// OBJECT GRAIN ONLY. Fields, views, validators and identities are never required
|
|
213
|
+
// to be claimed. Member-grain coverage is the "thousands of meaningless links"
|
|
214
|
+
// failure `spec/capability-ledger.md` argues against: plumbing members are covered
|
|
215
|
+
// by ARCHITECTURAL requirements with high fan-out (one uuid-PK rule claims every
|
|
216
|
+
// entity), not by a per-member entry. L5 exists so a claim about a specific member
|
|
217
|
+
// CAN be made when it carries real meaning — never so that every member must.
|
|
218
|
+
//
|
|
219
|
+
// So a green run means "every entity is claimed by something", not "every node is
|
|
220
|
+
// 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;
|
|
224
|
+
const key = ent.resolutionKey();
|
|
225
|
+
if (!claimedObjects.has(key)) {
|
|
226
|
+
out.push({
|
|
227
|
+
severity: OBJECT_COVERAGE_SEVERITY, code: WARN_REQUIREMENT_OBJECT_UNCLAIMED,
|
|
228
|
+
message: `no requirement claims '${key}'. Add it to an L${REQUIREMENT_LINK_FLOOR_LEVEL} requirement's 'implementedBy'.`,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return out;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=requirement-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-check.js","sourceRoot":"","sources":["../../../src/lib/requirement-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type MetaData } from "@metaobjectsdev/metadata";
|
|
2
|
+
export declare const ERR_REQUIREMENT_TEST_MISSING = "ERR_REQUIREMENT_TEST_MISSING";
|
|
3
|
+
export declare const WARN_REQUIREMENT_TEST_SKIPPED = "WARN_REQUIREMENT_TEST_SKIPPED";
|
|
4
|
+
export interface VerifiedByDiagnostic {
|
|
5
|
+
severity: "error" | "warn";
|
|
6
|
+
code: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Check every `@verifiedBy` name against the project's test corpus.
|
|
12
|
+
*
|
|
13
|
+
* Severity mirrors `@implementedBy`: a broken claim is an ERROR on `live`/`partial`
|
|
14
|
+
* and silent on `abandoned`/`superseded`, because a retired requirement naming a
|
|
15
|
+
* deleted test is the entry doing its job, not drift.
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkVerifiedBy(root: MetaData, cwd: string): VerifiedByDiagnostic[];
|
|
18
|
+
//# sourceMappingURL=verified-by-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verified-by-scan.d.ts","sourceRoot":"","sources":["../../../src/lib/verified-by-scan.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AA0FD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAoDnF"}
|