@ecoma-io/archkeep 0.24.1 → 0.26.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.
- package/cli.mjs +166 -506
- package/commands.mjs +7 -1
- package/package.json +1 -1
- package/src/architecture-intent/judge.mjs +1 -1
- package/src/architecture-intent/model.mjs +34 -0
- package/src/canonical.mjs +2 -1
- package/src/commands/adr-for-workspace.mjs +63 -0
- package/src/commands/analyze-capability.mjs +13 -0
- package/src/commands/change-intent.mjs +11 -0
- package/src/commands/change.mjs +315 -55
- package/src/commands/check-capability.mjs +13 -0
- package/src/commands/check.mjs +13 -3
- package/src/commands/compare-capability.mjs +20 -0
- package/src/commands/completeness.mjs +12 -0
- package/src/commands/context-command.mjs +31 -0
- package/src/commands/coverage-verdict.mjs +15 -2
- package/src/commands/debt.mjs +30 -0
- package/src/commands/decisions.mjs +59 -10
- package/src/commands/delta-snapshot.mjs +25 -4
- package/src/commands/delta.mjs +301 -67
- package/src/commands/diff.mjs +48 -9
- package/src/commands/discover.mjs +37 -0
- package/src/commands/drift.mjs +45 -0
- package/src/commands/evolution.mjs +22 -2
- package/src/commands/explain-capability.mjs +11 -0
- package/src/commands/explain.mjs +24 -0
- package/src/commands/fitness.mjs +119 -10
- package/src/commands/govern-capability.mjs +16 -0
- package/src/commands/graph.mjs +39 -0
- package/src/commands/health.mjs +34 -0
- package/src/commands/history.mjs +119 -2
- package/src/commands/impact.mjs +23 -0
- package/src/commands/inspect-capability.mjs +16 -0
- package/src/commands/plan-context-command.mjs +35 -0
- package/src/commands/policy.mjs +42 -4
- package/src/commands/provenance-command.mjs +15 -24
- package/src/commands/report.mjs +38 -0
- package/src/commands/rules-capability.mjs +16 -0
- package/src/commands/rules.mjs +3 -1
- package/src/commands/scenario.mjs +23 -0
- package/src/commands/snapshot-meta.mjs +33 -0
- package/src/commands/trajectory.mjs +35 -0
- package/src/commands/waivers.mjs +30 -0
- package/src/corpus/goldens/.gitkeep +0 -0
- package/src/corpus/goldens/adr.json +62 -0
- package/src/corpus/goldens/adr.text +6 -0
- package/src/corpus/goldens/change.json +98 -0
- package/src/corpus/goldens/change.text +6 -0
- package/src/corpus/goldens/check.json +90 -0
- package/src/corpus/goldens/check.sarif +479 -0
- package/src/corpus/goldens/check.text +9 -0
- package/src/corpus/goldens/context.json +47 -0
- package/src/corpus/goldens/context.text +6 -0
- package/src/corpus/goldens/debt.json +59 -0
- package/src/corpus/goldens/debt.text +7 -0
- package/src/corpus/goldens/decisions.json +74 -0
- package/src/corpus/goldens/decisions.text +7 -0
- package/src/corpus/goldens/delta.json +94 -0
- package/src/corpus/goldens/delta.sarif +472 -0
- package/src/corpus/goldens/delta.text +5 -0
- package/src/corpus/goldens/diff.json +58 -0
- package/src/corpus/goldens/diff.text +4 -0
- package/src/corpus/goldens/discover.json +77 -0
- package/src/corpus/goldens/discover.text +10 -0
- package/src/corpus/goldens/drift.json +43 -0
- package/src/corpus/goldens/drift.text +3 -0
- package/src/corpus/goldens/evolution.json +328 -0
- package/src/corpus/goldens/evolution.text +32 -0
- package/src/corpus/goldens/explain.json +60 -0
- package/src/corpus/goldens/explain.text +7 -0
- package/src/corpus/goldens/fitness.json +45 -0
- package/src/corpus/goldens/fitness.text +3 -0
- package/src/corpus/goldens/graph.json +78 -0
- package/src/corpus/goldens/graph.text +10 -0
- package/src/corpus/goldens/health.json +72 -0
- package/src/corpus/goldens/health.text +10 -0
- package/src/corpus/goldens/help.text +104 -0
- package/src/corpus/goldens/history.json +43 -0
- package/src/corpus/goldens/history.text +4 -0
- package/src/corpus/goldens/impact.json +327 -0
- package/src/corpus/goldens/impact.text +10 -0
- package/src/corpus/goldens/provenance.json +453 -0
- package/src/corpus/goldens/provenance.text +14 -0
- package/src/corpus/goldens/reconcile.json +168 -0
- package/src/corpus/goldens/reconcile.text +3 -0
- package/src/corpus/goldens/report.json +168 -0
- package/src/corpus/goldens/report.text +42 -0
- package/src/corpus/goldens/rules verify.json +0 -0
- package/src/corpus/goldens/rules verify.text +0 -0
- package/src/corpus/goldens/scenario.json +441 -0
- package/src/corpus/goldens/scenario.text +28 -0
- package/src/corpus/goldens/trajectory.json +83 -0
- package/src/corpus/goldens/trajectory.text +10 -0
- package/src/corpus/goldens/usage-error.text +105 -0
- package/src/corpus/goldens/waivers.json +40 -0
- package/src/corpus/goldens/waivers.text +1 -0
- package/src/corpus/goldens-lsp/initialize.result.json +15 -0
- package/src/corpus/goldens-lsp/publish-cleared-empty.json +4 -0
- package/src/corpus/goldens-lsp/publish-fixed-empty.json +5 -0
- package/src/corpus/goldens-lsp/publish-unparseable.json +54 -0
- package/src/corpus/goldens-lsp/publish-violation.json +22 -0
- package/src/corpus/goldens-lsp/register-watched-files.json +72 -0
- package/src/custom-rules/values.mjs +1 -4
- package/src/go-work.mjs +8 -23
- package/src/governance/evolution-event.mjs +15 -0
- package/src/governance/evolution-store.mjs +59 -31
- package/src/governance/fitness-registry.mjs +14 -1
- package/src/governance/provenance-record.mjs +0 -152
- package/src/governance/verdict.mjs +62 -7
- package/src/intent/intent-manifest.json +22 -16
- package/src/lsp/server.mjs +5 -8
- package/src/lsp/workspace-index.mjs +55 -220
- package/src/options.mjs +10 -0
- package/src/providers/native/discover.mjs +13 -12
- package/src/providers/native/model.mjs +8 -3
- package/src/providers/nx-static.mjs +231 -0
- package/src/report/json.mjs +7 -4
- package/src/report/sarif.mjs +8 -3
- package/src/rules/edge-constraints.mjs +9 -0
- package/src/rules/index.mjs +26 -10
- package/src/rules/messages.mjs +64 -14
- package/src/rules/specifiers.mjs +21 -20
- package/src/tsconfig-paths.mjs +8 -14
- package/src/values.mjs +11 -0
- package/src/verdict.mjs +127 -16
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"tool": {
|
|
4
|
+
"name": "@ecoma-io/archkeep",
|
|
5
|
+
"version": "0.26.0"
|
|
6
|
+
},
|
|
7
|
+
"command": "debt",
|
|
8
|
+
"workspace": {
|
|
9
|
+
"root": "/tmp/archkeep-golden-fixture",
|
|
10
|
+
"provider": "native",
|
|
11
|
+
"marker": "archkeep.json",
|
|
12
|
+
"provenance": {
|
|
13
|
+
"commit": "1fd51709c377d99a6139891e1200291cf08aede9",
|
|
14
|
+
"remote": null,
|
|
15
|
+
"dirty": false
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"status": "ok",
|
|
19
|
+
"exitCode": 0,
|
|
20
|
+
"coverage": {
|
|
21
|
+
"complete": true,
|
|
22
|
+
"projects": 3,
|
|
23
|
+
"analyzedFiles": 3,
|
|
24
|
+
"imports": 2,
|
|
25
|
+
"notAnalyzed": [],
|
|
26
|
+
"blindSpots": [],
|
|
27
|
+
"notes": [
|
|
28
|
+
"ledger ages are snapshot-relative; 0 entries derived across 1 snapshot",
|
|
29
|
+
"sampleTime is the wall clock at the moment of this run, not a fact about the workspace — it is expected to differ between two runs of an unchanged tree and should be excluded from any diff or hash meant to detect real change. Every other field here is deterministic given the same law, history directory and tree.",
|
|
30
|
+
"no event store linked — lifecycle refs unavailable"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"result": {
|
|
34
|
+
"dir": "/tmp/archkeep-golden-fixture/.archkeep-history",
|
|
35
|
+
"snapshots": 1,
|
|
36
|
+
"agings": false,
|
|
37
|
+
"sampleTime": "2026-09-07T06:50:29.512Z",
|
|
38
|
+
"entries": [],
|
|
39
|
+
"resolved": [],
|
|
40
|
+
"total": 0,
|
|
41
|
+
"byKind": {
|
|
42
|
+
"waiver": 0,
|
|
43
|
+
"expired-waiver": 0,
|
|
44
|
+
"aspirational-gap": 0,
|
|
45
|
+
"drift": 0,
|
|
46
|
+
"unresolved": 0
|
|
47
|
+
},
|
|
48
|
+
"bySeverity": {
|
|
49
|
+
"high": 0,
|
|
50
|
+
"medium": 0,
|
|
51
|
+
"low": 0
|
|
52
|
+
},
|
|
53
|
+
"lifecycle": {
|
|
54
|
+
"linked": false,
|
|
55
|
+
"note": "no event store linked — lifecycle refs unavailable"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
debt /tmp/archkeep-golden-fixture/.archkeep-history
|
|
2
|
+
0 entries across 1 snapshot — ages not yet established (fewer than two snapshots)
|
|
3
|
+
✔ no architecture debt — no waivers, aspirational gaps, drift or unresolved intent
|
|
4
|
+
no event store linked — lifecycle refs unavailable
|
|
5
|
+
total 0 entries · byKind: waiver 0, expired-waiver 0, aspirational-gap 0, drift 0, unresolved 0 · bySeverity: high 0, medium 0, low 0
|
|
6
|
+
sampled 2026-09-07T06:50:29.192Z
|
|
7
|
+
✔ complete (2 imports in 3 files across 3 projects)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"tool": {
|
|
4
|
+
"name": "@ecoma-io/archkeep",
|
|
5
|
+
"version": "0.26.0"
|
|
6
|
+
},
|
|
7
|
+
"command": "decisions",
|
|
8
|
+
"workspace": {
|
|
9
|
+
"root": "/tmp/archkeep-golden-fixture",
|
|
10
|
+
"provider": "native",
|
|
11
|
+
"marker": "docs/adr",
|
|
12
|
+
"provenance": null
|
|
13
|
+
},
|
|
14
|
+
"status": "no-verdict",
|
|
15
|
+
"exitCode": 3,
|
|
16
|
+
"coverage": {
|
|
17
|
+
"complete": false,
|
|
18
|
+
"projects": 3,
|
|
19
|
+
"analyzedFiles": 3,
|
|
20
|
+
"imports": 2,
|
|
21
|
+
"notAnalyzed": [
|
|
22
|
+
{
|
|
23
|
+
"file": "intentForbiddenEdge",
|
|
24
|
+
"reason": "\"intentForbiddenEdge\" is bound by 0001-layers but no governed row in the context carries that id"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"blindSpots": [],
|
|
28
|
+
"notes": []
|
|
29
|
+
},
|
|
30
|
+
"result": {
|
|
31
|
+
"decisionId": "0001-layers",
|
|
32
|
+
"record": {
|
|
33
|
+
"id": "0001-layers",
|
|
34
|
+
"status": "accepted",
|
|
35
|
+
"supersedes": [],
|
|
36
|
+
"bindings": [
|
|
37
|
+
"intentForbiddenEdge"
|
|
38
|
+
],
|
|
39
|
+
"supersededBy": []
|
|
40
|
+
},
|
|
41
|
+
"walk": {
|
|
42
|
+
"ok": false,
|
|
43
|
+
"nodes": [
|
|
44
|
+
{
|
|
45
|
+
"id": "0001-layers",
|
|
46
|
+
"kind": "decision",
|
|
47
|
+
"label": "0001-layers",
|
|
48
|
+
"data": {
|
|
49
|
+
"status": "accepted"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"edges": [],
|
|
54
|
+
"unresolved": [
|
|
55
|
+
{
|
|
56
|
+
"ref": "intentForbiddenEdge",
|
|
57
|
+
"kind": "binding",
|
|
58
|
+
"reason": "\"intentForbiddenEdge\" is bound by 0001-layers but no governed row in the context carries that id"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"fitness": {
|
|
63
|
+
"id": "0001-layers",
|
|
64
|
+
"status": "accepted",
|
|
65
|
+
"level": "unverifiable",
|
|
66
|
+
"verified": false,
|
|
67
|
+
"reason": "no bound constraint for 0001-layers resolves or was evaluated — none can be verified"
|
|
68
|
+
},
|
|
69
|
+
"knownFitness": [
|
|
70
|
+
"intentForbiddenEdge"
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
0001-layers (accepted)
|
|
2
|
+
-----------------------
|
|
3
|
+
fitness: unverifiable — no bound constraint for 0001-layers resolves or was evaluated — none can be verified
|
|
4
|
+
governs: (none — recorded but not enforceable)
|
|
5
|
+
unresolved:
|
|
6
|
+
intentForbiddenEdge: "intentForbiddenEdge" is bound by 0001-layers but no governed row in the context carries that id
|
|
7
|
+
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"tool": {
|
|
4
|
+
"name": "@ecoma-io/archkeep",
|
|
5
|
+
"version": "0.26.0"
|
|
6
|
+
},
|
|
7
|
+
"command": "delta",
|
|
8
|
+
"workspace": {
|
|
9
|
+
"root": "/tmp/archkeep-golden-fixture",
|
|
10
|
+
"provider": "native",
|
|
11
|
+
"marker": "archkeep.json",
|
|
12
|
+
"provenance": {
|
|
13
|
+
"commit": "1fd51709c377d99a6139891e1200291cf08aede9",
|
|
14
|
+
"remote": null,
|
|
15
|
+
"dirty": false
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"status": "ok",
|
|
19
|
+
"exitCode": 0,
|
|
20
|
+
"coverage": {
|
|
21
|
+
"complete": true,
|
|
22
|
+
"projects": 3,
|
|
23
|
+
"analyzedFiles": 3,
|
|
24
|
+
"imports": 2,
|
|
25
|
+
"notAnalyzed": [],
|
|
26
|
+
"blindSpots": [],
|
|
27
|
+
"notes": []
|
|
28
|
+
},
|
|
29
|
+
"result": {
|
|
30
|
+
"baseline": {
|
|
31
|
+
"path": "/tmp/archkeep-golden-fixture/.archkeep-delta.json",
|
|
32
|
+
"tool": {
|
|
33
|
+
"name": "@ecoma-io/archkeep",
|
|
34
|
+
"version": "0.26.0"
|
|
35
|
+
},
|
|
36
|
+
"provider": "native",
|
|
37
|
+
"provenance": {
|
|
38
|
+
"commit": "1fd51709c377d99a6139891e1200291cf08aede9",
|
|
39
|
+
"dirty": false,
|
|
40
|
+
"remote": null
|
|
41
|
+
},
|
|
42
|
+
"policyFingerprint": "e18ba4307f6baaaa0d558822327788e8925cb3c52dfac6b170ce4d89b5a728ca",
|
|
43
|
+
"records": 2,
|
|
44
|
+
"projects": 3
|
|
45
|
+
},
|
|
46
|
+
"head": {
|
|
47
|
+
"provenance": {
|
|
48
|
+
"commit": "1fd51709c377d99a6139891e1200291cf08aede9",
|
|
49
|
+
"remote": null,
|
|
50
|
+
"dirty": false
|
|
51
|
+
},
|
|
52
|
+
"policyFingerprint": "e18ba4307f6baaaa0d558822327788e8925cb3c52dfac6b170ce4d89b5a728ca",
|
|
53
|
+
"records": 2,
|
|
54
|
+
"projects": 3
|
|
55
|
+
},
|
|
56
|
+
"policyChanged": false,
|
|
57
|
+
"summary": {
|
|
58
|
+
"introduced": 0,
|
|
59
|
+
"introducedWaived": 0,
|
|
60
|
+
"resolved": 0,
|
|
61
|
+
"unchanged": 0,
|
|
62
|
+
"unknown": 0,
|
|
63
|
+
"unresolvable": {
|
|
64
|
+
"introduced": 0,
|
|
65
|
+
"resolved": 0,
|
|
66
|
+
"unchanged": 0,
|
|
67
|
+
"unknown": 0
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"violations": {
|
|
71
|
+
"introduced": [],
|
|
72
|
+
"resolved": [],
|
|
73
|
+
"unchanged": [],
|
|
74
|
+
"unknown": []
|
|
75
|
+
},
|
|
76
|
+
"unresolvable": {
|
|
77
|
+
"introduced": [],
|
|
78
|
+
"resolved": [],
|
|
79
|
+
"unchanged": [],
|
|
80
|
+
"unknown": []
|
|
81
|
+
},
|
|
82
|
+
"classifications": [],
|
|
83
|
+
"affected": {
|
|
84
|
+
"projects": [],
|
|
85
|
+
"boundaries": [],
|
|
86
|
+
"constraints": [],
|
|
87
|
+
"decisions": []
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"decision": {
|
|
91
|
+
"verdict": "pass"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|