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
objectui#3160, objectstack#4115 ledger batch 6. All three packages leave the
ledger (29 -> 17 collisions, 14 -> 11 packages).
Verdicts, per SYMBOL rather than per cluster — the batch's own triage note
predicted `SecurityPolicy` and `DroppedFieldsEvent` were both spec hand copies,
and only one of them was:
@object-ui/data-objectstack
- DroppedFieldsEvent -> re-export. The copy's comment said it mirrored the
spec "so we don't pin a client type version" and widened `reason` to bare
`string` "for forward-compatibility". The spec IS the client type version,
and the widening deleted the only signal that would tell AdapterProvider's
toast (it branches on `readonly_when`) that a third reason had appeared.
- CacheStats -> MetadataCacheStats (spec's is ICacheService's)
- MetadataSaveOptions -> MetadataClientSaveOptions (spec's writes a FILE)
- SecurityPolicy -> SecurityManagerPolicy (spec's is supply-chain)
- ValidationError -> DataApiValidationError, per the cross-package
convention registered on objectstack#4115. The RUNTIME `name` stays
'ValidationError': normaliseClientError and @object-ui/react's
error-message both sniff err.name, so that string is a wire contract.
@object-ui/plugin-chatbot
- PendingActionRow / PendingActionStatus -> re-export. Three drifts, each of
which had DISABLED a compile-time check: `status: PendingActionStatus |
string` (a union with string absorbs the literals), `[k: string]: unknown`
(objectstack#4075 — makes every structural comparison answer "identical"),
and created_at/updated_at, which the contract lacks and nothing reads.
- Tool / MessageContent -> SKIP_PATH_SEGMENTS. They live in src/elements/,
vendored Vercel AI Elements + two Shadcn primitives, the same class as the
already-skipped components/src/ui/. The names ARE the upstream component
API, so a rename is undone by the next re-sync. The hole a path skip opens
is closed by a provenance test: every file there must carry its vendor
banner, and the barrel must stay a pure re-export.
@object-ui/plugin-list
- ViewTab -> derived from the spec schema's INPUT side (pinned/isDefault/
visible carry .default()s and this reads authored metadata). Drops a
renderer-side tolerance: `visible` accepted `string | boolean` and the tab
bar compared it against the literal 'false', which no producer emits.
- ListView / UserFilters -> ALLOW. The AuthProvider test, not "components are
exempt": each is the RENDERER of the spec type whose name it shares and
takes that type as a prop (ListViewProps.schema, UserFiltersProps.config),
so neither declares a rival shape. @object-ui/types already aliases the
spec's type as SpecListView from the other side.
Verification: `--ledger` regenerated and set-diffed — removed is exactly these
12, added empty, all 11 other packages byte-identical (batch 7's symbols
untouched). Guard green; turbo build 44/44 and type-check 78/78 --force after
merging origin/main; data-objectstack 153, plugin-chatbot 251, plugin-list 284
and core 153 assertions green. Five mutation directions all red: re-forking
ViewTab (guard by name+file, and the typetests pin), undoing the
ValidationError rename, leaving a burned name in DEBT, deleting the ListView
ALLOW entry, and dropping an authored `Tool` into the skipped vendored dir
(guard blind by design, provenance test red).
Pre-existing and unrelated, filed as objectui#3219: plugin-calendar's
registration.test.tsx fails on main (an @object-ui/react vi.mock missing
`subscribeDataChanges`); reproduced with this branch stashed.
Claude-Session: https://claude.ai/code/session_01PRJtkgUAaVG11FsJQbvZWA
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments