@milehimikey/em 1.7.1 → 1.8.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/.claude/skills/event-modeling/SKILL.md +92 -65
- package/.claude/skills/event-modeling/reference/conform.md +45 -20
- package/.claude/skills/event-modeling/reference/em-dsl.md +120 -55
- package/.claude/skills/event-modeling/reference/extract.md +5 -4
- package/.claude/skills/event-modeling/reference/implement.md +34 -22
- package/.claude/skills/event-modeling/templates/model-readme.md +8 -5
- package/.claude/skills/event-modeling/templates/slice.md +19 -5
- package/README.md +6 -4
- package/dist/catalog/docJoin.d.ts +28 -3
- package/dist/catalog/docJoin.js +82 -13
- package/dist/catalog/docJoin.js.map +1 -1
- package/dist/catalog/docModelConsistencyValidate.d.ts +8 -0
- package/dist/catalog/docModelConsistencyValidate.js +335 -0
- package/dist/catalog/docModelConsistencyValidate.js.map +1 -0
- package/dist/catalog/noteBindingValidate.d.ts +8 -0
- package/dist/catalog/noteBindingValidate.js +133 -0
- package/dist/catalog/noteBindingValidate.js.map +1 -0
- package/dist/catalog/pages.js +3 -3
- package/dist/catalog/pages.js.map +1 -1
- package/dist/catalog/sliceDoc.d.ts +14 -0
- package/dist/catalog/sliceDoc.js +22 -0
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceReadyValidate.d.ts +18 -0
- package/dist/catalog/sliceReadyValidate.js +25 -1
- package/dist/catalog/sliceReadyValidate.js.map +1 -1
- package/dist/cli/agentsMd.d.ts +15 -0
- package/dist/cli/agentsMd.js +72 -0
- package/dist/cli/agentsMd.js.map +1 -0
- package/dist/cli/conformScope.d.ts +86 -0
- package/dist/cli/conformScope.js +156 -0
- package/dist/cli/conformScope.js.map +1 -0
- package/dist/cli/contract.d.ts +7 -0
- package/dist/cli/contract.js +27 -0
- package/dist/cli/contract.js.map +1 -0
- package/dist/cli/coverage.d.ts +69 -0
- package/dist/cli/coverage.js +157 -0
- package/dist/cli/coverage.js.map +1 -0
- package/dist/cli/markImplemented.d.ts +34 -0
- package/dist/cli/markImplemented.js +180 -0
- package/dist/cli/markImplemented.js.map +1 -0
- package/dist/cli/migrateReactionShape.d.ts +62 -0
- package/dist/cli/migrateReactionShape.js +283 -0
- package/dist/cli/migrateReactionShape.js.map +1 -0
- package/dist/cli/sliceIndex.d.ts +49 -0
- package/dist/cli/sliceIndex.js +115 -0
- package/dist/cli/sliceIndex.js.map +1 -0
- package/dist/cli/sliceNew.d.ts +18 -0
- package/dist/cli/sliceNew.js +53 -0
- package/dist/cli/sliceNew.js.map +1 -0
- package/dist/cli/stateFile.d.ts +74 -0
- package/dist/cli/stateFile.js +191 -0
- package/dist/cli/stateFile.js.map +1 -0
- package/dist/cli.js +535 -43
- package/dist/cli.js.map +1 -1
- package/dist/emit/coverageJson.d.ts +8 -0
- package/dist/emit/coverageJson.js +30 -0
- package/dist/emit/coverageJson.js.map +1 -0
- package/dist/emit/dot.js +41 -10
- package/dist/emit/dot.js.map +1 -1
- package/dist/emit/json.d.ts +72 -4
- package/dist/emit/json.js +73 -4
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/validateJson.d.ts +52 -0
- package/dist/emit/validateJson.js +120 -0
- package/dist/emit/validateJson.js.map +1 -0
- package/dist/mcp/main.d.ts +2 -0
- package/dist/mcp/main.js +20 -0
- package/dist/mcp/main.js.map +1 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.js +260 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/model/model.d.ts +30 -1
- package/dist/model/model.js +26 -0
- package/dist/model/model.js.map +1 -1
- package/dist/model/rules.d.ts +114 -0
- package/dist/model/rules.js +116 -4
- package/dist/model/rules.js.map +1 -1
- package/dist/model/validate.js +83 -7
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/ast.d.ts +41 -0
- package/dist/parser/lexer.d.ts +16 -0
- package/dist/parser/lexer.js +44 -2
- package/dist/parser/lexer.js.map +1 -1
- package/dist/parser/parser.js +340 -20
- package/dist/parser/parser.js.map +1 -1
- package/dist/render/drawNotes.js +8 -1
- package/dist/render/drawNotes.js.map +1 -1
- package/dist/render/render.js +85 -17
- package/dist/render/render.js.map +1 -1
- package/dist/render/serve.d.ts +4 -0
- package/dist/render/serve.js +23 -227
- package/dist/render/serve.js.map +1 -1
- package/dist/render/sliceStatus.d.ts +1 -1
- package/dist/render/sliceStatus.js +35 -6
- package/dist/render/sliceStatus.js.map +1 -1
- package/dist/render/viewerHtml.d.ts +1 -0
- package/dist/render/viewerHtml.js +5 -0
- package/dist/render/viewerHtml.js.map +1 -0
- package/dist/render/watch.d.ts +10 -0
- package/dist/render/watch.js +29 -0
- package/dist/render/watch.js.map +1 -1
- package/dist/templates.d.ts +19 -0
- package/dist/templates.js +169 -0
- package/dist/templates.js.map +1 -1
- package/dist/util/markers.d.ts +13 -0
- package/dist/util/markers.js +30 -0
- package/dist/util/markers.js.map +1 -0
- package/dist/util/walkDir.d.ts +10 -1
- package/dist/util/walkDir.js +11 -7
- package/dist/util/walkDir.js.map +1 -1
- package/package.json +12 -3
- package/.claude/skills/event-modeling/templates/live.html +0 -105
package/dist/model/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model/model.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,sEAAsE;AACtE,2EAA2E;AAE3E,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model/model.ts"],"names":[],"mappings":"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"}
|
package/dist/model/rules.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export interface RuleDef {
|
|
|
5
5
|
title: string;
|
|
6
6
|
/** Static, generation-ready fix hint (e.g. "Split them into separate slices."). */
|
|
7
7
|
fix: string;
|
|
8
|
+
/** Fixed-vocabulary string for a `.event-modeling.md` Usage log line (docs/usage-data.md) —
|
|
9
|
+
* lowercase, terse, log-line-friendly. Deliberately not required to match `title` verbatim:
|
|
10
|
+
* these strings predate `title` in several cases and are load-bearing in already-committed
|
|
11
|
+
* usage-log lines, so changing one silently splits one count into two in the aggregation
|
|
12
|
+
* recipe (docs/usage-data.md). Never reword an existing value for that reason. */
|
|
13
|
+
usageCategory: string;
|
|
8
14
|
/** docs/validation.md H3 anchor this rule nests under, when one exists and covers >1 rule. */
|
|
9
15
|
docAnchor?: string;
|
|
10
16
|
/** True for the 4 `--slice-ready`-only codes (src/catalog/sliceReadyValidate.ts, MIL-87). */
|
|
@@ -15,201 +21,306 @@ export declare const RULES: {
|
|
|
15
21
|
readonly severity: "error";
|
|
16
22
|
readonly title: "Band collision";
|
|
17
23
|
readonly fix: "Split the colliding elements into separate slices.";
|
|
24
|
+
readonly usageCategory: "same-band collision";
|
|
18
25
|
};
|
|
19
26
|
readonly "ui-shares-slice-with-automation": {
|
|
20
27
|
readonly severity: "warning";
|
|
21
28
|
readonly title: "`ui` shares slice with a reaction";
|
|
22
29
|
readonly fix: "Move the `ui` to the slice that displays the read model, or drop it.";
|
|
30
|
+
readonly usageCategory: "ui shares slice with reaction";
|
|
23
31
|
};
|
|
24
32
|
readonly "both-ends-of-a-flow/command-no-event": {
|
|
25
33
|
readonly severity: "warning";
|
|
26
34
|
readonly title: "Command without event";
|
|
27
35
|
readonly fix: "Add the event this command records.";
|
|
36
|
+
readonly usageCategory: "command produces no event";
|
|
28
37
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
29
38
|
};
|
|
30
39
|
readonly "view-no-source": {
|
|
31
40
|
readonly severity: "warning";
|
|
32
41
|
readonly title: "Read model without source";
|
|
33
42
|
readonly fix: "Add `from \"Event\"`, or place the view in a slice with an event.";
|
|
43
|
+
readonly usageCategory: "read model has no source";
|
|
34
44
|
};
|
|
35
45
|
readonly "view-from-unresolved": {
|
|
36
46
|
readonly severity: "error";
|
|
37
47
|
readonly title: "Unknown event source";
|
|
38
48
|
readonly fix: "Fix the `from` reference to name an existing event.";
|
|
49
|
+
readonly usageCategory: "view references unknown event";
|
|
39
50
|
};
|
|
40
51
|
readonly "view-from-future-event": {
|
|
41
52
|
readonly severity: "error";
|
|
42
53
|
readonly title: "Backward timeline (view reads a future event)";
|
|
43
54
|
readonly fix: "Move the source to a later `view X again` instance.";
|
|
55
|
+
readonly usageCategory: "event feeds earlier view instance";
|
|
44
56
|
};
|
|
45
57
|
readonly "fields-completeness/view-field-no-source": {
|
|
46
58
|
readonly severity: "warning";
|
|
47
59
|
readonly title: "View field with no source";
|
|
48
60
|
readonly fix: "Add the field to a source event, or remove it from the view.";
|
|
61
|
+
readonly usageCategory: "view field no source";
|
|
49
62
|
readonly docAnchor: "fields-completeness";
|
|
50
63
|
};
|
|
51
64
|
readonly "fields-completeness/event-field-no-source": {
|
|
52
65
|
readonly severity: "warning";
|
|
53
66
|
readonly title: "Event field not from a command";
|
|
54
67
|
readonly fix: "Add the field to a command in the slice, or remove it from the event.";
|
|
68
|
+
readonly usageCategory: "event field not provided by command";
|
|
55
69
|
readonly docAnchor: "fields-completeness";
|
|
56
70
|
};
|
|
57
71
|
readonly "reaction-from-unresolved": {
|
|
58
72
|
readonly severity: "error";
|
|
59
73
|
readonly title: "Unknown read-model source";
|
|
60
74
|
readonly fix: "Project the event into a view first, or fix the `from` reference.";
|
|
75
|
+
readonly usageCategory: "reaction references unknown read model";
|
|
61
76
|
};
|
|
62
77
|
readonly "reaction-from-future-view": {
|
|
63
78
|
readonly severity: "error";
|
|
64
79
|
readonly title: "Backward timeline (reaction reads a future view)";
|
|
65
80
|
readonly fix: "Declare the view in or before the reaction's slice.";
|
|
81
|
+
readonly usageCategory: "reaction reads view before it exists";
|
|
66
82
|
};
|
|
67
83
|
readonly "view-again-without-earlier": {
|
|
68
84
|
readonly severity: "error";
|
|
69
85
|
readonly title: "`again` without an earlier declaration";
|
|
70
86
|
readonly fix: "Declare the view plainly the first time it appears.";
|
|
87
|
+
readonly usageCategory: "view again with no earlier declaration";
|
|
71
88
|
};
|
|
72
89
|
readonly "both-ends-of-a-flow/command-untriggered": {
|
|
73
90
|
readonly severity: "warning";
|
|
74
91
|
readonly title: "Command with no trigger";
|
|
75
92
|
readonly fix: "Add a `ui` or the reaction that issues it, both in this slice.";
|
|
93
|
+
readonly usageCategory: "command nothing triggers";
|
|
76
94
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
77
95
|
};
|
|
78
96
|
readonly "both-ends-of-a-flow/reaction-no-command": {
|
|
79
97
|
readonly severity: "warning";
|
|
80
98
|
readonly title: "Reaction with no command";
|
|
81
99
|
readonly fix: "Add the command it triggers, in this slice, or an explicit arrow to one.";
|
|
100
|
+
readonly usageCategory: "reaction triggers no command";
|
|
82
101
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
83
102
|
};
|
|
84
103
|
readonly "both-ends-of-a-flow/view-unconsumed": {
|
|
85
104
|
readonly severity: "warning";
|
|
86
105
|
readonly title: "Read model with no consumer";
|
|
87
106
|
readonly fix: "Add a `ui` or reaction that consumes it, or drop this instance.";
|
|
107
|
+
readonly usageCategory: "read model has no consumer";
|
|
88
108
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
89
109
|
};
|
|
90
110
|
readonly "both-ends-of-a-flow/event-unread": {
|
|
91
111
|
readonly severity: "warning";
|
|
92
112
|
readonly title: "Event nobody reads";
|
|
93
113
|
readonly fix: "Project it into a view, or reconsider recording it.";
|
|
114
|
+
readonly usageCategory: "event not read by any read model";
|
|
94
115
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
95
116
|
};
|
|
96
117
|
readonly "both-ends-of-a-flow/event-unproduced": {
|
|
97
118
|
readonly severity: "warning";
|
|
98
119
|
readonly title: "Event with no producing command";
|
|
99
120
|
readonly fix: "Add the command that records it, or an explicit arrow from one.";
|
|
121
|
+
readonly usageCategory: "event has no producing command";
|
|
100
122
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
101
123
|
};
|
|
102
124
|
readonly "both-ends-of-a-flow/ui-unbacked": {
|
|
103
125
|
readonly severity: "warning";
|
|
104
126
|
readonly title: "`ui` with no read model or command";
|
|
105
127
|
readonly fix: "Add a `view` it displays, or the command it triggers.";
|
|
128
|
+
readonly usageCategory: "ui with no view or command";
|
|
106
129
|
readonly docAnchor: "both-ends-of-a-flow";
|
|
107
130
|
};
|
|
108
131
|
readonly "arrow-backward": {
|
|
109
132
|
readonly severity: "error";
|
|
110
133
|
readonly title: "Backward arrow";
|
|
111
134
|
readonly fix: "Restructure so the target comes later.";
|
|
135
|
+
readonly usageCategory: "arrow points backward";
|
|
112
136
|
};
|
|
113
137
|
readonly "connection-legality/illegal-pair": {
|
|
114
138
|
readonly severity: "error";
|
|
115
139
|
readonly title: "Illegal connection";
|
|
116
140
|
readonly fix: "Only ui→command→event→view→ui and view→reaction→command are legal — the message names the missing step.";
|
|
141
|
+
readonly usageCategory: "illegal connection";
|
|
117
142
|
readonly docAnchor: "connection-legality";
|
|
118
143
|
};
|
|
119
144
|
readonly "arrow-unresolved-source": {
|
|
120
145
|
readonly severity: "error";
|
|
121
146
|
readonly title: "Arrow source unresolved";
|
|
122
147
|
readonly fix: "Fix the arrow's source name.";
|
|
148
|
+
readonly usageCategory: "arrow endpoint unresolved";
|
|
123
149
|
};
|
|
124
150
|
readonly "arrow-unresolved-target": {
|
|
125
151
|
readonly severity: "error";
|
|
126
152
|
readonly title: "Arrow target unresolved";
|
|
127
153
|
readonly fix: "Fix the arrow's target name.";
|
|
154
|
+
readonly usageCategory: "arrow endpoint unresolved";
|
|
128
155
|
};
|
|
129
156
|
readonly "open-issue": {
|
|
130
157
|
readonly severity: "warning";
|
|
131
158
|
readonly title: "Open issue";
|
|
132
159
|
readonly fix: "Resolve the question, then remove the `issue` clause.";
|
|
160
|
+
readonly usageCategory: "open issue";
|
|
133
161
|
};
|
|
134
162
|
readonly "duplicate-name": {
|
|
135
163
|
readonly severity: "warning";
|
|
136
164
|
readonly title: "Duplicate name";
|
|
137
165
|
readonly fix: "Rename one of the duplicates.";
|
|
166
|
+
readonly usageCategory: "duplicate name referenced";
|
|
138
167
|
};
|
|
139
168
|
readonly "translation-name-collision": {
|
|
140
169
|
readonly severity: "warning";
|
|
141
170
|
readonly title: "Translation name reused for different producers";
|
|
142
171
|
readonly fix: "Use a distinct name per producer to avoid confusion.";
|
|
172
|
+
readonly usageCategory: "translation name collision";
|
|
143
173
|
};
|
|
144
174
|
readonly "duplicate-type-name": {
|
|
145
175
|
readonly severity: "warning";
|
|
146
176
|
readonly title: "Duplicate type name";
|
|
147
177
|
readonly fix: "Rename one of the duplicate `type` declarations.";
|
|
178
|
+
readonly usageCategory: "duplicate type name";
|
|
179
|
+
};
|
|
180
|
+
readonly "tag-composite-unknown-field": {
|
|
181
|
+
readonly severity: "error";
|
|
182
|
+
readonly title: "Composite tag names an unknown field";
|
|
183
|
+
readonly fix: "Fix the field name, or add it to the event's fields.";
|
|
184
|
+
readonly usageCategory: "composite tag references unknown field";
|
|
185
|
+
};
|
|
186
|
+
readonly "tag-duplicate-key": {
|
|
187
|
+
readonly severity: "error";
|
|
188
|
+
readonly title: "Duplicate tag key";
|
|
189
|
+
readonly fix: "Rename one of the tags so every key on the event is unique.";
|
|
190
|
+
readonly usageCategory: "duplicate tag key";
|
|
148
191
|
};
|
|
149
192
|
readonly "type-cycle": {
|
|
150
193
|
readonly severity: "error";
|
|
151
194
|
readonly title: "Cyclic type reference";
|
|
152
195
|
readonly fix: "Break the cycle, or route the self/mutual reference through an array.";
|
|
196
|
+
readonly usageCategory: "type cycle";
|
|
153
197
|
};
|
|
154
198
|
readonly "lineage-ref-malformed": {
|
|
155
199
|
readonly severity: "error";
|
|
156
200
|
readonly title: "Malformed lineage ref";
|
|
157
201
|
readonly fix: "Fix the value to `<slice-key>@v<N>`, or remove it.";
|
|
202
|
+
readonly usageCategory: "lineage ref malformed";
|
|
158
203
|
readonly docAnchor: "lineage";
|
|
159
204
|
};
|
|
160
205
|
readonly "lineage-ref-cycle": {
|
|
161
206
|
readonly severity: "error";
|
|
162
207
|
readonly title: "Lineage cycle";
|
|
163
208
|
readonly fix: "Break the cycle — a slice can't be its own ancestor.";
|
|
209
|
+
readonly usageCategory: "lineage ref cycle";
|
|
164
210
|
readonly docAnchor: "lineage";
|
|
165
211
|
};
|
|
166
212
|
readonly "lineage-forward-dangling": {
|
|
167
213
|
readonly severity: "error";
|
|
168
214
|
readonly title: "Dangling forward lineage ref";
|
|
169
215
|
readonly fix: "Fix the key, or remove the stale successor.";
|
|
216
|
+
readonly usageCategory: "lineage forward dangling";
|
|
170
217
|
readonly docAnchor: "lineage";
|
|
171
218
|
};
|
|
172
219
|
readonly "lineage-version-impossible": {
|
|
173
220
|
readonly severity: "error";
|
|
174
221
|
readonly title: "Impossible lineage version";
|
|
175
222
|
readonly fix: "Fix the referenced version, or ratify the target slice first.";
|
|
223
|
+
readonly usageCategory: "lineage version impossible";
|
|
176
224
|
readonly docAnchor: "lineage";
|
|
177
225
|
};
|
|
178
226
|
readonly "frontmatter-coherence-implemented-without-link": {
|
|
179
227
|
readonly severity: "warning";
|
|
180
228
|
readonly title: "Implemented without a link";
|
|
181
229
|
readonly fix: "Add `implementedIn` once the slice ships.";
|
|
230
|
+
readonly usageCategory: "implemented without link";
|
|
182
231
|
readonly docAnchor: "frontmatter-coherence";
|
|
183
232
|
};
|
|
184
233
|
readonly "binding-missing-file": {
|
|
185
234
|
readonly severity: "warning";
|
|
186
235
|
readonly title: "Doc binding points at a missing file";
|
|
187
236
|
readonly fix: "Create the slice doc, or fix the `note` path.";
|
|
237
|
+
readonly usageCategory: "doc binding points at missing file";
|
|
188
238
|
};
|
|
189
239
|
readonly "frontmatter-invalid": {
|
|
190
240
|
readonly severity: "warning";
|
|
191
241
|
readonly title: "Invalid or missing frontmatter";
|
|
192
242
|
readonly fix: "Add the required frontmatter keys, or add a frontmatter block.";
|
|
243
|
+
readonly usageCategory: "invalid or missing frontmatter";
|
|
244
|
+
};
|
|
245
|
+
readonly "note-binding-extra": {
|
|
246
|
+
readonly severity: "warning";
|
|
247
|
+
readonly title: "Extra doc-binding note, ignored";
|
|
248
|
+
readonly fix: "Remove the note, or point it at the slice's actual bound doc.";
|
|
249
|
+
readonly usageCategory: "extra doc-binding note ignored";
|
|
250
|
+
readonly docAnchor: "note-binding-mismatch";
|
|
251
|
+
};
|
|
252
|
+
readonly "note-binding-dangling": {
|
|
253
|
+
readonly severity: "warning";
|
|
254
|
+
readonly title: "Dangling cross-slice note";
|
|
255
|
+
readonly fix: "Create the doc at that path, or fix/remove the note.";
|
|
256
|
+
readonly usageCategory: "cross-slice note points nowhere";
|
|
257
|
+
readonly docAnchor: "note-binding-mismatch";
|
|
258
|
+
};
|
|
259
|
+
readonly "note-binding-unusable": {
|
|
260
|
+
readonly severity: "warning";
|
|
261
|
+
readonly title: "Cross-slice note to a doc with unusable frontmatter";
|
|
262
|
+
readonly fix: "Fix that doc's frontmatter, or fix/remove the note.";
|
|
263
|
+
readonly usageCategory: "cross-slice note targets unusable doc";
|
|
264
|
+
readonly docAnchor: "note-binding-mismatch";
|
|
265
|
+
};
|
|
266
|
+
readonly "note-binding-unratified": {
|
|
267
|
+
readonly severity: "warning";
|
|
268
|
+
readonly title: "Unratified cross-slice note";
|
|
269
|
+
readonly fix: "Add `covers: <this-slice-key>` to that doc's frontmatter, or correct the note's path.";
|
|
270
|
+
readonly usageCategory: "cross-slice note not ratified by target doc";
|
|
271
|
+
readonly docAnchor: "note-binding-mismatch";
|
|
272
|
+
};
|
|
273
|
+
readonly "doc-model-pattern-mismatch": {
|
|
274
|
+
readonly severity: "warning";
|
|
275
|
+
readonly title: "Doc/model pattern mismatch";
|
|
276
|
+
readonly fix: "Fix the doc's `pattern:` frontmatter to match the model, or restructure the slice to match the doc.";
|
|
277
|
+
readonly usageCategory: "doc pattern disagrees with model";
|
|
278
|
+
readonly docAnchor: "doc-model-consistency";
|
|
279
|
+
};
|
|
280
|
+
readonly "doc-model-element-not-in-model": {
|
|
281
|
+
readonly severity: "warning";
|
|
282
|
+
readonly title: "Doc names an element the model doesn't have";
|
|
283
|
+
readonly fix: "Add the element to the model, or fix/remove it in the doc.";
|
|
284
|
+
readonly usageCategory: "doc element missing from model";
|
|
285
|
+
readonly docAnchor: "doc-model-consistency";
|
|
286
|
+
};
|
|
287
|
+
readonly "doc-model-element-not-in-doc": {
|
|
288
|
+
readonly severity: "warning";
|
|
289
|
+
readonly title: "Model element the doc doesn't mention";
|
|
290
|
+
readonly fix: "Add the matching marker to the doc, or remove the element from the model.";
|
|
291
|
+
readonly usageCategory: "model element missing from doc";
|
|
292
|
+
readonly docAnchor: "doc-model-consistency";
|
|
293
|
+
};
|
|
294
|
+
readonly "doc-model-field-mismatch": {
|
|
295
|
+
readonly severity: "warning";
|
|
296
|
+
readonly title: "Doc/model field mismatch";
|
|
297
|
+
readonly fix: "Reconcile the field table with the model's fields — names and types.";
|
|
298
|
+
readonly usageCategory: "doc field table disagrees with model";
|
|
299
|
+
readonly docAnchor: "doc-model-consistency";
|
|
193
300
|
};
|
|
194
301
|
readonly "duplicate-slice-name": {
|
|
195
302
|
readonly severity: "warning";
|
|
196
303
|
readonly title: "Duplicate slice name";
|
|
197
304
|
readonly fix: "Rename the slice so its export key is unique.";
|
|
305
|
+
readonly usageCategory: "duplicate slice name";
|
|
198
306
|
};
|
|
199
307
|
readonly "duplicate-element-ref": {
|
|
200
308
|
readonly severity: "warning";
|
|
201
309
|
readonly title: "Duplicate element ref";
|
|
202
310
|
readonly fix: "Rename the element so its export ref is unique.";
|
|
311
|
+
readonly usageCategory: "duplicate element ref";
|
|
203
312
|
};
|
|
204
313
|
readonly "duplicate-type-ref": {
|
|
205
314
|
readonly severity: "warning";
|
|
206
315
|
readonly title: "Duplicate type ref";
|
|
207
316
|
readonly fix: "Rename the type so its export ref is unique.";
|
|
317
|
+
readonly usageCategory: "duplicate type ref";
|
|
208
318
|
};
|
|
209
319
|
readonly "slice-ready-unknown-slice": {
|
|
210
320
|
readonly severity: "error";
|
|
211
321
|
readonly title: "Unknown --slice-ready key";
|
|
212
322
|
readonly fix: "Pass a valid export key that exists in this model.";
|
|
323
|
+
readonly usageCategory: "slice-ready key does not exist";
|
|
213
324
|
readonly docAnchor: "slice-readiness";
|
|
214
325
|
readonly optIn: true;
|
|
215
326
|
};
|
|
@@ -217,6 +328,7 @@ export declare const RULES: {
|
|
|
217
328
|
readonly severity: "warning";
|
|
218
329
|
readonly title: "No doc bound";
|
|
219
330
|
readonly fix: "Bind a slice doc via `note \"slices/<key>.md\"`.";
|
|
331
|
+
readonly usageCategory: "slice-ready slice has no doc bound";
|
|
220
332
|
readonly docAnchor: "slice-readiness";
|
|
221
333
|
readonly optIn: true;
|
|
222
334
|
};
|
|
@@ -224,6 +336,7 @@ export declare const RULES: {
|
|
|
224
336
|
readonly severity: "warning";
|
|
225
337
|
readonly title: "Not ready-to-implement";
|
|
226
338
|
readonly fix: "Set `status: ready-to-implement`.";
|
|
339
|
+
readonly usageCategory: "slice-ready slice not ready-to-implement";
|
|
227
340
|
readonly docAnchor: "slice-readiness";
|
|
228
341
|
readonly optIn: true;
|
|
229
342
|
};
|
|
@@ -231,6 +344,7 @@ export declare const RULES: {
|
|
|
231
344
|
readonly severity: "warning";
|
|
232
345
|
readonly title: "Unchecked Open Questions";
|
|
233
346
|
readonly fix: "Check off the remaining Open Questions.";
|
|
347
|
+
readonly usageCategory: "slice-ready slice has unchecked open questions";
|
|
234
348
|
readonly docAnchor: "slice-readiness";
|
|
235
349
|
readonly optIn: true;
|
|
236
350
|
};
|