Skip to content

P1: replace Any/attribute-discovery customization with typed Protocol registration #57

Closed

Description

@philipgreat

Tracked by teaql/teaql-conformance#92. Current main@3f289aa exposes many customization entry points as Any and late hasattr/getattr discovery: request policy, checker/fix registry, internal ID, schema provider, app audit sink and runtime telemetry in src/teaql/runtime/context.py. The data-service _SchemaExecutor Protocol also inherits DataServiceExecutor, preventing a truly independent schema contract.

Introduce documented, importable Python Protocols and typed trusted-context registration for the six cuts. Validate capability shape at registration, not after a business request enters the provider. Preserve existing valid callable query policies, generated checker registries and fail-open telemetry adapter behavior. Make schema capability independent of IDataService while keeping context.ensure_schema as the application entry point and bootstrap ordering intact.

Acceptance: positive/denial/failure/lifecycle/provider-not-called tests for each cut, all six replacements composed in one runtime instance, a focused example, exact-main source CI, and a separate immutable internal wheel consumer. Stage this after the P0 Internal ID path; do not infer public release from source or internal gates.

Activity

  1. philipgreat commented on Oct 19, 2026

    @philipgreat
    ContributorAuthor

    Closed after source PR #59 merged at 37843f6 and exact-main Example Gate 39331319517 passed. Immutable local Registry wheel 0.3.2.dev20261020+g37843f61 was independently installed and run twice; conformance evidence PR #183 merged at 0e1ee038d831dacb43a074fcf95fa45174571f59, and exact-main conformance run 39331748679 passed all three jobs. This closes the Python typed Context SPI cut only; public release and generator adoption are separate.

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