Skip to content

chore(deps): resolve @objectstack/* 17.6.0 in pnpm-lock.yaml and follow its mechanical contract moves; five owner-held reds reported by row (objectui#11438) #21871

chore(deps): resolve @objectstack/* 17.6.0 in pnpm-lock.yaml and follow its mechanical contract moves; five owner-held reds reported by row (objectui#11438)

chore(deps): resolve @objectstack/* 17.6.0 in pnpm-lock.yaml and follow its mechanical contract moves; five owner-held reds reported by row (objectui#11438) #21871

Triggered via pull request October 3, 2026 08:36
Status Failure
Total duration 15m 13s
Artifacts –

ci.yml

on: pull_request
Matrix: test-coverage
Matrix: test
Test (dist pins)
1m 31s
Test (dist pins)
Test (coverage)
Test (coverage)
Fit to window
Zoom out
Zoom in

Annotations

36 errors and 15 notices
Test (shard 3/8)
Process completed with exit code 1.
[@object-ui/console] src/__tests__/registry-inputs-spec-parity.test.ts > registry `inputs` vs `@objectstack/spec` ComponentPropsMap (repo-wide) > the four GA blocks resolve their ruled split — declared vs carved out: apps/console/src/__tests__/registry-inputs-spec-parity.test.ts#L4919
AssertionError: object-grid does not publish these spec keys, and they are not the ruled carve-out: expected [ 'keyboardNavigation' ] to deeply equal [] - Expected + Received - [] + [ + "keyboardNavigation", + ] ❯ src/__tests__/registry-inputs-spec-parity.test.ts:4919:9
[@object-ui/console] src/__tests__/registry-inputs-spec-parity.test.ts > registry `inputs` vs `@objectstack/spec` ComponentPropsMap (repo-wide) > object-grid publishes every top-level key its spec props schema declares: apps/console/src/__tests__/registry-inputs-spec-parity.test.ts#L4797
AssertionError: expected [ 'keyboardNavigation' ] to deeply equal [] - Expected + Received - [] + [ + "keyboardNavigation", + ] ❯ src/__tests__/registry-inputs-spec-parity.test.ts:4797:28
[dom] packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx > objectui#8894 — no second measure is offered on a metric-family widget > SUBJECT: `scatter` with one measure chosen offers no add control (catalog): packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx#L100
AssertionError: expected <button …(6)>…(2)</button> to be null - Expected: null + Received: <button aria-expanded="false" aria-haspopup="dialog" class="inline-flex items-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground px-4 py-2 min-w-0 justify-between h-7 w-full text-xs" data-state="closed" role="combobox" type="button" > <span class="truncate" > Add measure… </span> <svg aria-hidden="true" class="lucide lucide-chevrons-up-down ml-2 h-4 w-4 shrink-0 opacity-50" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="m7 15 5 5 5-5" /> <path d="m7 9 5-5 5 5" /> </svg> </button> ❯ packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx:100:26
[dom] packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx > objectui#8894 — no second measure is offered on a metric-family widget > SUBJECT: `funnel` with one measure chosen offers no add control (catalog): packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx#L100
AssertionError: expected <button …(6)>…(2)</button> to be null - Expected: null + Received: <button aria-expanded="false" aria-haspopup="dialog" class="inline-flex items-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground px-4 py-2 min-w-0 justify-between h-7 w-full text-xs" data-state="closed" role="combobox" type="button" > <span class="truncate" > Add measure… </span> <svg aria-hidden="true" class="lucide lucide-chevrons-up-down ml-2 h-4 w-4 shrink-0 opacity-50" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="m7 15 5 5 5-5" /> <path d="m7 9 5-5 5 5" /> </svg> </button> ❯ packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx:100:26
[dom] packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx > objectui#8894 — no second measure is offered on a metric-family widget > SUBJECT: `donut` with one measure chosen offers no add control (catalog): packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx#L100
AssertionError: expected <button …(6)>…(2)</button> to be null - Expected: null + Received: <button aria-expanded="false" aria-haspopup="dialog" class="inline-flex items-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground px-4 py-2 min-w-0 justify-between h-7 w-full text-xs" data-state="closed" role="combobox" type="button" > <span class="truncate" > Add measure… </span> <svg aria-hidden="true" class="lucide lucide-chevrons-up-down ml-2 h-4 w-4 shrink-0 opacity-50" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="m7 15 5 5 5-5" /> <path d="m7 9 5-5 5 5" /> </svg> </button> ❯ packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx:100:26
[dom] packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx > objectui#8894 — no second measure is offered on a metric-family widget > SUBJECT: `pie` with one measure chosen offers no add control (catalog): packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx#L100
AssertionError: expected <button …(6)>…(2)</button> to be null - Expected: null + Received: <button aria-expanded="false" aria-haspopup="dialog" class="inline-flex items-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground px-4 py-2 min-w-0 justify-between h-7 w-full text-xs" data-state="closed" role="combobox" type="button" > <span class="truncate" > Add measure… </span> <svg aria-hidden="true" class="lucide lucide-chevrons-up-down ml-2 h-4 w-4 shrink-0 opacity-50" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="m7 15 5 5 5-5" /> <path d="m7 9 5-5 5 5" /> </svg> </button> ❯ packages/plugin-dashboard/src/__tests__/WidgetConfigPanel.measureDoor-8894.test.tsx:100:26
[unit] packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts > objectui#7349 — every canonical VIEW operator is executed, not waved through > `is_empty` filters rather than matching everything: packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts#L263
AssertionError: expected [] to deeply equal [ 'b', 'c' ] - Expected + Received - [ - "b", - "c", - ] + [] ❯ packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts:263:50
[unit] packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts > objectui#7349 — null-ness takes direction from the operator NAME > `isnotempty` selects only the row that has a value: packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts#L140
AssertionError: expected [] to deeply equal [ 'has' ] - Expected + Received - [ - "has", - ] + [] ❯ packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts:140:56
[unit] packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts > objectui#7349 — null-ness takes direction from the operator NAME > `is_not_empty` selects only the row that has a value: packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts#L140
AssertionError: expected [] to deeply equal [ 'has' ] - Expected + Received - [ - "has", - ] + [] ❯ packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts:140:56
[unit] packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts > objectui#7349 — null-ness takes direction from the operator NAME > `isempty` selects null, undefined and the absent key: packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts#L136
AssertionError: expected [] to deeply equal [ 'null', 'undef', 'missing' ] - Expected + Received - [ - "null", - "undef", - "missing", - ] + [] ❯ packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts:136:56
[unit] packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts > objectui#7349 — null-ness takes direction from the operator NAME > `is_empty` selects null, undefined and the absent key: packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts#L136
AssertionError: expected [] to deeply equal [ 'null', 'undef', 'missing' ] - Expected + Received - [ - "null", - "undef", - "missing", - ] + [] ❯ packages/core/src/adapters/__tests__/ValueDataSource.astFilterVocabulary.test.ts:136:56
Test (shard 8/8)
Process completed with exit code 1.
[unit] packages/core/src/utils/__tests__/filter-source-merge.test.ts > lowering a ViewFilterRule — the operator vocabulary (objectui#3431) > emits no value slot for a rule that carries none: packages/core/src/utils/__tests__/filter-source-merge.test.ts#L104
AssertionError: expected { a: { '$empty': true } } to deeply equal { a: { '$null': true } } - Expected + Received { "a": { - "$null": true, + "$empty": true, }, } ❯ packages/core/src/utils/__tests__/filter-source-merge.test.ts:104:34
[unit] packages/data-objectstack/src/readme-filter-operator-table.test.ts > README filter-operator tables are decided by convertFiltersToAST (objectui#8558) > every canonical operator is accounted for by the two tables (objectui#8976) > no member of the spec FILTER_OPERATORS is missing from BOTH tables: packages/data-objectstack/src/readme-filter-operator-table.test.ts#L570
AssertionError: the spec declares these operators canonical and this page documents them neither as supported nor as refused. Until objectui#8976 `$icontains` was exactly that: absent from `operatorMap` AND from the unknown-operator message, so every other case here derived it away. Add a row to whichever table the code actually implements — and if the code implements neither, that is the defect, not this pin: expected [ '$empty' ] to deeply equal [] - Expected + Received - [] + [ + "$empty", + ] ❯ packages/data-objectstack/src/readme-filter-operator-table.test.ts:570:9
Test (shard 6/8)
Process completed with exit code 1.
[unit] packages/core/src/actions/__tests__/actionKeys.pin.test.ts > action key inventory (objectstack#4075 step 1) > lists every key the spec ActionSchema declares: packages/core/src/actions/__tests__/actionKeys.pin.test.ts#L128
AssertionError: expected { Object (missing, stale) } to deeply equal { missing: [], stale: [] } - Expected + Received { - "missing": [], + "missing": [ + "outcomeMessages", + ], "stale": [], } ❯ packages/core/src/actions/__tests__/actionKeys.pin.test.ts:128:32
Test (shard 5/8)
Process completed with exit code 1.
[unit] packages/core/src/adapters/__tests__/ValueDataSource.dollarFilterVocabulary.test.ts > objectui#8447 — every executed operator constrains > the case table covers FILTER_OPERATORS exactly — none drops out unnoticed: packages/core/src/adapters/__tests__/ValueDataSource.dollarFilterVocabulary.test.ts#L267
AssertionError: expected [ '$between', '$contains', …(15) ] to deeply equal [ '$between', '$contains', …(14) ] - Expected + Received @@ -1,8 +1,9 @@ [ "$between", "$contains", + "$empty", "$endsWith", "$eq", "$exists", "$gt", "$gte", ❯ packages/core/src/adapters/__tests__/ValueDataSource.dollarFilterVocabulary.test.ts:267:42
[unit] packages/types/src/__tests__/spec-object-refinements-7715.test.ts > objectui#7715 — census: the spec's object-level checks at the six derivation sites > every `check*` the spec exports is named by exactly one site or carried elsewhere: packages/types/src/__tests__/spec-object-refinements-7715.test.ts#L210
AssertionError: expected [ …(6) ] to deeply equal [ …(5) ] - Expected + Received @@ -1,6 +1,7 @@ [ + "checkDashboardWidgetDimensionlessMeasureArity", "checkDashboardWidgetMetricMeasureArity", "checkDashboardWidgetStageOrder", "checkGlobalFilterDateDefaultValue", "checkListViewCalendarVisualization", "checkPageSourceCompleteness", ❯ packages/types/src/__tests__/spec-object-refinements-7715.test.ts:210:39
[unit] packages/types/src/__tests__/spec-object-refinements-7715.test.ts > objectui#7715 — census: the spec's object-level checks at the six derivation sites > DashboardWidgetSchema (complex.zod.ts) accounts for every object-level check the spec object carries: packages/types/src/__tests__/spec-object-refinements-7715.test.ts#L201
AssertionError: expected { …(2) } to deeply equal { …(2) } - Expected + Received { "site": "DashboardWidgetSchema (complex.zod.ts)", - "specObjectLevelChecks": 2, + "specObjectLevelChecks": 3, } ❯ packages/types/src/__tests__/spec-object-refinements-7715.test.ts:201:8
Test
Process completed with exit code 3.
Test
6 test shard(s) did not report success: Test (shard 1/8) (failure), Test (shard 3/8) (failure), Test (shard 5/8) (failure), Test (shard 6/8) (failure), Test (shard 7/8) (failure), Test (shard 8/8) (failure). ⛔ 'skipped' is not a pass here -- that is the whole reason this gate reads each shard instead of the matrix rollup (objectui#9499).
Changeset Fixed Group Check
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
🎭 Playwright Run Summary
23 skipped 29 passed (26.7s)
Build & E2E
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (dist pins)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Build Docs
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 3/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 1/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 7/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Type Check
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 8/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 6/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 5/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 2/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test (shard 4/8)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
Test
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"