Repository navigation
Commit 0059661
Fixes #10905
Clause-②: no — comment and describe text only; no accept set or public
surface moves.
## What changed
Two docblocks in `packages/types/src`, comment text only, plus an
empty-frontmatter changeset. No `.describe()` string, type, value or
accept set moves.
1. **`ObjectChartSchema.series`, the TS interface in `objectql.ts`.**
The sentence "A `type` written on this arm anyway is an excess property
on a literal typed by this interface" is replaced. Since PR #10802
(objectui#10770), each `series` entry is either the spec's `ChartSeries`
(the `{ name }` arm) or the internal `{ dataKey }` arm. The `{ name }`
arm declares `type`, and excess-property checking on that union accepts
a key that either arm declares, provided the value fits that
declaration. So `{ dataKey: 'amount', type: 'line' }` compiles. The zod
half of the paragraph (a plain `z.object`, which strips `type`, so the
entry parses clean and the key is dropped) is still true and is kept.
"The mirror's `.describe()` says the same" now reads "names the same
omission". The `.describe()` string names the omission and never made
the excess-property claim, so it is not touched.
2. **The route overview headed "WHERE THIS ARM IS INSTALLED", in
`zod/objectql.zod.ts`.** Its second-route paragraph made three claims.
It said a named view's `listViews` "is unmirrored". It said
`generateViewSchema` merges the same two nestings. It named a `custom`
issue at `listViews.KEY.options.kanban.groupBy`. Since PR #10821
(objectui#7928), `listViews` is
`stripImportedDefaults(SpecViewSchema).shape.listViews`. That record
refuses a named view's `options` bag whole, `generateViewSchema` reads
no `options` bag, and `checkNamedViewKanbanStrayGroupBy` reports at
`listViews.KEY.kanban.groupBy` only. The heading ("TWO NESTINGS EACH")
and the final sentence ("cannot depend on which route or nesting")
described the same pre-#10821 shape, so they are corrected in the same
docblock. Three nestings now take the one string. A named view's
`options.kanban.groupBy` meets the protocol's refusal of `options`
instead.
Route 1 of the overview (`list-view`: `kanban` plus `options.kanban`)
was re-read against `ListView` and `ListViewSchema.options` and is
unchanged.
## Measurements
The probes are kept outside the tree and were run once. Everything was
measured on `733fd5ac6`.
**Sentence 1, a `tsc` probe.** Three literals typed `ObjectChartSchema`,
run under the package's own tsconfig:
- `series: [{ dataKey: 'amount', type: 'line' }]` produced no
diagnostic, so the sentence under test is false.
- Positive control: `series: [{ dataKey: 'amount', zzzUnknownKey: 1 }]`
produced TS2353 ("Object literal may only specify known properties"), so
a genuinely unknown key IS refused.
- Value control: `series: [{ dataKey: 'amount', type:
'not-a-chart-family' }]` produced TS2322, so the value must fit the
spec's `ChartType`.
**The zod half, a parse probe** (`ObjectChartSchema.safeParse`):
- `{ dataKey: 'amount', type: 'line' }` succeeds with series
`[{"dataKey":"amount"}]`, so the key is stripped and that half stays
true.
- Controls: `{ dataKey, chartType: 'line' }` keeps `chartType`, and `{
name, type: 'line' }` keeps `type`.
**Sentence 2, a parse probe** (`ObjectViewSchema.safeParse`, a named
view carrying `columns` and `kanban.columns`):
- `kanban.groupBy` gives `unrecognized_keys` at `listViews.board.kanban`
naming `groupBy`, plus `custom` at `listViews.board.kanban.groupBy`.
- `options.kanban.groupBy` gives only `unrecognized_keys` at
`listViews.board` naming `options`. There is no `custom` under
`options`.
- Dark control (`groupByField` and `columns` only): success.
- `generateViewSchema` reads no `options` bag: a `.options` read pattern
hits `plugin-view`'s `ObjectView.tsx` zero times, and hits
`plugin-list`'s `ListView.tsx` (the positive control) 48 times.
**Lit control.** I extracted each of the
`checkNamedViewKanbanStrayGroupBy` and `namedViewKindRefusals`
docblocks, from its opening line through the declaration line, before
and after the edit. Both are byte-identical: `cmp` is silent, and the
sha256 prefixes are `aaa003254ab7127a` and `7c8aa1b4f5cd6a3d` on both
sides.
## Changeset
On the docblock commit alone, `node
scripts/check-changeset-presence.mjs` answered exit 1, because both
files are published source of `@object-ui/types`. So a declaration is
owed.
The declaration uses empty frontmatter, not `patch`. Nothing a consumer
acts on moves. Both docblocks reach the build output only as comment
text: after `pnpm --filter @object-ui/types build`, the new `series`
sentence is in `dist/objectql.d.ts` and the route overview is in the zod
module's JS. At the time of writing, both changes that made the
sentences false (PR #10802 and PR #10821) are still pending changesets,
so no release has carried the false text.
## Gates
I derived these by hand from the root `package.json` and
`.github/workflows/`, because the objectstack `dispatch-gates.mjs` does
not cover this repository.
At head `950bf6406`:
- Exit 0 for all of these: `check-control-bytes`,
`check-new-cross-file-line-citations` ("0 new citation(s)"),
`check-changeset-presence` (empty-frontmatter pass),
`check-changeset-fixed`, `check-changeset-no-major`,
`check-changeset-overwrite`, `check-changeset-claims`,
`check-pending-changeset-literals`, `check-spec-symbol-derivation`,
`check-handler-key-read-sites` and `check-unreferenced-sources`.
- `pnpm exec vitest run packages/types/`: 264 files and 5854 tests
passed, exit 0.
- `pnpm exec vitest run` on the three script tests that read
`objectql.zod.ts` as text (`check-eager-closure-budget`,
`check-handler-key-read-sites` and `vite-types-zod-lazy`): 3 files and
241 tests passed, exit 0.
At `7449bc6a9`, which differs from the head only in the changeset's
wording (`git diff --stat` shows one file under `.changeset/`):
- `pnpm --filter @object-ui/types build` exit 0, and the dist
completeness check reported complete.
- `pnpm --filter @object-ui/types type-check` exit 0.
- `pnpm --filter @object-ui/types lint` exit 0, with 0 errors.
`node scripts/check-governed-queue-guard.mjs --test` over the three
paths answered NOT GOVERNED.
NOT MEASURED:
- `check:eager-closure`, reason: it reads every package's built dist,
and a comment-only diff moves no import edge. Its script test above ran
green.
- A downstream consumer type-check, reason: the `.d.ts` changes JSDoc
text only, and no type bytes move.
Known repo-wide red, left alone: `Spec Main Shape Gate` (objectui#10916,
owned by another seat).
## Acceptance notes
- Nothing pins either half of the corrected `series` sentence: a `type`
on a `{ dataKey }` entry compiles, and the mirror strips it. The probes
above were run once. This is an observation, not filed. Carrier: none.
- `main` has not moved from `733fd5ac6` on either file. PR #10927 edits
`objectql.zod.ts` at its imports and its tail, which are disjoint from
this docblock.
Implemented by the dispatched dev run of the `domain:spec` seat, session
`https://claude.ai/code/session_012UwY3ahMixEFkfTUxMVkYm`.
---
_Generated by [Claude
Code](https://claude.ai/code/session_012UwY3ahMixEFkfTUxMVkYm)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent d61ce42 commit 0059661
3 files changed
Lines changed: 38 additions & 13 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 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4821 | 4821 | | |
4822 | 4822 | | |
4823 | 4823 | | |
4824 | | - | |
4825 | | - | |
4826 | | - | |
4827 | | - | |
4828 | | - | |
| 4824 | + | |
| 4825 | + | |
| 4826 | + | |
| 4827 | + | |
| 4828 | + | |
| 4829 | + | |
| 4830 | + | |
| 4831 | + | |
4829 | 4832 | | |
4830 | 4833 | | |
4831 | 4834 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
919 | 919 | | |
920 | 920 | | |
921 | 921 | | |
922 | | - | |
| 922 | + | |
923 | 923 | | |
924 | 924 | | |
925 | 925 | | |
| |||
930 | 930 | | |
931 | 931 | | |
932 | 932 | | |
933 | | - | |
934 | | - | |
935 | | - | |
936 | | - | |
937 | | - | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
938 | 940 | | |
939 | 941 | | |
940 | 942 | | |
| |||
943 | 945 | | |
944 | 946 | | |
945 | 947 | | |
946 | | - | |
947 | | - | |
| 948 | + | |
| 949 | + | |
948 | 950 | | |
949 | 951 | | |
950 | 952 | | |
| |||
0 commit comments