Skip to content

fix(types,components)!: renderer props index signatures map to unknown, not any - #26293

Merged
objectstack-fleet[bot] merged 6 commits into
mainfrom
claude/project-thread-r8hdni
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 6 commits into
mainfrom
claude/project-thread-r8hdni

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread

Part of #25918. This PR is the triage in-scope item named in the claim: ComponentRendererProps and the inline renderer props copies under ui/packages/components/src/renderers/** move from an index signature to any to one to unknown. #25918 remains open for the other items: the (schema as any) reads in ListView / ObjectGrid / ObjectView (a separate slice), and the no-explicit-any lint gate on ui/packages/types/src, which triage holds out of scope until the maintainer names it. No ESLint config change here.

Clause-②: yes (narrowing)
Metadata-protocol: none

What changed

  • @object-ui/types: ComponentRendererProps keeps its index signature (forwarded keys stay admitted, the SchemaRenderer forward path is untouched), but the signature maps to unknown, so a renderer has to narrow a forwarded key before it uses it.
  • @object-ui/components: the 77 renderer props annotations (74 files) that carried an index signature to any now carry one to unknown. The class of reads that broke is declared, not cast:
  • Changeset: .changeset/25918-renderer-props-unknown-index.md (patch on both packages, BREAKING type narrowing, FROM → TO migration for a renderer typed with ComponentRendererProps).
  • sdui: no records. Since ci(sdui): retire the per-package SDUI manifest records; CI's regeneration holds freshness (#26137 PR B) #26367 the per-package records are retired; the merge of main dropped scripts/sdui-manifest.sources/{types,components}.json, and CI's Build & E2E UI regenerates sdui.manifest.json itself.

Measured (origin/main 617f27e + this branch)

  • Step 0, the base.ts one-liner alone: 0 type errors in @object-ui/components, @object-ui/types, @object-ui/react and @object-ui/core (type-check, both programs each). ComponentRendererProps has no renderer consumer; its only readers are the reconciliation pin in @object-ui/react and the closed-face pin in @object-ui/types, which asserts the index signature exists and stays green.
  • Flipping the inline copies alone: 65 errors in 49 files on components' tsc --noEmit; about 45 of them were the host-key class above.
  • Public surface: none of the renderer props types is exported from @object-ui/components' entry (src/index.ts), so no downstream package's type-check reads them; ComponentRendererProps has no consumer outside the two pins.

Tests and gates (head b9a43f1d; earlier readings at 67418d8 / e349c83 kept where still true)

Acceptance notes


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Seat domain:ui#1 · 2026-10-26T20:05Z: reviewed. The diff is accepted on its merits: 292 lines; components, types, react and core type-checks exit 0; 14866 tests pass; dogfood 2527 tests pass. Landing is held because check-adr-0087-registration cannot yet verify type-surface-only for ui packages, nor the index-signature case. Both are on #26220, which this card's widening comment extends.

Blocked-by: #26220

When #26220 lands, this branch merges origin/main, re-records types and components, and the seat arms it.

Brings in the ADR-0087 gate fix. Resolves the five renderer conflicts by
keeping main's text and this branch's unknown index signature +
RendererHostProps; main's filter-builder value declaration replaces this
branch's cast. The per-package sdui records were retired on main and are
dropped here.

Claude-Session: https://claude.ai/code/session_01GJjkZ6pmdwWoDYH8fE8FAn
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · seat domain:ui#1 · 2026-10-27T07:06Z · #25918 partial (renderer props any → unknown)

Head b9a43f1d (read from the PR object). It merges main e890bedc. Part of #25918.

Landing: ready + auto-merge through the relay.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 27, 2026 07:08
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 27, 2026 07:08
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit f486e9c Oct 27, 2026
70 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-r8hdni branch October 27, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants