@@ -8087,10 +8087,14 @@ const step18: MigrationStep = {
80878087 + 'their own rows in an in-memory data source that reads the record form and excludes '
80888088 + 'EVERY row for a rule array, so a rewrite there would empty the block. Such a row keeps loading unchanged '
80898089 + '(`applyConversionsToStoredItem` replays the chain without validating, by its own '
8090- + 'contract) and is refused at the `filter` door on its next save — for a combinator '
8091- + 'record, a refusal that names the combinator and says why no rule spells it. '
8092- + '`os migrate meta --stored` does not list these rows yet: a row the conversion leaves '
8093- + 'as stored reports there as already on protocol.',
8090+ + 'contract), and its `filter` door refuses the form: at `dataSource.filter` on the page\'s '
8091+ + 'next save; at a block\'s `properties.filter` — like `properties.defaultFilters`, a key of '
8092+ + 'the open `properties` bag — only as the component-props gate\'s advisory finding '
8093+ + '(`os validate`), since a re-save through the metadata API is not refused there. For a '
8094+ + 'combinator record that refusal names the combinator and says why no rule spells it. '
8095+ + '`os migrate meta --stored` lists each filter left as stored as a TODO under its row, '
8096+ + 'naming the block and what blocks the rewrite; a row whose only finding is such a TODO is '
8097+ + 'reported `skipped`, and the run\'s exit code does not change for it.',
80948098 acceptanceCriteria:
80958099 '`ElementDataSourceSchema.safeParse({ object, filter: [{ field: \'status\', operator: '
80968100 + '\'equals\', value: \'active\' }] })` succeeds and the parsed `filter` is the same rule '
0 commit comments