Skip to content

Gate the Keras call convention on a hierarchy-verified framework base #663

Description

@khatchad

PythonInstanceMethodTrampolineTargetSelector.getCallable treats ANY receiver whose class declares a call method as a Keras-style callable, without checking its hierarchy. With class shells in place (#118), the principled gate is a summary-shell ancestor, but the experiment (documented in ponder-lab#498) showed the gate drops 18 tests of forward-pass coverage: every subclass whose framework base does not resolve falls back to object and silently loses dispatch. The bases that do not resolve are exactly the #571 cases (cross-module imports) plus bare-name collisions (#657) and unmodeled base spellings.

Once unresolved-base metadata is complete enough that a hierarchy check has the same recall as the blind treatment, gate the call-name lookups (both the concrete-type lookup and the declaring-class fallback) on the receiver descending from a PythonSummaryShellClass, and update TestIssue127.testIssue127i to opt its synthetic issue127i/C in via super= (the fixture Javadoc already anticipates this).

The precision payoff: an arbitrary source class with a call method but no framework base stops being blindly treated as a callable (the imprecision TestIssue127.testIssue127i's Javadoc documents).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions