Skip to content

Revalidate deferred callback metadata receiving-type failures #2338

Open

Description

@KyleAMathews

Problem and evidence

The retained release-scope record separates repaired callback runtime behavior from unresolved static receiving types. Its appended chunk-24 receiver recorded 672 ordinary-metadata leak REDs and 12 discriminant-specific union-spread REDs, with all 6,240 declared states and 43 controls preserved.

These are historical results. No new current-main compiler campaign was run for this issue. The deferral remains in the main record at c5ad6ad5a782ff04e9157bdef69399f2b5ba813b; first establish which failures survive.

Boundary

The accepted callback-input contract distinguishes genuine direct-source metadata from newly authored projected shapes. Runtime repair in #2312 does not by itself prove the corresponding TypeScript receiving contract. Do not erase required metadata from legitimate published source/read results to fix a downstream callback type.

Preserved files include:

  • packages/db/tests/query/virtual-row-fields-receiver-types-oracle.ts.
  • virtual-row-fields-receiver-types-support.ts.
  • The appended receiving slice of virtual-row-fields-types-oracle.test.ts.

The record identifies the complete accepted local snapshot and hashes. Restore dependent model and generated-source slices together.

Work and acceptance

  1. Revalidate the static law and reproduce surviving failures on current main through actual callback parameter types, retaining source controls and union/discriminant cases.
  2. Extend the independent public-type owner across the same source, projection, spread and union distinctions.
  3. Preserve ordinary diagnostics, actual observed callback types, generated reach and calibration. A source annotation that hides the failure is not a repair.
  4. Show parent RED, repaired GREEN and a hostile type mutation rejected by the same checker.
  5. Keep source-public, built/installed and framework receiving claims explicit; update the coverage map with limits.

This tracks static receiving types. The merged runtime callback repair remains separately bounded.

Activity

  1. KyleAMathews commented on Nov 3, 2026

    @KyleAMathews
    CollaboratorAuthor

    Fresh revalidation against fetched main baabf57a0f110d57ad9bb7b81148466b18fbe0d1 still reproduces this static receiving defect. Keep open. #2312's runtime repair is included in that baseline.

    I restored the complete retained test-only receiver slice from db38b4e009146af53e46aeeef3206269f5968af8, with unchanged production and TypeScript 5.9.3. The 816 generated receivers produce 672 intended ordinary-metadata law failures and 144 passes; every consumer has zero compiler diagnostics. All 6,240 declared reach states execute once, and all 43 retained compiler/checker/AST controls pass. These restored tests are additional to the registrations currently on main.

    For example, a structured projection creates { id, value, payload, routeGroup, nested }, then a real downstream .fn.select(({ selected }) => ...) observes selected as WithVirtualProps<...>; the shared declared-shape law expects the authored ordinary row without reserved root fields. Direct source and required readonly published-read metadata controls pass.

    There is a narrower improvement: all 12 historical discriminant-specific structured-spread failures now pass in this matrix. That does not close the surviving 672 projected-row failures.

    The same law also fails through actual frozen-main built/installed DB and IVM tarballs in strict NodeNext ESM and CommonJS: two row descriptions × all 34 contexts × both formats (136 consumers, 768 markers), with zero diagnostics and passing source/read neighbors. Package bytes were verified against the packed artifacts. Framework callback compilation, runtime behavior, other compiler versions and the full 24-shape installed matrix remain outside this revalidation. No production repair was made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions