You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5104a5d
Browse filesBrowse the repository at this point in the historyBrowse files
fix(spec,cli): todos stays whole and absentTodos names a subset; four code-door entries lose their question; tiers is a carrier
Contract-review patch round: applyMetaMigrations().todos and each hop's
todos keep every semantic entry again; absentTodos names the proven-absent
entries as a subset of them (same objects). os migrate meta lists todos minus
absentTodos. The four CEL/RLS predicate entries whose surface also names a
direct evaluator or compiler caller lose relevantWhen (batch 25). A declared
tiers preset answers unknown like plugins. Docs: --all in the flags table.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RPo7FUd6bSnAfkWMAKi848
Copy file name to clipboardExpand all lines: .changeset/22072-migrate-meta-relevance-predicate.md
+14-7Lines changed: 14 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,11 +8,18 @@
8
8
Clause-②: yes
9
9
10
10
-**`SemanticMigration.relevantWhen`** (`@objectstack/spec/migrations`) is a new optional field. It holds a structured question over the loaded stack, `{ kind: 'stack-declares', keys: [...] }`: does the stack declare anything under one of these top-level keys? A key's value in a `packages[].manifest` body counts the same as a top-level value. The question is closed and named. It is never free text, and it never matches against the prose of `surface`. The new types `SemanticRelevance`, `StackDeclaresRelevance` and `SemanticRelevanceKey` are exported beside `SemanticMigration`.
11
-
-**`applyMetaMigrations`** asks each entry's question of the stack it is given and of every hop checkpoint. It returns the new `absentTodos`, on the chain result and on each hop, with the entries whose question answered `absent` in all of them. `todos` keeps every other entry. Together the two arrays hold every semantic entry of every hop crossed, each once and in chain order. Entries move only on a positive proof. These cases answer `unknown` and keep the entry listed:
12
-
- a value the question cannot read (a function, a promise, a scalar, a getter that throws);
13
-
- a stack that is not a plain object;
14
-
- any `plugins` / `devPlugins` entry, since a plugin can register metadata the stack does not show.
11
+
-**`applyMetaMigrations`** asks each entry's question of the stack it is given and of every hop checkpoint.
12
+
-**`todos` is unchanged.**`MigrationChainResult.todos` and `MigrationHopResult.todos` still hold every semantic entry of every hop crossed, whatever the stack holds, as before.
13
+
-**`absentTodos` is a new required member** of `MigrationChainResult` and `MigrationHopResult`. It names the subset of `todos` whose question answered `absent` in all of them: the same objects, in chain order. Code that only reads a chain result needs no change. Code that builds one of these two interfaces itself must now supply `absentTodos` (an empty array when nothing is proven absent).
14
+
-**Only a positive proof names an entry.** These cases answer `unknown` and leave it off `absentTodos`:
15
+
- a value the question cannot read (a function, a promise, a scalar, a getter that throws);
16
+
- a stack that is not a plain object;
17
+
- any `plugins`, `devPlugins` or `tiers` entry, since a plugin, or the platform plugins a tier preset loads, can register metadata the stack does not show.
15
18
16
-
An entry that judges a conversion which applied an edit in the same run also stays listed. A consumer that reads only `todos` gets the entries this stack may owe. The rest are in `absentTodos`.
17
-
-**The first batch is 29 entries** (5 from protocol 17, 24 from protocol 18). Each one's surface lives only under named top-level stack keys: `analyticsCubes`, `apis`, `jobs`, `mappings`, `hooks`, `agents`, `tools`, `dashboards` (with `reports` and `pages` for the chart-config entry), `datasets`, `permissions` and `sharingRules`. Each entry was also checked to confirm that its acceptance criteria send the author to no stored row and no runtime door. Every other entry is listed exactly as before.
18
-
-**`os migrate meta`** prints one line after the listed notices. It counts the entries proven absent and names `--all`. A second line says that the proof covers the stack this run loaded, and not metadata a deployment stores. `--all` prints each of those entries in full, with the keys it was proven absent under. `--json` always carries them under `absentTodos`, and under `hops[].absentTodos` with `--step`. `--step` adds a `not listed` count to each hop line. A run whose only notices are proven absent still writes `--out`.
19
+
An entry that judges a conversion which applied an edit in the same run is never named either.
20
+
-**The first batch is 25 entries** (5 from protocol 17, 20 from protocol 18). Each one's surface lives only under named top-level stack keys: `analyticsCubes`, `apis`, `jobs`, `mappings`, `hooks`, `agents`, `tools`, `dashboards` (with `reports` and `pages` for the chart-config entry), `datasets`, `permissions` and `sharingRules`. None of them names a code door. Each entry was also checked to confirm that its acceptance criteria send the author to no stored row and no runtime door. Every other entry is never named absent, so it is listed exactly as before.
21
+
-**`os migrate meta`** lists `todos` minus `absentTodos`. After the listed notices it prints one line that counts the entries proven absent and names `--all`. A second line says that the proof covers the stack this run loaded, and not metadata a deployment stores.
22
+
-`--all` prints each of those entries in full, with the keys it was proven absent under.
23
+
-`--json` keeps `todos` whole and adds `absentTodos`, plus `hops[].absentTodos` with `--step`.
24
+
-`--step` reports each hop's listed count and adds a `not listed` count to the hop line.
25
+
- A run whose only notices are proven absent still writes `--out`.
Copy file name to clipboardExpand all lines: content/docs/upgrading.mdx
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -215,6 +215,7 @@ Useful flags:
215
215
| Flag | What it does |
216
216
| :--- | :--- |
217
217
|`--step`| Report each major's hop separately, so a failure bisects to the exact major |
218
+
|`--all`| Also list, in full, the manual changes whose surface the command proved absent from your stack — by default they are only counted. `--json` always reports them in `todos` and names them in `absentTodos`|
218
219
|`--out migrated.stack.json`| Also write the migrated stack as a JSON snapshot — the only file the command writes |
219
220
|`--to 17`| Stop at an intermediate major instead of this runtime's |
220
221
|`--json`| Machine-readable output, for CI or an agent |
0 commit comments