Commit cd81349
fix(cli): meta types under-reported the registry it is the search for (#357)
`meta types` is the vocabulary search the generated AGENTS.md and the
metaobjects-authoring skill both make step 1 of the authoring procedure, on the
reasoning that you must search the vocabulary before concluding something cannot
be expressed. It gave confidently wrong answers, for two independent reasons.
It read the cross-port manifest. buildRegistryManifest answers "what must all five
ports byte-match?" and deliberately carves out the 13 TS-web-presentation view.*
controls (B-2), which stay REGISTERED in TypeScript. Asked "what can I author
here?", it reported 2 of the 15 registered view.* subtypes, and the other 13 came
back exactly as a genuine typo does.
And it composed a partial registry -- registerCoreTypes alone, which core-types.ts
itself documents as a legacy wrapper to be preferred against. Every attr the db,
ui-web and documentation providers register was invisible: field.string reported 6
attrs instead of 16 (no @column, @filterable, @Sortable, @dbColumnType),
view.textarea none at all (no @rows), and the eight documentation common attrs were
absent entirely -- so `meta types title` found nothing, for the very attr an author
is meant to find INSTEAD of asking for a new one. That omission is how #353 became
a request to register @Label when @title already existed: the tool that would have
prevented it under-reported the attribute involved.
The command now composes the same provider set the loader does, and reads a new
buildVocabularyCatalog -- the authoring-facing twin of the manifest, built from the
same row rules -- which enumerates every registered (type, subType) and MARKS the
cross-port carve-outs [ts-only] rather than dropping them. That is the honest way
to surface what the carve-out means: not "missing", but "TypeScript-only". A type's
shared root is marked [base] so a listing cannot be mistaken for the concrete
vocabulary; it is deliberately not called "abstract", since nothing in the registry
records abstractness and some base rows (attr.base) are the authorable polymorphic
form. Common attrs are searchable and no --type scope hides them, since they are
accepted on every node.
Reserved structural keys (isArray, extends) stay unlisted: @-prefixing one is
ERR_RESERVED_ATTR, so offering them would teach metadata the loader rejects. An
unregistered subtype still reports as missing -- the fix must not make the tool
answer "yes" to everything.
TypeScript-only, and deliberately so. The B-2 exclusion is correct and documented;
adding those rows to expected-registry.json would break the C#/Python
deregistration and force a cross-port change for a bug whose cause was a CLI
command asking the wrong source. expected-registry.json and metamodelVersion are
untouched, and registry-conformance is unchanged. Both halves of the fix were
proven by reverting each in turn: the carve-out reinstated fails 6 of the 10 new
tests, the partial composition fails 4.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HSCgs7z19w8aGXGiceCohC1 parent 16e9124 commit cd81349
6 files changed
Lines changed: 349 additions & 28 deletions
File tree
- server/typescript/packages
- cli
- src/commands
- test
- metadata/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
51 | 90 | | |
52 | 91 | | |
53 | 92 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
| 5 | + | |
| 6 | + | |
11 | 7 | | |
12 | 8 | | |
13 | 9 | | |
| |||
78 | 74 | | |
79 | 75 | | |
80 | 76 | | |
81 | | - | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
82 | 95 | | |
83 | 96 | | |
84 | 97 | | |
| |||
94 | 107 | | |
95 | 108 | | |
96 | 109 | | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
103 | 121 | | |
104 | | - | |
| 122 | + | |
105 | 123 | | |
106 | 124 | | |
107 | 125 | | |
108 | 126 | | |
109 | | - | |
| 127 | + | |
| 128 | + | |
110 | 129 | | |
111 | 130 | | |
112 | 131 | | |
113 | 132 | | |
114 | | - | |
| 133 | + | |
| 134 | + | |
115 | 135 | | |
116 | 136 | | |
117 | 137 | | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
118 | 150 | | |
119 | 151 | | |
120 | 152 | | |
121 | 153 | | |
122 | 154 | | |
123 | 155 | | |
124 | 156 | | |
125 | | - | |
| 157 | + | |
| 158 | + | |
126 | 159 | | |
127 | 160 | | |
128 | 161 | | |
| |||
149 | 182 | | |
150 | 183 | | |
151 | 184 | | |
152 | | - | |
153 | | - | |
| 185 | + | |
154 | 186 | | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
155 | 191 | | |
156 | 192 | | |
157 | 193 | | |
| |||
167 | 203 | | |
168 | 204 | | |
169 | 205 | | |
170 | | - | |
| 206 | + | |
171 | 207 | | |
172 | | - | |
| 208 | + | |
173 | 209 | | |
174 | 210 | | |
175 | 211 | | |
| 212 | + | |
176 | 213 | | |
177 | 214 | | |
178 | 215 | | |
| |||
Lines changed: 106 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
181 | 186 | | |
182 | 187 | | |
183 | 188 | | |
| |||
Lines changed: 8 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
| 66 | + | |
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | | - | |
| 82 | + | |
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| |||
195 | 195 | | |
196 | 196 | | |
197 | 197 | | |
198 | | - | |
| 198 | + | |
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
| |||
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
210 | | - | |
| 210 | + | |
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
| |||
260 | 260 | | |
261 | 261 | | |
262 | 262 | | |
263 | | - | |
| 263 | + | |
| 264 | + | |
264 | 265 | | |
265 | 266 | | |
266 | 267 | | |
| |||
0 commit comments