|
2 | 2 | "@objectstack/spec": patch |
3 | 3 | --- |
4 | 4 |
|
5 | | -Liveness ledger: three rows that were graded `planned` are now `live`, because objectui reads them at the `.objectui-sha` pin this repo builds against. Ledger evidence only. ⛔ No schema, parse or accept-set change. |
| 5 | +Liveness ledger: three rows that were graded `planned` are now `live`, because objectui reads them at the `.objectui-sha` pin this repo builds against. The prose these flips made false is corrected too. Ledger data, one author hint and comments only. ⛔ No schema, parse, `.describe()` or accept-set change. |
6 | 6 |
|
7 | | -The ledgers ship inside this package (`files[]` includes `liveness`), and `@objectstack/lint` reads them. What changes is the row data an upgrading reader or tool consults. `@objectstack/lint` warns on a `planned` row only when the row sets `authorWarn`, and none of these three rows does, so its output does not change. |
| 7 | +The ledgers ship inside this package (`files[]` includes `liveness`), and `@objectstack/lint` reads them, so the rows an upgrading reader or tool consults are these. `@objectstack/lint` warns on a `planned` row only when the row sets `authorWarn`, and none of the three flipped rows does, so the set of warnings does not change. One warning's hint text does change (see `flows` below). |
8 | 8 |
|
9 | 9 | - **`action.onSuccess.navigate` and `action.onSuccess.openIn` are `live`.** The console's action runner performs the declared post-success hop after an `api` or `script` action succeeds. It interpolates `navigate` with the `${param.*}`, `${ctx.*}` and `${result.*}` scopes, refuses a URL that is neither http(s) nor relative, and opens a new tab only on `openIn: 'newTab'`, so the materialized `'self'` default has one source of truth. The action renderers and the declared-actions bar forward the block to the runner, and the console wires the runner's navigation to its router. Both rows had been `planned` since the contract landed spec-first ahead of this reader. |
10 | | -- **`translation.flows.screens` is `live`.** The console's screen-flow runner draws each screen's heading and each field's `label` / `placeholder` from `flows.<flow>.screens.<node_id>` in the active language, and falls back to the authored string key by key. The bundle reaches it through the translations route and the console's language loader. |
11 | | -- **`translation.flows.label` stays `planned`.** Nothing reads it yet. The `flows` group's `authorWarn` stays too, so `os lint` output is unchanged and the i18n coverage demand for `flows.*` stays held back. |
| 10 | +- **`translation.flows.screens` is `live`.** The console's screen-flow runner draws each screen's heading and each field's `label` / `placeholder` from `flows.FLOW.screens.NODE_ID` in the active language, and falls back to the authored string key by key. The bundle reaches it through the translations route and the console's language loader. |
| 11 | +- **`translation.flows.label` stays `planned`, and the `flows` group keeps its `authorWarn`.** Nothing reads the flow's own label yet. So `os lint` still warns when a bundle authors `flows`, and the i18n coverage demand for `flows.*` stays held back. The warning's hint used to say no shipped runner reads the group. It now says the runner reads `screens`, and that only the flow `label` is stored and never shown. |
| 12 | +- **Prose corrected.** The `onSuccess` JSDoc in `ui/action.zod.ts` now names the console reader (`ActionRunner`'s `navigateOnSuccess`). The `flows` JSDoc in `system/translation.zod.ts` and the `translateFlow` docblock in `system/i18n-resolver.ts` now say `screens` is read client-side by `FlowRunner` and the flow label is not. The liveness README's translation cell says the same. These are comments only: a comment-stripped transpile of the three source files is byte-identical to before. |
12 | 13 | - `state-counts.md` is regenerated: `action` has 46 live and 0 planned (was 44 and 2); `translation` has 23 live and 1 planned (was 22 and 2). |
0 commit comments