@omne-harness/repo-toolchain 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +15 -3
  2. package/README_ZH.md +22 -8
  3. package/dist/arch/conformance-model.d.ts +12 -2
  4. package/dist/arch/conformance-model.d.ts.map +1 -1
  5. package/dist/arch/conformance-model.js.map +1 -1
  6. package/dist/arch/conformance.d.ts +9 -3
  7. package/dist/arch/conformance.d.ts.map +1 -1
  8. package/dist/arch/conformance.js +26 -13
  9. package/dist/arch/conformance.js.map +1 -1
  10. package/dist/arch/constraints.d.ts +20 -1
  11. package/dist/arch/constraints.d.ts.map +1 -1
  12. package/dist/arch/constraints.js +156 -53
  13. package/dist/arch/constraints.js.map +1 -1
  14. package/dist/arch/directions.d.ts +81 -0
  15. package/dist/arch/directions.d.ts.map +1 -0
  16. package/dist/arch/directions.js +221 -0
  17. package/dist/arch/directions.js.map +1 -0
  18. package/dist/arch/report.d.ts.map +1 -1
  19. package/dist/arch/report.js +5 -6
  20. package/dist/arch/report.js.map +1 -1
  21. package/dist/core/version-files.d.ts +11 -0
  22. package/dist/core/version-files.d.ts.map +1 -0
  23. package/dist/core/version-files.js +115 -0
  24. package/dist/core/version-files.js.map +1 -0
  25. package/dist/deps/cli.js +32 -7
  26. package/dist/deps/cli.js.map +1 -1
  27. package/dist/deps/graph.d.ts +30 -2
  28. package/dist/deps/graph.d.ts.map +1 -1
  29. package/dist/deps/graph.js +38 -14
  30. package/dist/deps/graph.js.map +1 -1
  31. package/dist/loop/hook-measure.d.ts.map +1 -1
  32. package/dist/loop/hook-measure.js +4 -3
  33. package/dist/loop/hook-measure.js.map +1 -1
  34. package/dist/loop/run.d.ts +3 -2
  35. package/dist/loop/run.d.ts.map +1 -1
  36. package/dist/loop/run.js +8 -7
  37. package/dist/loop/run.js.map +1 -1
  38. package/dist/loop/sensors/conformance.d.ts +6 -2
  39. package/dist/loop/sensors/conformance.d.ts.map +1 -1
  40. package/dist/loop/sensors/conformance.js +6 -3
  41. package/dist/loop/sensors/conformance.js.map +1 -1
  42. package/dist/metrics/cli.js +4 -1
  43. package/dist/metrics/cli.js.map +1 -1
  44. package/package.json +1 -1
@@ -2,6 +2,8 @@ import { lstatSync, readFileSync, realpathSync } from 'node:fs';
2
2
  import { createHash } from 'node:crypto';
3
3
  import { isAbsolute, join, posix, relative } from 'node:path';
4
4
  import { fileAt, git } from '../core/git.js';
5
+ import { runnerRoot } from '../core/subject.js';
6
+ import { memberOf } from '../deps/graph.js';
5
7
  import { RULE_IDS, } from './conformance-model.js';
6
8
  import { readArchitectureSource, } from './source.js';
7
9
  export const CONSTRAINT_PATH = 'docs/architecture/constraints.json';
@@ -9,8 +11,11 @@ export const LEGACY_CONSTRAINT_PATH = '.meta_harness/design/architecture/constra
9
11
  export const CONSTRAINT_PATHS = [CONSTRAINT_PATH, LEGACY_CONSTRAINT_PATH];
10
12
  const record = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
11
13
  function obj(v, keys) {
12
- if (!record(v) || Object.keys(v).some(key => !keys.includes(key)))
13
- throw new Error('Architecture constraints contain invalid object fields');
14
+ if (!record(v))
15
+ throw new Error('Architecture constraints require objects');
16
+ const unknown = Object.keys(v).filter(key => !keys.includes(key));
17
+ if (unknown.length > 0)
18
+ throw new Error(`Architecture constraints contain unknown fields: ${unknown.join(', ')}`);
14
19
  return v;
15
20
  }
16
21
  function str(v) {
@@ -78,85 +83,168 @@ function importExceptions(value) {
78
83
  }
79
84
  return rows;
80
85
  }
86
+ /**
87
+ * 角色所在的成员目录,按 deps/graph.ts 的 `memberOf` 算(`packages/<组>/<成员>` 或 `apps/<成员>`)。方向行按成员判目标,
88
+ * 所以它引用的角色的每条 `paths` 都必须落在同一个成员里;`examples/` 不是方向行可引用的成员。
89
+ */
90
+ export function roleMember(role) {
91
+ const [member, ...rest] = role.paths.map(path => memberOf(path));
92
+ if (member === undefined || rest.some(other => other?.path !== member.path))
93
+ throw new Error(`Architecture role ${role.id} does not stay inside one member: ${role.paths.join(', ')}`);
94
+ if (member.group === 'examples')
95
+ throw new Error(`Architecture role ${role.id} is in examples/, which directions cannot reference`);
96
+ return member.path;
97
+ }
98
+ /** `pattern` 覆盖 `other`:两者相同,或 `other` 在 `pattern` 的 `/**` 目录之下。 */
99
+ const covers = (pattern, other) => pattern === other || (pattern.endsWith('/**') && other.startsWith(pattern.slice(0, -2)));
100
+ /**
101
+ * 方向行引用的角色:成员唯一,且 `paths` 不与任何别的角色相同或互相包含。否则一个文件会同时属于两个角色,
102
+ * 源的归属就不唯一(更精确的角色会把 `src/**` 的一部分截走)。
103
+ */
104
+ function directionRole(id, roles) {
105
+ const role = roles.get(id);
106
+ if (role === undefined)
107
+ throw new Error(`Architecture direction references unknown role ${id}`);
108
+ const member = roleMember(role);
109
+ for (const other of roles.values()) {
110
+ if (other.id === role.id)
111
+ continue;
112
+ const overlap = role.paths.find(path => other.paths.some(candidate => covers(path, candidate) || covers(candidate, path)));
113
+ if (overlap !== undefined)
114
+ throw new Error(`Architecture role ${role.id} shares or contains the paths of ${other.id}: ${overlap}`);
115
+ }
116
+ return { id, member };
117
+ }
118
+ const DIRECTION_ID = /^DIR-[A-Z0-9]+(?:-[A-Z0-9]+)*$/u;
119
+ function roleRefs(v, roles) {
120
+ const [first, ...rest] = strings(v);
121
+ if (first === undefined)
122
+ throw new Error('Architecture directions require nonempty role lists');
123
+ return [directionRole(first, roles), ...rest.map(id => directionRole(id, roles))];
124
+ }
125
+ const idsOf = ([first, ...rest]) => [
126
+ first.id,
127
+ ...rest.map(ref => ref.id),
128
+ ];
129
+ /**
130
+ * 源角色与目标角色不能在同一个成员里:成员内部的依赖不进依赖图,这样的一对永远不会命中。
131
+ * 同一个角色同时出现在两边是它的特例。
132
+ */
133
+ function rejectSameMember(id, from, to) {
134
+ for (const source of from) {
135
+ const target = to.find(ref => ref.member === source.member);
136
+ if (target !== undefined)
137
+ throw new Error(`Architecture direction ${id} puts source role ${source.id} and target role ${target.id} in the same member ${source.member}`);
138
+ }
139
+ }
140
+ function direction(value, roles) {
141
+ const row = obj(value, ['id', 'from', 'to', 'source']);
142
+ const id = str(row['id']);
143
+ if (!DIRECTION_ID.test(id))
144
+ throw new Error(`Invalid architecture direction id: ${id}`);
145
+ const from = roleRefs(row['from'], roles), to = roleRefs(row['to'], roles);
146
+ rejectSameMember(id, from, to);
147
+ return { id, from: idsOf(from), to: idsOf(to), source: str(row['source']) };
148
+ }
149
+ const LAYERS = [
150
+ 'interaction',
151
+ 'policy',
152
+ 'contract',
153
+ 'storage-port',
154
+ 'storage-adapter',
155
+ 'assembly',
156
+ 'unknown',
157
+ ];
158
+ const STATUSES = ['adopted', 'candidate', 'unknown'];
159
+ function role(item, domainIds) {
160
+ const row = obj(item, ['id', 'paths', 'layer', 'domains', 'status', 'source']);
161
+ const paths = strings(row['paths']).map(safePath), layer = LAYERS.find(v => v === str(row['layer'])), status = STATUSES.find(v => v === str(row['status'])), related = strings(row['domains']);
162
+ if (paths.length === 0 ||
163
+ layer === undefined ||
164
+ status === undefined ||
165
+ related.some(id => !domainIds.has(id)))
166
+ throw new Error('Invalid architecture role');
167
+ return { id: str(row['id']), paths, layer, domains: related, status, source: str(row['source']) };
168
+ }
169
+ function rule(item) {
170
+ const row = obj(item, ['id', 'source']), id = str(row['id']);
171
+ const known = RULE_IDS.find(candidate => candidate === id);
172
+ if (known === undefined)
173
+ throw new Error(`Unknown architecture rule ${id}`);
174
+ return { id: known, source: str(row['source']) };
175
+ }
176
+ /** schema 3 的 `directions`:缺省是没有方向行;给了就必须是数组(`null` 也不行)。 */
177
+ function directions(value, roles) {
178
+ const byId = new Map(roles.map(declared => [declared.id, declared]));
179
+ return unique((value === undefined ? [] : list(value)).map(item => direction(item, byId)));
180
+ }
81
181
  export function parseConstraints(text) {
82
- const value = obj(JSON.parse(text), [
182
+ const parsed = JSON.parse(text);
183
+ if (!record(parsed))
184
+ throw new Error('Architecture constraints require an object');
185
+ const schemaVersion = parsed['schemaVersion'];
186
+ if (schemaVersion !== 1 && schemaVersion !== 2 && schemaVersion !== 3)
187
+ throw new Error('Unsupported architecture constraint schema');
188
+ const value = obj(parsed, [
83
189
  'schemaVersion',
84
190
  'domains',
85
191
  'roles',
86
192
  'rules',
87
193
  'importExceptions',
194
+ ...(schemaVersion === 3 ? ['directions'] : []),
88
195
  ]);
89
- const schemaVersion = value['schemaVersion'];
90
- if (schemaVersion !== 1 && schemaVersion !== 2)
91
- throw new Error('Unsupported architecture constraint schema');
92
196
  const domains = unique(list(value['domains']).map(item => {
93
197
  const row = obj(item, ['id', 'label', 'source']);
94
198
  return { id: str(row['id']), label: str(row['label']), source: str(row['source']) };
95
199
  }));
96
200
  const domainIds = new Set(domains.map(d => d.id));
97
- const layers = [
98
- 'interaction',
99
- 'policy',
100
- 'contract',
101
- 'storage-port',
102
- 'storage-adapter',
103
- 'assembly',
104
- 'unknown',
105
- ];
106
- const roles = unique(list(value['roles']).map((item) => {
107
- const row = obj(item, ['id', 'paths', 'layer', 'domains', 'status', 'source']);
108
- const paths = strings(row['paths']).map(safePath), layer = str(row['layer']), status = str(row['status']), related = strings(row['domains']);
109
- if (paths.length === 0 ||
110
- !layers.some(v => v === layer) ||
111
- !['adopted', 'candidate', 'unknown'].includes(status) ||
112
- related.some(id => !domainIds.has(id)))
113
- throw new Error('Invalid architecture role');
114
- return {
115
- id: str(row['id']),
116
- paths,
117
- layer: layer,
118
- domains: related,
119
- status: status,
120
- source: str(row['source']),
121
- };
122
- }));
123
- const rules = unique(list(value['rules']).map(item => {
124
- const row = obj(item, ['id', 'source']), id = str(row['id']);
125
- const known = RULE_IDS.find(rule => rule === id);
126
- if (known === undefined)
127
- throw new Error(`Unknown architecture rule ${id}`);
128
- return { id: known, source: str(row['source']) };
129
- }));
201
+ const roles = unique(list(value['roles']).map(item => role(item, domainIds)));
130
202
  return {
131
203
  schemaVersion,
132
204
  domains,
133
205
  roles,
134
- rules,
206
+ rules: unique(list(value['rules']).map(rule)),
135
207
  importExceptions: importExceptions(value['importExceptions']),
208
+ ...(schemaVersion === 3 ? { directions: directions(value['directions'], roles) } : {}),
136
209
  };
137
210
  }
211
+ const at = (source) => source.kind === 'worktree' ? { kind: 'worktree' } : { kind: 'revision', commit: source.commit };
212
+ const label = (source) => `${source.kind} ${source.commit}`;
138
213
  export function readConstraints(root, source) {
139
- const document = readDocument(root, source);
214
+ const document = readDocument(root, at(source), label(source));
140
215
  return { ...document, source };
141
216
  }
142
217
  export function readBaselineConstraints(root, baseline) {
143
218
  if (baseline.source.kind !== 'revision')
144
219
  throw new Error('Historical constraint retirement requires a revision snapshot');
145
220
  return {
146
- ...readDocument(root, baseline.source, [...baseline.snapshot.texts.keys()]),
221
+ ...readDocument(root, at(baseline.source), label(baseline.source), [
222
+ ...baseline.snapshot.texts.keys(),
223
+ ]),
147
224
  source: baseline.source,
148
225
  };
149
226
  }
150
227
  const legacySource = (path) => /^(?:apps|packages)\.0\.0\.1\.legacy\//u.test(path);
151
- const matchesRolePath = (path, pattern) => pattern.endsWith('/**') ? path.startsWith(pattern.slice(0, -2)) : path === pattern;
152
- function readDocument(root, source, baselinePaths) {
228
+ export const matchesRolePath = (path, pattern) => pattern.endsWith('/**') ? path.startsWith(pattern.slice(0, -2)) : path === pattern;
229
+ /**
230
+ * 运行检查器的仓库的 `constraints.json`(与 `cruiseConfig()` 同一个根)。`omne-deps` 的方向行只从这里读,
231
+ * 被检查的检出改不了它。文件缺失返回 missing;存在但解析、校验或来源核对失败则抛错。
232
+ */
233
+ export function readRunnerConstraints(root = runnerRoot()) {
234
+ const document = readDocument(root, { kind: 'worktree' }, `runner ${root}`);
235
+ return document.value === null
236
+ ? { kind: 'missing', path: document.path }
237
+ : { kind: 'present', path: document.path, value: document.value };
238
+ }
239
+ /** `where` 只进错误消息,说明读的是哪一版(或哪个 runner)。 */
240
+ function readDocument(root, source, where, baselinePaths) {
153
241
  const read = versionReader(root, source);
154
242
  const present = CONSTRAINT_PATHS.flatMap(path => {
155
243
  const text = read(path);
156
244
  return text === undefined ? [] : [{ path, text }];
157
245
  });
158
246
  if (present.length > 1)
159
- throw new Error(`Ambiguous architecture constraints at ${source.kind} ${source.commit}: ${present.map(item => item.path).join(', ')}`);
247
+ throw new Error(`Ambiguous architecture constraints at ${where}: ${present.map(item => item.path).join(', ')}`);
160
248
  const selected = present[0];
161
249
  if (selected === undefined)
162
250
  return { path: CONSTRAINT_PATH, value: null, sources: [] };
@@ -180,12 +268,12 @@ function readDocument(root, source, baselinePaths) {
180
268
  };
181
269
  }
182
270
  catch (error) {
183
- throw new Error(`${source.kind} ${source.commit} ${selected.path}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
271
+ throw new Error(`${where} ${selected.path}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
184
272
  }
185
273
  }
186
274
  export function constraintDependencies(root, revision) {
187
275
  const { path, value, sources } = revision === undefined
188
- ? readDocument(root, { kind: 'worktree', commit: git(root, ['rev-parse', 'HEAD']) })
276
+ ? readDocument(root, { kind: 'worktree' }, `worktree ${git(root, ['rev-parse', 'HEAD'])}`)
189
277
  : readBaselineConstraints(root, readArchitectureSource(root, revision));
190
278
  if (value === null)
191
279
  return CONSTRAINT_PATHS;
@@ -231,7 +319,7 @@ export function constraintSourcePath(path, schemaVersion, reference) {
231
319
  safePath(decoded);
232
320
  if (!decoded.endsWith('.md'))
233
321
  throw new Error(`Architecture source must be Markdown: ${reference}`);
234
- const rooted = schemaVersion === 2 || /^(?:packages|apps|docs|tools|scripts|\.meta_harness)\//u.test(decoded);
322
+ const rooted = schemaVersion !== 1 || /^(?:packages|apps|docs|tools|scripts|\.meta_harness)\//u.test(decoded);
235
323
  return safePath(rooted ? decoded : posix.join(posix.dirname(path), decoded));
236
324
  }
237
325
  function markdownAnchors(text) {
@@ -287,6 +375,7 @@ function validateConstraintSources(path, value, read) {
287
375
  ...value.roles,
288
376
  ...value.rules,
289
377
  ...(value.importExceptions ?? []),
378
+ ...(value.directions ?? []),
290
379
  ]) {
291
380
  const target = constraintSourcePath(path, value.schemaVersion, row.source);
292
381
  if (legacySource(target))
@@ -308,20 +397,34 @@ function validateConstraintSources(path, value, read) {
308
397
  .sort(([a], [b]) => a.localeCompare(b))
309
398
  .map(([path, digest]) => ({ path, digest }));
310
399
  }
400
+ const sortedById = (items) => [...items].sort((a, b) => a.id.localeCompare(b.id));
401
+ /** 语义比较里的方向行:没有方向行时不出现这个键,所以 schema 3 不写 `directions` 与写空数组语义相同。 */
402
+ function semanticDirections(rows) {
403
+ if (!rows?.length)
404
+ return {};
405
+ return {
406
+ directions: sortedById(rows.map(row => ({
407
+ id: row.id,
408
+ from: [...row.from].sort(),
409
+ to: [...row.to].sort(),
410
+ source: row.source,
411
+ }))),
412
+ };
413
+ }
311
414
  export function semanticConstraints(value) {
312
415
  if (value === null)
313
416
  return null;
314
- const sorted = (items) => [...items].sort((a, b) => a.id.localeCompare(b.id));
315
417
  return JSON.stringify({
316
418
  schemaVersion: value.schemaVersion,
317
- domains: sorted(value.domains),
419
+ domains: sortedById(value.domains),
318
420
  ...(value.importExceptions?.length
319
421
  ? {
320
- importExceptions: sorted(value.importExceptions.map(row => ({ ...row, symbols: [...row.symbols].sort() }))),
422
+ importExceptions: sortedById(value.importExceptions.map(row => ({ ...row, symbols: [...row.symbols].sort() }))),
321
423
  }
322
424
  : {}),
323
- rules: sorted(value.rules),
324
- roles: sorted(value.roles.map(row => ({
425
+ ...semanticDirections(value.directions),
426
+ rules: sortedById(value.rules),
427
+ roles: sortedById(value.roles.map(row => ({
325
428
  id: row.id,
326
429
  paths: [...row.paths].sort(),
327
430
  layer: row.layer,
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/arch/constraints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/arch/constraints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { type DependencyFinding, type DependencyGraph, type FileDependency } from '../deps/graph.ts';
2
+ import type { ArchitectureConstraints, ArchitectureDirection, ArchitectureRole, ConformanceRow } from './conformance-model.ts';
3
+ import type { SourceCoordinates } from './source.ts';
4
+ /** 方向行按成员对展开:每条方向行 × 每个 from 角色 × 每个 to 角色一对。 */
5
+ export interface DirectionPair {
6
+ readonly direction: ArchitectureDirection;
7
+ readonly from: ArchitectureRole;
8
+ readonly to: ArchitectureRole;
9
+ readonly fromMember: string;
10
+ readonly toMember: string;
11
+ }
12
+ export interface DirectionHit {
13
+ readonly pair: DirectionPair;
14
+ readonly dependency: FileDependency;
15
+ }
16
+ export type DirectionPolicy = Pick<ArchitectureConstraints, 'roles' | 'directions'>;
17
+ /** `omne-deps` 的方向发现:命中一条方向行,或源角色、目标角色在被检树里没有文件、不能判方向。 */
18
+ export type DirectionFinding = DependencyFinding<'direction-rule' | 'direction-unknown'>;
19
+ export declare function directionPairs(policy: DirectionPolicy): DirectionPair[];
20
+ /** 成员对去重后的个数:`omne-deps` 汇总行用。 */
21
+ export declare function memberPairCount(pairs: readonly DirectionPair[]): number;
22
+ /** 文件按角色的 `paths` 落在角色里。命中判定与「角色有没有文件」都只用这一条规则,不取最精确的角色。 */
23
+ export declare const inRole: (path: string, role: ArchitectureRole) => boolean;
24
+ /** 一对里在被检树中匹配不到任何文件的角色,以及它在这一对里是源还是目标。 */
25
+ export interface EmptyRole {
26
+ readonly side: 'source' | 'target';
27
+ readonly role: ArchitectureRole;
28
+ }
29
+ /** 一对的判定:哪些角色在被检树里没有文件(有一个就不能判方向),以及命中了哪些依赖。 */
30
+ export interface DirectionJudgement {
31
+ readonly pair: DirectionPair;
32
+ readonly empty: readonly EmptyRole[];
33
+ readonly hits: readonly DirectionHit[];
34
+ }
35
+ /**
36
+ * `omne-deps` 与报告共用的判定:同一份方向行、全部角色、同一张图。源角色与目标角色有没有文件用同一条规则判:
37
+ * 图的 `modules` 里有没有文件落在角色的 `paths` 里。成员改名或迁走后,两边都不能以「命中 0 处」通过。
38
+ */
39
+ export declare function judgeDirections(policy: DirectionPolicy, graph: Pick<DependencyGraph, 'modules' | 'dependencies'>): DirectionJudgement[];
40
+ /**
41
+ * `omne-deps` 的发现:每处命中一条 `direction-rule`,`rule` 是方向行 id,`sites` 是导入处;
42
+ * 源角色或目标角色没有文件的每个(方向行,角色)一条 `direction-unknown`。
43
+ */
44
+ export declare function directionFindings(judgements: readonly DirectionJudgement[]): DirectionFinding[];
45
+ /** 报告能拿到的依赖事实:有图,或者说明为什么没有。 */
46
+ export type DirectionFacts = {
47
+ readonly kind: 'graph';
48
+ readonly graph: Pick<DependencyGraph, 'modules' | 'dependencies'>;
49
+ } | {
50
+ readonly kind: 'unavailable';
51
+ readonly reason: string;
52
+ };
53
+ /** 只把 dependency-cruiser 或 Git 的已知失败记成不可得;别的异常照常抛出。 */
54
+ export declare function directionFacts(read: () => DependencyGraph): DirectionFacts;
55
+ /** 某个版本的依赖图:工作树取当前树(含未提交的改动),历史版本取那个提交。取哪一版只在这里决定。 */
56
+ export declare function versionGraph(root: string, source: Pick<SourceCoordinates, 'kind' | 'commit'>): DependencyGraph;
57
+ /**
58
+ * 架构符合性报告的方向行:每对一行。没有命中为 converged;有命中为 deviation,`reason` 逐处列源文件、
59
+ * 目标文件与行号;源角色或目标角色在被检版本里没有文件、或依赖事实不可得时为 unknown 并写明原因。`age` 一律 unjudged,
60
+ * 由 `directionConformance` 对基线判。
61
+ */
62
+ export declare function directionRows(policy: DirectionPolicy, facts: DirectionFacts): ConformanceRow[];
63
+ /** 读某个版本依赖图的函数;默认是 `versionGraph`,测试可以换成计数的读法。 */
64
+ export type GraphReader = (root: string, source: Pick<SourceCoordinates, 'kind' | 'commit'>) => DependencyGraph;
65
+ /**
66
+ * 报告的方向行一节。方向行与角色只从可信 runner 的 `constraints.json` 读(全部角色,不按退休过滤),
67
+ * 与 `omne-deps` 同一份;runner 没有文件或没有方向行就没有这一节,也不取依赖图。
68
+ * 被检版本与基线版本都用这份方向行,依赖事实各取各的版本:`graph` 是调用方已经算好的被检版本的图。
69
+ * 没给 `graph` 时先按路径看:方向行引用的角色在这个版本的文件清单里都匹配不到文件,就不取图,每一行都是两边角色都没有
70
+ * 文件的 unknown,与取图的结果逐字相同(清单覆盖图的 `modules`,清单里没有的图里也没有)。有一个角色有文件、或清单读不确定,
71
+ * 就照常取图。不取图时看不到取图会遇到的失败(预设坏了、缓存坏了),行写路径原因:结果本来就与图无关。
72
+ * `root` 不必是仓库顶层:清单与取图都按 `root` 下的相对路径读同一棵树。基线版本独立判断。给了基线时偏离行判新旧;基线的图不可得就不判,`age` 留 unjudged,每一行的 `reason` 末尾写明基线依赖事实不可得及原因。
73
+ */
74
+ export declare function directionConformance(input: {
75
+ readonly root: string;
76
+ readonly current: Pick<SourceCoordinates, 'kind' | 'commit'>;
77
+ readonly baseline?: Pick<SourceCoordinates, 'kind' | 'commit'> | undefined;
78
+ readonly graph?: DependencyGraph | undefined;
79
+ readonly readGraph?: GraphReader | undefined;
80
+ }): ConformanceRow[];
81
+ //# sourceMappingURL=directions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directions.d.ts","sourceRoot":"","sources":["../../src/arch/directions.ts"],"names":[],"mappings":"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"}