Repository navigation
Commit 7d0f911
fix(spec,runtime):
Fixes #15124
Clause-②: yes
`ctx.engine.find(object, query)` now takes the engine's query envelope —
`EngineQueryOptions`, **by identity**, the same options bag
`IDataEngine.find` and ObjectQL's own `engine.find` take. The
bare-filter parameter shape is withdrawn. One platform, one query shape.
Director seat ruling, decision batch #123 item 3, letter D (comment
5644710751), carrying the maintainer's 「同意」:
> `ActionEngineFacade.find` takes the same query envelope as the
engine's `find`; the bare-filter parameter shape is **withdrawn**.
**BREAKING for action handlers**, landed under the launch-window
convention: no deprecation window, migration in the changeset and
registered as an ADR-0087 semantic entry
(`action-engine-facade-find-query-envelope`). The changeset carries the
arm the level axis needs — `Clause-②: yes (narrowing)` — and a `minor`
bump on both published packages, per the no-major rule.
## Migration
| You wrote | Write instead |
| --- | --- |
| `ctx.engine.find('task', { status: 'open' })` |
`ctx.engine.find('task', { where: { status: 'open' } })` |
| `ctx.engine.find('task', {})` | unchanged — an empty envelope is still
the unfiltered read |
Lossless and mechanical. `tsc --noEmit` over a consumer's handlers finds
every unmigrated call, because a bare filter is now a compile error
(below).
## What changed
- **`packages/spec/src/ui/action-params.zod.ts`** — the declaration.
`find(object, query: EngineQueryOptions)`, plus a member doc that states
the envelope, the migration, the measured refusal and the `context`
rule.
- **`packages/runtime/src/action-execution.ts`** — the `find` arm passes
the envelope through. The double-wrap is gone; `context` is still spread
last, so the facade's own elevated `ExecutionContext` wins over a
caller-supplied one.
- **`packages/spec/src/ui/action-params.test.ts`** — #14175's
MEASURED-GAP pin flipped into a refusal pin, plus positive controls for
the envelope keys a handler can now reach.
- **`packages/runtime/src/action-engine-facade-find-envelope.test.ts`**
(new) — the runtime half: what argument the engine actually RECEIVED,
not what rows came back. A rows-only pin is exactly what the original
defect passed.
-
**`packages/spec/src/migrations/entries/semantic/18.action-engine-facade-find-query-envelope.ts`**
(new) — the ADR-0087 D3 entry. Semantic rather than a D2 conversion
because the rewrite lives in an authored TypeScript function body, which
`migrate meta` cannot reach.
- **`examples/app-todo/src/actions/task.handlers.ts`** — the one in-repo
caller (see the probe below).
- **`content/docs/ui/actions.mdx`** — the callout, inverted, with an
upgrade note.
- Generated: the migration registry, `api-surface-declarations/`, and
the two skill reference indexes.
## Measurements the dispatch asked for
**The blast-radius probe, re-run with controls.** `ActionEngineFacade`
has **zero importers outside `packages/spec`** at `24d622b9` — the
card's reading holds. Probe exit 0 / 40 hits, all prose or the unrelated
runtime symbol `buildActionEngineFacade`; **firing control**
`ActionHandlerContext` finds a real cross-package import
(`examples/app-todo/.../task.handlers.ts`), **dark control**
`ActionEngineFacadeZZZ` exits 1 / 0 hits. Exit codes captured before any
pipe.
ActionEngineFacade.find takes the engine query envelope, not a bare filter (#19223)1 parent c7448dc commit 7d0f911
21 files changed
Lines changed: 1420 additions & 652 deletions
File tree
- .changeset
- content/docs/ui
- examples/app-todo/src/actions
- packages
- runtime/src
- spec
- api-surface-declarations
- src
- migrations
- entries/semantic
- ui
- scripts
- skills
- objectstack-data/references
- objectstack-ui/references
Lines changed: 93 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
186 | 203 | | |
187 | 204 | | |
188 | 205 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
41 | 46 | | |
42 | 47 | | |
43 | 48 | | |
| |||
106 | 111 | | |
107 | 112 | | |
108 | 113 | | |
109 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
110 | 117 | | |
111 | 118 | | |
112 | 119 | | |
| |||
135 | 142 | | |
136 | 143 | | |
137 | 144 | | |
| 145 | + | |
138 | 146 | | |
139 | 147 | | |
140 | 148 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | | - | |
41 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
42 | 45 | | |
43 | 46 | | |
44 | 47 | | |
| |||
58 | 61 | | |
59 | 62 | | |
60 | 63 | | |
61 | | - | |
| 64 | + | |
62 | 65 | | |
63 | 66 | | |
64 | 67 | | |
| |||
121 | 124 | | |
122 | 125 | | |
123 | 126 | | |
124 | | - | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
125 | 130 | | |
126 | 131 | | |
127 | 132 | | |
| |||
138 | 143 | | |
139 | 144 | | |
140 | 145 | | |
141 | | - | |
| 146 | + | |
142 | 147 | | |
143 | | - | |
144 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
145 | 154 | | |
146 | 155 | | |
147 | 156 | | |
| |||
0 commit comments