@ossiq/cli-linux-x64 0.1.13 → 0.1.14
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/bin/ossiq/_internal/_cffi_backend.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/ossiq/_internal/base_library.zip +0 -0
- package/bin/ossiq/_internal/cryptography/hazmat/bindings/_rust.abi3.so +0 -0
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/METADATA +110 -0
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/RECORD +122 -0
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/WHEEL +5 -0
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/licenses/LICENSE +3 -0
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/licenses/LICENSE.APACHE +202 -0
- package/bin/ossiq/_internal/{semantic_version-2.10.0.dist-info/LICENSE → cryptography-50.0.1.dist-info/licenses/LICENSE.BSD} +14 -9
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/sboms/cryptography-rust.cyclonedx.json +1365 -0
- package/bin/ossiq/_internal/cryptography-50.0.1.dist-info/sboms/sbom.json +43 -0
- package/bin/ossiq/_internal/keyring-25.7.0.dist-info/METADATA +554 -0
- package/bin/ossiq/_internal/keyring-25.7.0.dist-info/RECORD +40 -0
- package/bin/ossiq/_internal/{semantic_version-2.10.0.dist-info → keyring-25.7.0.dist-info}/WHEEL +1 -2
- package/bin/ossiq/_internal/keyring-25.7.0.dist-info/entry_points.txt +13 -0
- package/bin/ossiq/_internal/keyring-25.7.0.dist-info/licenses/LICENSE +18 -0
- package/bin/ossiq/_internal/keyring-25.7.0.dist-info/top_level.txt +1 -0
- package/bin/ossiq/_internal/lark/grammars/common.lark +59 -0
- package/bin/ossiq/_internal/lark/grammars/lark.lark +62 -0
- package/bin/ossiq/_internal/lark/grammars/python.lark +302 -0
- package/bin/ossiq/_internal/lark/grammars/unicode.lark +7 -0
- package/bin/ossiq/_internal/lark/py.typed +0 -0
- package/bin/ossiq/_internal/libpython3.13.so.1.0 +0 -0
- package/bin/ossiq/_internal/ossiq/data/SKILL.md +42 -16
- package/bin/ossiq/_internal/ossiq/domain/README.md +30 -4
- package/bin/ossiq/_internal/ossiq/solver/README.md +10 -3
- package/bin/ossiq/_internal/ossiq/strategy/README.md +20 -2
- package/bin/ossiq/_internal/ossiq/ui/html_templates/spa_app.html +1828 -1518
- package/bin/ossiq/_internal/ossiq/ui/renderers/export/README.md +103 -40
- package/bin/ossiq/_internal/ossiq/ui/renderers/export/schemas/export_schema_v1.6.json +1805 -0
- package/bin/ossiq/_internal/ossiq/ui/renderers/export/schemas/export_schema_v1.6_standard.json +1328 -0
- package/bin/ossiq/_internal/ossiq-0.1.14.dist-info/INSTALLER +1 -0
- package/bin/ossiq/_internal/ossiq-0.1.14.dist-info/METADATA +207 -0
- package/bin/ossiq/_internal/ossiq-0.1.14.dist-info/RECORD +13 -0
- package/bin/ossiq/_internal/ossiq-0.1.14.dist-info/REQUESTED +0 -0
- package/bin/ossiq/_internal/ossiq-0.1.14.dist-info/uv_cache.json +1 -0
- package/bin/ossiq/_internal/pysolvers.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER +1 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA +133 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD +21 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED +0 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL +5 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +73 -0
- package/bin/ossiq/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt +1 -0
- package/bin/ossiq/ossiq +0 -0
- package/package.json +1 -1
- package/bin/ossiq/_internal/ossiq-0.1.13.dist-info/METADATA +0 -385
- package/bin/ossiq/_internal/ossiq-0.1.13.dist-info/RECORD +0 -13
- package/bin/ossiq/_internal/ossiq-0.1.13.dist-info/uv_cache.json +0 -1
- package/bin/ossiq/_internal/semantic_version-2.10.0.dist-info/METADATA +0 -324
- package/bin/ossiq/_internal/semantic_version-2.10.0.dist-info/RECORD +0 -10
- package/bin/ossiq/_internal/semantic_version-2.10.0.dist-info/top_level.txt +0 -1
- package/bin/ossiq/_internal/wcwidth/textwrap.py,cover +0 -664
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → cryptography-50.0.1.dist-info}/INSTALLER +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → cryptography-50.0.1.dist-info}/REQUESTED +0 -0
- /package/bin/ossiq/_internal/{semantic_version-2.10.0.dist-info → keyring-25.7.0.dist-info}/INSTALLER +0 -0
- /package/bin/ossiq/_internal/{semantic_version-2.10.0.dist-info → keyring-25.7.0.dist-info}/REQUESTED +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → ossiq-0.1.14.dist-info}/WHEEL +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → ossiq-0.1.14.dist-info}/direct_url.json +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → ossiq-0.1.14.dist-info}/entry_points.txt +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → ossiq-0.1.14.dist-info}/licenses/AUTHORS +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → ossiq-0.1.14.dist-info}/licenses/LICENSE +0 -0
- /package/bin/ossiq/_internal/{ossiq-0.1.13.dist-info → ossiq-0.1.14.dist-info}/uv_build.json +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Export Format Versioning Guide
|
|
2
2
|
|
|
3
|
-
This directory owns the versioned JSON export format. Follow this guide when introducing a new schema version (e.g. v1.
|
|
3
|
+
This directory owns the versioned JSON export format. Follow this guide when introducing a new schema version (e.g. v1.7).
|
|
4
|
+
|
|
5
|
+
The versions registered here are **1.5** and **1.6**; the next one is 1.7.
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
@@ -41,11 +43,30 @@ Two kinds of changes require a new version:
|
|
|
41
43
|
|
|
42
44
|
Breaking changes (removing required fields, renaming) are **never** made to an existing version — always bump.
|
|
43
45
|
|
|
44
|
-
###
|
|
46
|
+
### Older versions stay selectable, and stay what they were
|
|
47
|
+
|
|
48
|
+
`ossiq export --schema-version 1.5` keeps producing a v1.5 document that validates against
|
|
49
|
+
`export_schema_v1.5.json` (and the standard one, which rejects any property it doesn't list). All
|
|
50
|
+
versions share one set of Pydantic models, so a field a later version added is tagged with its
|
|
51
|
+
version where it is declared:
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
unresolved_peers: list[UnresolvedPeerExport] = Field(..., json_schema_extra=SINCE_V1_6)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
`ProfiledExportModel` leaves such a field out of a document that declares an older version, in both
|
|
58
|
+
profiles, and `export_json()` passes the declared version to it. A field that is both full-only and
|
|
59
|
+
new carries both markers (`{**FULL_ONLY, **SINCE_V1_6}`). Anything that *selects* records by
|
|
60
|
+
version-dependent data (the standard profile's transitive filter) takes the version too, so the old
|
|
61
|
+
version selects exactly what it always did. `TestSchemaVersion15StaysAsReleased` pins all of this: a
|
|
62
|
+
v1.5 document is the v1.6 one minus the new fields, and `TestV16IsAdditiveOverV15` fails if a newer
|
|
63
|
+
schema removes, retypes or newly requires anything an older one had.
|
|
45
64
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
65
|
+
### The former exception: v1.5 while it was unreleased
|
|
66
|
+
|
|
67
|
+
v1.5 shipped in 0.1.12, so this no longer applies; it is kept as a record of what v1.5 contains.
|
|
68
|
+
Until then it had no consumers outside this repository and additive fields were **amended into
|
|
69
|
+
`export_schema_v1.5.json` in place** rather than bumped. Amended this way: the version-ladder fields (`latest_in_range`,
|
|
49
70
|
`latest_in_major`, `latest_compatible_major`, `recommended_from_rung`), the module-system and
|
|
50
71
|
engine fields, `next_action` / `requires_constraint_widening`, the data-completeness
|
|
51
72
|
diagnostics (`data_completeness.sources[].failures` and `data_completeness.api_budgets`), and
|
|
@@ -60,16 +81,21 @@ value it was missing since the stated-runtime change.
|
|
|
60
81
|
|
|
61
82
|
One rename was also made in place: `triage_action` became `dependency_health_action`. Agents read
|
|
62
83
|
the old name as the answer to "should I update?". With no released consumer, a rename cost nothing
|
|
63
|
-
that a
|
|
84
|
+
that a version bump would have saved. A pre-rename document still validates, since the old key is
|
|
64
85
|
simply an unknown extra property, but it no longer populates the field.
|
|
65
86
|
|
|
66
|
-
|
|
67
|
-
qualification: additive changes bump the minor version
|
|
68
|
-
|
|
87
|
+
That exception ended when v1.5 shipped. For a released version the policy above applies without
|
|
88
|
+
qualification: additive changes bump the minor version, which is how v1.6 came about
|
|
89
|
+
(`unresolved_peers`, `peer_repairs`).
|
|
90
|
+
|
|
91
|
+
v1.6 itself has not shipped, so the exception applies to it in turn. Until it does, additive fields
|
|
92
|
+
are amended into `export_schema_v1.6.json` and `export_schema_v1.6_standard.json` in place, tagged
|
|
93
|
+
`SINCE_V1_6` so a `--schema-version 1.5` document stays as released. The next bump (1.7) waits for
|
|
94
|
+
the v1.6 release.
|
|
69
95
|
|
|
70
96
|
---
|
|
71
97
|
|
|
72
|
-
## Step-by-step: introducing v1.
|
|
98
|
+
## Step-by-step: introducing v1.7
|
|
73
99
|
|
|
74
100
|
### 1. Enum — `src/ossiq/domain/common.py`
|
|
75
101
|
|
|
@@ -78,7 +104,8 @@ Add the new version to `ExportJsonSchemaVersion`:
|
|
|
78
104
|
```python
|
|
79
105
|
class ExportJsonSchemaVersion(StrEnum):
|
|
80
106
|
V1_5 = "1.5"
|
|
81
|
-
V1_6 = "1.6"
|
|
107
|
+
V1_6 = "1.6"
|
|
108
|
+
V1_7 = "1.7" # add
|
|
82
109
|
```
|
|
83
110
|
|
|
84
111
|
---
|
|
@@ -89,8 +116,16 @@ There is a single `ExportData` root (the former v1.3 shape: `constraint_type_map
|
|
|
89
116
|
`transitive_packages` as `TransitivePackageMetrics`, and `dependency_tree`).
|
|
90
117
|
|
|
91
118
|
**Additive-only change (new optional fields on `PackageMetrics` / `TransitivePackageMetrics`):**
|
|
92
|
-
add the field as optional with
|
|
93
|
-
|
|
119
|
+
add the field as optional with a default, tag it with the version that introduces it
|
|
120
|
+
(`json_schema_extra=SINCE_V1_7`, defined next to `SINCE_V1_6`; add the marker, then use it), decide its
|
|
121
|
+
profile (`FULL_ONLY` or not), and update the `from_domain` constructor. A field both
|
|
122
|
+
`PackageMetrics` and `TransitivePackageMetrics` carry belongs on a shared mixin (`PeerFields`,
|
|
123
|
+
`LadderFields`). No new subclass, no factory branch. Then update
|
|
124
|
+
`test_standard_field_sets_are_a_deliberate_choice` for the profile decision.
|
|
125
|
+
|
|
126
|
+
If a **record filter** depends on the new data (the standard profile's transitive selection does),
|
|
127
|
+
gate it on `schema_version.at_least(...)` the way `build_transitive_data` does, so the older version
|
|
128
|
+
keeps selecting what it always did.
|
|
94
129
|
|
|
95
130
|
**Structural change** (a package-array item shape changes): add a new `ExportData` subclass and
|
|
96
131
|
branch `build_export_data()` on `schema_version` to return it, keeping the old root for the
|
|
@@ -103,19 +138,28 @@ previous version.
|
|
|
103
138
|
Copy the previous version as a starting point:
|
|
104
139
|
|
|
105
140
|
```
|
|
106
|
-
cp export_schema_v1.
|
|
141
|
+
cp export_schema_v1.6.json export_schema_v1.7.json
|
|
107
142
|
```
|
|
108
143
|
|
|
109
|
-
Edit `export_schema_v1.
|
|
110
|
-
- Update `$id` → `https://ossiq.org/schemas/export/v1.
|
|
144
|
+
Edit `export_schema_v1.7.json`:
|
|
145
|
+
- Update `$id` → `https://ossiq.org/schemas/export/v1.7.json`
|
|
111
146
|
- Update `title` and `description`
|
|
112
|
-
- Update `metadata.properties.schema_version.const` → `"1.
|
|
147
|
+
- Update `metadata.properties.schema_version.const` → `"1.7"`
|
|
113
148
|
- Apply the structural or additive changes to `$defs`
|
|
114
149
|
|
|
115
|
-
|
|
150
|
+
Take the new descriptions from the Pydantic `Field(description=...)` rather than retyping them, so the
|
|
151
|
+
two cannot drift. (`json.dumps(schema, indent=2, ensure_ascii=True) + "\n"` reproduces the existing
|
|
152
|
+
files byte for byte, which keeps a script-generated diff down to the real changes.)
|
|
153
|
+
|
|
154
|
+
Do the same for the standard profile (`export_schema_v1.7_standard.json`): copy the previous
|
|
116
155
|
standard schema, bump its `$id` / `title`, and mirror every change that isn't `FULL_ONLY`. The
|
|
117
156
|
projection test tells you exactly which properties are missing or extra.
|
|
118
157
|
|
|
158
|
+
**Check every enum you copied against the code that emits it.** They are hand-written and drift:
|
|
159
|
+
`next_action` lacked `Wait for cooldown` from 0.1.11 on, so any document with a package inside its
|
|
160
|
+
cooldown failed its own schema. `TestNextActionEnumMatchesTheEmitter` pins that one; export a real
|
|
161
|
+
project and validate it (`jsonschema.validate`) against both profiles before calling a schema done.
|
|
162
|
+
|
|
119
163
|
---
|
|
120
164
|
|
|
121
165
|
### 4. Schema registry — `src/ossiq/ui/renderers/export/json_schema_registry.py`
|
|
@@ -124,25 +168,28 @@ projection test tells you exactly which properties are missing or extra.
|
|
|
124
168
|
SCHEMA_FILES = {
|
|
125
169
|
(ExportJsonSchemaVersion.V1_5, ExportProfile.FULL): "export_schema_v1.5.json",
|
|
126
170
|
(ExportJsonSchemaVersion.V1_5, ExportProfile.STANDARD): "export_schema_v1.5_standard.json",
|
|
127
|
-
(ExportJsonSchemaVersion.V1_6, ExportProfile.FULL): "export_schema_v1.6.json",
|
|
128
|
-
(ExportJsonSchemaVersion.V1_6, ExportProfile.STANDARD): "export_schema_v1.6_standard.json",
|
|
171
|
+
(ExportJsonSchemaVersion.V1_6, ExportProfile.FULL): "export_schema_v1.6.json",
|
|
172
|
+
(ExportJsonSchemaVersion.V1_6, ExportProfile.STANDARD): "export_schema_v1.6_standard.json",
|
|
173
|
+
(ExportJsonSchemaVersion.V1_7, ExportProfile.FULL): "export_schema_v1.7.json", # add
|
|
174
|
+
(ExportJsonSchemaVersion.V1_7, ExportProfile.STANDARD): "export_schema_v1.7_standard.json", # add
|
|
129
175
|
}
|
|
130
176
|
|
|
131
177
|
def get_latest_version(self) -> ExportJsonSchemaVersion:
|
|
132
|
-
return ExportJsonSchemaVersion.
|
|
178
|
+
return ExportJsonSchemaVersion.V1_7 # bump
|
|
133
179
|
```
|
|
134
180
|
|
|
135
181
|
Also widen the `--schema-version` `Literal` in `src/ossiq/cli.py` and update
|
|
136
|
-
`HELP_SCHEMA_VERSION` in `src/ossiq/messages.py
|
|
182
|
+
`HELP_SCHEMA_VERSION` in `src/ossiq/messages.py`, and add the new full schema to the two file lists in
|
|
183
|
+
`.github/workflows/test.yml` (the wheel and sdist checks), which name the latest schema by hand.
|
|
137
184
|
|
|
138
185
|
---
|
|
139
186
|
|
|
140
187
|
### 5. Frontend types — `frontend/package.json`
|
|
141
188
|
|
|
142
|
-
Update the `generate:types` script to point at the new JSON schema:
|
|
189
|
+
Update the `generate:types` script to point at the new full JSON schema:
|
|
143
190
|
|
|
144
191
|
```json
|
|
145
|
-
"generate:types": "json2ts -i ../src/ossiq/ui/renderers/export/schemas/export_schema_v1.
|
|
192
|
+
"generate:types": "json2ts -i ../src/ossiq/ui/renderers/export/schemas/export_schema_v1.7.json -o src/types/report.ts"
|
|
146
193
|
```
|
|
147
194
|
|
|
148
195
|
Then regenerate:
|
|
@@ -152,7 +199,10 @@ cd frontend
|
|
|
152
199
|
npm run generate:types
|
|
153
200
|
```
|
|
154
201
|
|
|
155
|
-
This overwrites `frontend/src/types/report.ts`.
|
|
202
|
+
This overwrites `frontend/src/types/report.ts`. The root interface is named from the schema's title, so
|
|
203
|
+
it becomes `OSSIQExportSchemaV17`; rename the imports of the old name (`grep -rn OSSIQExportSchemaV16 src`).
|
|
204
|
+
TypeScript compiler errors after regeneration are the authoritative list of breaking changes to fix in
|
|
205
|
+
Vue components.
|
|
156
206
|
|
|
157
207
|
---
|
|
158
208
|
|
|
@@ -163,45 +213,58 @@ Run `npm run type-check` in `frontend/` to surface all type errors introduced by
|
|
|
163
213
|
Common patterns to check in Vue components and stores:
|
|
164
214
|
- New required fields need to be supplied in fixtures / mock data used in `vitest` tests
|
|
165
215
|
- Removed or renamed fields need updating at every access site
|
|
216
|
+
- A new per-package field has to be carried down the whole chain: `explorer/registry.ts` →
|
|
217
|
+
`types/registry.ts` → `explorer/transform.ts` → `composables/useD3Tree.ts` and, for the direct table,
|
|
218
|
+
`views/ScanReportView.vue` → `types/dependency-tree.ts`. Miss a link and the detail panel silently
|
|
219
|
+
shows nothing for that node type.
|
|
220
|
+
- If the new data can make a package worth reading on its own, add it to `isActionable` in
|
|
221
|
+
`composables/useReportFilters.ts` (the table hides packages with nothing to do by default)
|
|
166
222
|
- Structural changes (like v1.3's `dependency_path → dependency_paths`) require updating iteration logic, filter callbacks, and any `d3` graph-building code that expands the transitive package list
|
|
167
223
|
|
|
168
224
|
After all type errors are resolved, rebuild the SPA and regenerate the embedded template:
|
|
169
225
|
|
|
170
226
|
```bash
|
|
171
|
-
|
|
172
|
-
# then run whatever script bakes spa_app.html into the Python package
|
|
227
|
+
uv run just frontend-build # npm ci + type-check + vite build, then rewrites spa_app.html
|
|
173
228
|
```
|
|
174
229
|
|
|
230
|
+
The HTML report always embeds the **latest** version's full profile, so the SPA must read the newest schema.
|
|
231
|
+
|
|
175
232
|
---
|
|
176
233
|
|
|
177
234
|
### 7. Tests
|
|
178
235
|
|
|
179
|
-
**New schema registry test file** — copy `tests/ui/renderers/export/
|
|
236
|
+
**New schema registry test file** — copy `tests/ui/renderers/export/test_json_schema_registry_v1_6.py` and update version strings and structural assertions. Add the new version to `VERSIONS` in `test_json_schema_projection.py` (`test_every_registered_version_is_checked` fails until you do).
|
|
180
237
|
|
|
181
238
|
**Update existing tests** — hardcoded version strings to update:
|
|
182
239
|
- `test_metadata_contains_schema_version_and_timestamp` in `test_json.py`
|
|
183
|
-
- `
|
|
240
|
+
- `included_versions` in the previous schema registry test files
|
|
184
241
|
|
|
185
|
-
**New renderer tests** — add a `
|
|
186
|
-
- Output validates against the new JSON schema
|
|
242
|
+
**New renderer tests** — add a `TestSchemaVersion18` class in `test_json.py` covering:
|
|
243
|
+
- Output validates against the new JSON schema, in both profiles
|
|
187
244
|
- Any new structural invariants (e.g. deduplication counts, new field presence)
|
|
188
|
-
- Backward compat:
|
|
245
|
+
- Backward compat: every older registered version still produces its own shape
|
|
246
|
+
(`TestSchemaVersion15StaysAsReleased` — extend it, or add the sibling for the version you just superseded)
|
|
247
|
+
- `TestV16IsAdditiveOverV15`-style check that the new schema removes, retypes and newly requires nothing
|
|
189
248
|
|
|
190
249
|
---
|
|
191
250
|
|
|
192
251
|
## Checklist
|
|
193
252
|
|
|
194
253
|
```
|
|
195
|
-
[ ] ExportJsonSchemaVersion.
|
|
196
|
-
[ ] New Pydantic fields
|
|
254
|
+
[ ] ExportJsonSchemaVersion.V1_7 added to domain/common.py
|
|
255
|
+
[ ] New Pydantic fields tagged SINCE_V1_7 and given a profile decision in models.py
|
|
256
|
+
[ ] Record filters that read the new data gated on the declared version
|
|
197
257
|
[ ] build_export_data() factory branch added (only if structural)
|
|
198
|
-
[ ] export_schema_v1.
|
|
258
|
+
[ ] export_schema_v1.7.json and export_schema_v1.7_standard.json created
|
|
259
|
+
[ ] Every enum in them checked against its emitter; a real export validates against both profiles
|
|
199
260
|
[ ] json_schema_registry.py updated + get_latest_version() bumped
|
|
200
261
|
[ ] --schema-version Literal widened in cli.py + HELP_SCHEMA_VERSION updated
|
|
201
|
-
[ ]
|
|
202
|
-
[ ]
|
|
262
|
+
[ ] .github/workflows/test.yml file lists name the new schema
|
|
263
|
+
[ ] frontend/package.json generate:types script updated to v1.7
|
|
264
|
+
[ ] npm run generate:types run — src/types/report.ts regenerated, root type renamed at its imports
|
|
203
265
|
[ ] npm run type-check passes — all Vue component access sites updated
|
|
204
|
-
[ ]
|
|
205
|
-
[ ]
|
|
206
|
-
[ ]
|
|
266
|
+
[ ] New fields carried through the registry/transform/selection chain; isActionable considered
|
|
267
|
+
[ ] uv run just frontend-build — SPA rebuilt and spa_app.html regenerated
|
|
268
|
+
[ ] Schema registry tests added (full and standard), projection test covers the new version
|
|
269
|
+
[ ] Renderer tests updated; older versions pinned by a compat test
|
|
207
270
|
```
|