Skip to content

TypeBridge 2.0.2 — security maintenance and expanded 2.1 notice

This 2.0.2 maintenance release publishes the expanded removal inventory approved in #189. This is a new maintainer decision: the original 2.0.0 inventory explicitly retained the wider handwritten declaration layers. Neither 2.0.0 nor 2.0.1 provided this expanded notice. Their historical release notes are not rewritten.

This release also patches the audited Rust dependency graph: PyO3 0.29.2, pythonize 0.29.0, crossbeam-epoch 0.9.20, h2 0.4.16, rustls-webpki 0.103.13, anyhow 1.0.103, rand 0.8.6, and chacha20 0.10.2. Both maintained lockfiles are checked for vulnerabilities, unsoundness, and yanked packages in CI and release acceptance. The required TypeDB transport dependency rustls-pemfile 2.2.0 retains its informational unmaintained advisory, RUSTSEC-2025-0134. The Python binding retains its GIL requirement and abi3-py312 baseline.

No API is removed in 2.0.2. Existing handwritten applications, provider bands, warning behavior, and archival recovery keep their 2.0.x contracts. There is no new handwritten-authoring warning class, code, runtime notice, or compiler warning. Generated imports, installation, hydration and direct/remote use gain no warning route. Per-scope irreversible migration adoption remains unchanged.

The entries below schedule removals for 2.1.0, not this maintenance release. Replacement runtime names describe the 2.1 generated-only contract; this notice does not backport that implementation or claim it is already published. Split-YAML plus type-bridge schema generate is the replacement authoring journey. The corresponding generated application operations must have parity before handwritten routes are removed. No catch-all authorizes other removals.

Safe downstream pins

  • Python: type-bridge>=2,<2.1; the facade pins its matching native core.
  • Node: "@type-bridge/node": ">=2 <2.1".
  • Rust: keep the generated package's exact release dependency and Cargo.lock. For this release, use type-bridge = "=2.0.2"; a bare "2.0.2" Cargo requirement permits 2.1. Use a committed lockfile with --locked, and keep every directly declared first-party SDK dependency on the matching 2.0.x release. The 2.0.1-and-later SDK resolves from crates.io, not a floating Git branch. Band-7/8 compatibility crates retain their independent exact versions.

Reading the inventory

The tables below reproduce the approved exact inventory. A “2.0.x disposition” cell identifying a call or declaration describes the affected route, not a new warning or removal in 2.0.2. The final retention section controls mixed-purpose query and archival dependencies. No other surface acquires a removal schedule.

Exact Public Inventory

Remove in 2.1.0 — existing #189 inventory

Public identity 2.0.x disposition 2.1 disposition Replacement / retained dependency
type_bridge_core.TypeSchema Existing scheduled notice Remove export and wrapper Split-YAML workspace parsing; retain private/archive parser consumers only.
type_bridge_core_lib::schema::TypeSchema Existing scheduled notice Remove public export; rename/private retained parser responsibility where needed Canonical declared-schema contracts.
type_bridge.SchemaInfo, type_bridge.migration.SchemaInfo, type_bridge_orm::SchemaInfo Existing scheduled notice Remove Split-YAML workspace declarations.
type_bridge.SchemaManager, type_bridge.migration.SchemaManager, type_bridge_orm::SchemaManager Existing scheduled notice Remove Canonical migration/workspace commands and generated projections.
type_bridge.Role, type_bridge.models.Role as fused Role[T] authoring Existing scheduled notice Remove Generated relates() / plays() projections.
type_bridge.generator.generate_models(..., format="toml") and its .toml suffix auto-routing Existing TOML warning Remove the two direct TOML authoring routes Split-YAML plus type-bridge schema generate; retain type_bridge_core.toml_to_typeql. The whole programmatic generator is separately named in the expanded inventory below.
TypeDB 3.8/3.10 active provider support and band-7 packages Existing connection notice Remove features, dependencies, packages, tests, artifacts Bands 8/9 for 3.11/3.12.
New root NNNN_*.py and sibling JSON migration authoring Existing legacy-writer notice/fence Remove writer and active-authority routes Canonical V2 make/plan/apply/verify/adopt; retain readers/bridge.

Exact band-7 dependency/artifact identities

  • Remove workspace packages type-bridge-typedb-driver-b7 3.8.1 and type-bridge-typedb-protocol-b7 3.7.0 and their exact directories type-bridge-core/vendor/typedb-driver-b7 and type-bridge-core/vendor/typedb-protocol-b7.
  • Remove Cargo feature band7 from type-bridge-typedb-runtime, type-bridge-orm, generated Rust client crate type-bridge, and type-bridge-server; remove it from their defaults and from ORM integration-tests.
  • Remove hardwired band7 dependency activation from type-bridge-node and type-bridge-migration.
  • Remove the type-bridge-typedb-runtime optional dependency type-bridge-typedb-driver-b7, band-7 driver/protocol dispatch, fallback, constants, feature-gated tests, and the 3.8/3.10 support-window branches.
  • Change Python optional extra typedb-driver>=3.8,<3.13 and external-driver option dispatch to the retained 3.11/3.12 contract; remove band-7 notices and active 3.8/3.10 cells without changing the retained unsupported-version diagnostic contract.
  • Remove 3.8/3.10/band-7 cells and artifact expectations from .github/workflows/{ci,release}.yml, scripts/ci/validate_fresh_typedb_runtime_package.sh, active release-identity validation, new native notices, new SBOM/provenance expectations, and support-matrix docs. Retain immutable v2.0 recovery manifests/notices and the validator lanes that prove those historical artifacts exactly.

Remove in 2.1.0 — expanded Python handwritten authoring

Public identity Current consumers to migrate 2.0.x disposition Generated replacement
type_bridge.TypeDBType, type_bridge.models.TypeDBType, type_bridge.models.base.TypeDBType model subclasses, V1 CRUD/query fixtures subclass/registration metaclass path generated ModelBase is package-private codegen runtime, not a public SDK declaration base
type_bridge.Entity, type_bridge.models.Entity, type_bridge.models.entity.Entity model subclasses, CRUD/query fixtures subclass initialization generated entity classes
type_bridge.Relation, type_bridge.models.Relation, type_bridge.models.relation.Relation model subclasses, CRUD/query fixtures subclass initialization generated relation classes
type_bridge.Attribute, type_bridge.attribute.Attribute, type_bridge.attribute.base.Attribute handwritten attributes attribute subclass initialization generated attribute classes
type_bridge.String, type_bridge.attribute.String, type_bridge.attribute.string.String; type_bridge.Integer, type_bridge.attribute.Integer, type_bridge.attribute.integer.Integer; type_bridge.Double, type_bridge.attribute.Double, type_bridge.attribute.double.Double; type_bridge.Boolean, type_bridge.attribute.Boolean, type_bridge.attribute.boolean.Boolean; type_bridge.Date, type_bridge.attribute.Date, type_bridge.attribute.date.Date; type_bridge.DateTime, type_bridge.attribute.DateTime, type_bridge.attribute.datetime.DateTime; type_bridge.DateTimeTZ, type_bridge.attribute.DateTimeTZ, type_bridge.attribute.datetimetz.DateTimeTZ; type_bridge.Decimal, type_bridge.attribute.Decimal, type_bridge.attribute.decimal.Decimal; type_bridge.Duration, type_bridge.attribute.Duration, type_bridge.attribute.duration.Duration handwritten attributes attribute subclass initialization generated scalar attribute classes
type_bridge.AttributeFlags, type_bridge.Flag, type_bridge.Key, type_bridge.Unique, type_bridge.Ordered, type_bridge.Distinct, type_bridge.Doc, type_bridge.Meta, type_bridge.Card, type_bridge.TypeFlags, type_bridge.TypeNameCase; the matching type_bridge.attribute and type_bridge.attribute.flags identities handwritten type/field/role annotations annotation/flag application Split-YAML annotations; generated descriptors/tokens
type_bridge.fields.FieldDescriptor, type_bridge.fields.FieldRef, type_bridge.fields.NumericFieldRef, type_bridge.fields.StringFieldRef, type_bridge.fields.RolePlayerFieldRef, type_bridge.fields.RolePlayerNumericFieldRef, type_bridge.fields.RolePlayerStringFieldRef; their defining type_bridge.fields.base / type_bridge.fields.role identities handwritten descriptor/query declarations descriptor binding generated field/role tokens plus V2 query facades
type_bridge.models.FieldInfo, type_bridge.models.MatchClauseInfo, type_bridge.models.ModelAttrInfo, type_bridge.models.WriteQueryInfo; their defining type_bridge.models.utils identities handwritten model internals model declaration construction generated model metadata (not public authoring API)
type_bridge.ModelRegistry, type_bridge.models.registry.ModelRegistry, type_bridge.models.schema_scanner.SchemaScanner, type_bridge.migration.ModelRegistry, type_bridge.migration.registry.ModelRegistry registry/scanner schema discovery registry/scanner construction workspace manifest plus generated projection
type_bridge.TypeDBManager, type_bridge.crud.TypeDBManager, type_bridge.crud.typedb_manager.TypeDBManager, type_bridge.crud.rust_manager.RustTypeDBManager, and type_bridge.crud.strategies.{ModelStrategy,EntityStrategy,RelationStrategy} handwritten model CRUD manager construction for handwritten model class generated model .manager() / direct and remote generated clients. Retained V1 TypeDBQuery / GroupByQuery aliases keep only the private execution dependency required by their separately unscheduled contract.
type_bridge.typed.QuerySession.var, exact, subtypes, and reachable when passed handwritten TypeDBType / Relation classes and type_bridge.fields references; the corresponding RemoteQuerySession delegates current model-oriented V2 query facade handwritten descriptor closure and model-constructor hydration projection-owned generated query session over exact generated model/field/role tokens; retain the model-oriented Query V2 behavior and low-level type_bridge.query_v2
type_bridge.migration.Migration, type_bridge.migration.MigrationDependency, type_bridge.migration.MigrationGenerator, type_bridge.migration.AuthoredMigration, type_bridge.migration.author_migration, type_bridge.migration.operations, type_bridge.migration.ref, and root alias type_bridge.migration_ops; type_bridge.migration.operations.{Operation,ModifyTypeAnnotations,ModifyRoleAnnotations,AddAttribute,RemoveAttribute,AddEntity,RemoveEntity,AddOwnership,RemoveOwnership,ModifyOwnership,AddRelation,RemoveRelation,AddRole,RemoveRole,AddRolePlayer,RemoveRolePlayer,RunTypeQL,RunPython,RenameAttribute,CopyAttribute}; type_bridge.migration.ref.{EntityRef,RelationRef,AttributeRef,entity,relation,attribute} legacy root Python migration authoring migration creation/loading writer choke point canonical V2 migration CLI/workspace; retain read-only loader, checksum, ledger import and frontier bridge
type_bridge.generator.{generate_models,parse_tql_schema,ParsedSchema,BaseClassConfig,CompositeEntityConfig,CompositeFieldConfig,DTOConfig,EntityFieldOverride,FieldOverride,FieldSyncConfig,ValidatorConfig} and python -m type_bridge.generator old programmatic TypeQL/TOML-to-model and DTO generation lane direct Python API/module invocation type-bridge schema generate from a canonical Split-YAML workspace
type_bridge.BreakingChangeAnalyzer, type_bridge.ChangeCategory, type_bridge.RolePlayerChange; type_bridge.migration.{BreakingChangeAnalyzer,ChangeCategory,ClassifiedChange,EntityChanges,RelationChanges,AttributeFlagChange,RolePlayerChange,RoleCardinalityChange,SchemaDiff} and their defining type_bridge.migration.breaking / type_bridge.migration.diff identities arbitrary handwritten-schema comparison and breaking-change classification schema-diff authoring canonical V2 migration planning; retain any comparison engine needed privately by canonical plans and archive verification

Remove in 2.1.0 — Python native authoring bindings

These identities are public because type_bridge_core.__init__ re-exports all non-private PyO3 registrations. Removing only the Python facade would leave a second public authoring route through the native wheel.

Public identity Current consumers to migrate 2.1 disposition Retained responsibility
type_bridge_core.TypeSchema old parser/validation/generator tests and type_bridge.generator.parser remove the PyO3 class and stub identity keep the Rust parser private to canonical workspace generation, compatibility projection, and frozen archive tests
type_bridge_core.render_models_json, type_bridge_core.generated_declared_descriptors_json old Python programmatic generator and released-input parity tests remove both direct TypeQL-to-package/snapshot binding functions keep the Rust schema-compat functions behind canonical workspace generation and compatibility fixtures
type_bridge_core.generate_define_block, type_bridge_core.compute_schema_diff, type_bridge_core.classify_schema_diff, type_bridge_core.schema_diff_is_breaking handwritten SchemaInfo / SchemaManager and legacy migration authoring remove the public PyO3 functions keep any lowering/diff implementation needed privately by canonical V2 migrations and archival verification
type_bridge_core.PyDescriptorRegistry, type_bridge_core.PyDynamicEntityManager, type_bridge_core.PyDynamicRelationManager, type_bridge_core.CrudQueryBuilder, type_bridge_core.build_has_lookup_query handwritten Python descriptor registration, CRUD, and model-driven migration lowering remove the public PyO3 constructors/functions retain closed PyRuntimeProjection / PyProjectedModelManager and separately isolated V1-query execution inputs
type_bridge_core.AuthoredMigration, type_bridge_core.author_migration creation of new root Python/JSON migrations remove the public PyO3 authoring surface retain legacy readers, checksums, snapshots, ledger import, and frontier adoption
type_bridge_core.run_legacy_migration_cli mixed legacy CLI including writer and read-only commands remove this unrestricted public dispatcher retain a private/read-only archival dispatcher only if the frozen CLI disposition keeps plan, sqlmigrate, or showmigrations

Remove in 2.1.0 — expanded Node handwritten authoring

Public identity 2.0.x disposition Generated replacement
@type-bridge/node Entity, Relation, field, role, FieldSpec, ListFieldSpec, RoleSpec, AttributeClass, EntitySchema, FieldValue, IidBearing, InstanceDict, InstanceFields, MergedSchema, ModelClass, ModelInstance, ParentModelClass, ParentOption, PlainFieldValue, RelationSchema, and SchemaSpec Entity/Relation factory invocation and arbitrary model-schema construction generated TypeScript model classes and package-local tokens
@type-bridge/node Attribute, attr, AttributeBase, AttributeTypeOptions, AttributeTypeParent, ComparableAttributeBase, NumericAttributeBase, and StringAttributeBase attr.* or handwritten attribute creation generated scalar attributes
@type-bridge/node TypeFlags, AttributeFlags, Flag, Card, Key, Unique, Doc, Meta, TypeNameCase, formatTypeName, resolveFlags, AttributeFlagsOptions, CardSpec, DocSpec, FlagInput, FlagSpec, MetaSpec, ResolvedAttributeFlags, ResolvedTypeFlags, and TypeFlagsOptions flag/factory invocation Split-YAML annotations and generated projection metadata. flags.ts also exports Ordered and Distinct, but neither is reachable through the package export map or root barrel and therefore neither is a current public package identity.
@type-bridge/node Annotation, OwnedAttributeDescriptor, EntityDescriptor, RoleDescriptor, RelationDescriptor, TypeDescriptor, OwnedAttributeEntry, RoleEntry, EntitySchemaEntry, RelationSchemaEntry, AttributeSchemaEntry, SchemaInfo, generateDefineBlock, DescriptorRegistry, RustDynamicEntityManager, and RustDynamicRelationManager schema/registry/manager construction workspace generation and generated model manager methods
@type-bridge/node root exports generateModels, generateModelsForTarget, BindgenTarget, BindgenRenderOptions, GenerateModelsOptions, GenerateTargetModelsOptions, and NamingOptions programmatic TypeQL-to-model generation type-bridge schema generate. The export map has no @type-bridge/node/generator subpath; GeneratedFile, GeneratedPackage, BindgenNative, toClassName, and toFieldName are source-module exports but not current public package identities.
@type-bridge/node parseSchema, SchemaParserNative, SchemaAttributeType, SchemaCardinality, SchemaEntityType, SchemaFunctionType, SchemaOwnedAttribute, SchemaParameter, SchemaPlayedRole, SchemaRelationType, SchemaReturnType, SchemaReturnTypeItem, SchemaRoleSpec, SchemaStructField, SchemaStructType, and TypeSchema parse-to-authoring entry point and public schema document shape Split-YAML workspace parser; retain only private compatibility parser needs
@type-bridge/node TypedEntityManager, TypedRelationManager, entityManagerFor, relationManagerFor, buildRolePlayers, and ExactFilters when constructed from handwritten ModelClass / RelationSchema handwritten model CRUD/manager construction generated model managers. TypedQuery, TypedGroupByQuery, query expressions, and any private descriptor codec they require remain separately isolated V1-query compatibility.
@type-bridge/node/typed QuerySession.registerModels, RemoteQuerySession.registerModels, and QuerySession.var / reachable when passed arbitrary handwritten model constructors/descriptors arbitrary descriptor registration and handwritten-constructor hydration projection-owned generated query session over exact generated model/field/role tokens; retain model-oriented Query V2 behavior and low-level @type-bridge/node/query-v2

Remove in 2.1.0 — Node native and descriptor-marshalling escape hatches

@type-bridge/node.loadNative() is a public root export. Its returned object currently exposes every N-API registration, so the raw identities below are publicly reachable even when their source modules have no export-map subpath.

Public identity 2.1 disposition Replacement / retained responsibility
@type-bridge/node.loadNative, public NativeModule / NativeRuntime authoring members, and the raw constructors NodeDescriptorRegistry, NodeDynamicEntityManager, NodeDynamicRelationManager remove the public loader/authoring escape hatch or narrow it to a generated/runtime-only contract with no arbitrary descriptor registration private native loader used by connection, Query V2, and runtime-projection; closed NodeRuntimeProjection / NodeProjectedModelManager
raw native parseSchemaJson, renderModelsJson, generatedDeclaredDescriptorsJson, and generateDefineBlockJson remove from the publicly reachable native contract private Rust parsing/generation behind canonical workspace commands and frozen compatibility tests
raw native normalizeAggregatesJson, normalizeAttributeValueJson, normalizeEntityAttributesJson, normalizeFiltersJson, normalizeRelationAttributesJson, normalizeRelationFiltersJson, normalizeRelationWriteBatchJson, and normalizeRolePlayersJson remove with descriptor-driven handwritten managers projection-owned generated managers and native hydration
root Marshalling, lowerAttributeValue, lowerAttributes, lowerFilters, buildRolePlayers, keyAttributeDescriptor, hydrateAttributeEntries, hydrateAttributes, attributeToPlain, plainToAttribute, and runtimeAttributeValueFromUnknown when driven by arbitrary public descriptors remove the public descriptor-authoring route; split out any descriptor-independent scalar codec that retained V1 queries require generated projection marshalling plus private V1 compatibility codec

Remove in 2.1.0 — expanded Rust handwritten authoring

Public identity 2.0.x disposition Generated replacement
type_bridge_orm::{TypeBridgeEntity,TypeBridgeRelation,TypeBridgeAttribute} handwritten trait implementation / derive entry generated Rust source package
type_bridge_orm::{DeriveEntity,DeriveRelation,DeriveAttribute,define_attribute!,include_schema!}; type_bridge_orm_derive::{TypeBridgeEntity,TypeBridgeRelation,TypeBridgeAttribute,include_schema!} (excluding retained generated-query SelectedRow) macro expansion / manual declaration or direct TypeQL compile-time generation generated Rust source package
type_bridge_orm::{EntityDescriptor,RelationDescriptor,OwnedAttributeDescriptor,RoleDescriptor,TypeDescriptor,TypeDescriptorRef,DescriptorRegistry} and defining type_bridge_orm::{descriptor,registry} identities, including DescriptorIdentitySnapshot and DescriptorFingerprintRoot descriptor/registry construction or registration verified InstalledRuntimeProjection from generated evidence; retain private descriptor representations required by execution
type_bridge_orm::{EntityManager,RelationManager,DynamicEntityManager,DynamicRelationManager} and handwritten-model V1 query builders construction from handwritten model/descriptor generated client direct/remote managers
type_bridge_orm::{Annotation,OwnedAttributeInfo,RoleInfo,RolePlayerRef,FieldRef,RolePlayerFieldRef,RoleRef} when used as handwritten schema declaration data declaration construction generated model tokens/descriptors
type_bridge_orm::{SchemaDiff,SchemaInfo,SchemaManager} and type_bridge_orm::schema::{SchemaDiff,SchemaInfo,SchemaManager,SchemaError}; public schema-entry identities OwnedAttributeEntry, RoleEntry, EntitySchemaEntry, RelationSchemaEntry, AttributeSchemaEntry; diff identities ChangeCategory, ClassifiedChange, EntityChanges, RelationChanges, AttributeTypeChanges, RolePlayerChange, RoleAnnotationChange, RoleCardinalityChange; generator functions generate_define_block, card_annotation, attribute_definition, attribute_constraint_definition, and topological_sort; annotation identities AnnotationToken, AnnotationTokenDiff, split_annotation_tokens, constraint_part, typeql_uses_schema_annotations, escaped_string_literal, and diff_annotation_tokens arbitrary schema construction, lowering, and diffing through the public schema module tree canonical workspace schema/migration engine; retain required algorithms privately
type_bridge_orm::codegen::{GeneratedModels,generate_for_target,generate_from_typeql,generate_rust_models} and the packaged type-bridge-codegen binary direct TypeQL-to-Rust source generation type-bridge schema generate from a canonical Split-YAML workspace

Remove in 2.1.0 — Rust core schema and programmatic bindgen

type-bridge-core-lib is a publishable crate, so removing only binding and ORM wrappers would leave the original TypeQL schema/bindgen authority public.

Public identity 2.1 disposition Replacement / retained responsibility
type_bridge_core_lib::schema::{TypeSchema,SchemaError,Cardinality,OwnedAttribute,PlayedRole,RoleSpec,AttributeType,FunctionType,Parameter,ReturnType,ReturnTypeItem,StructType,StructField,EntityType,RelationType} and type_bridge_core_lib::parser::parse_typeql remove the public schema-authoring/parser identities; rename or privatize retained representations strict canonical Split-YAML workspace parsing; frozen released-TypeQL compatibility parser remains internal to archive/conversion tests
type_bridge_core_lib::bindgen::{AnnotationMap,TargetLanguage,PythonRenderMetadata,BindgenOptions,GeneratedFile,GeneratedPackage,GeneratedRustModels,BindgenPlan,generate_from_typeql,generate_json_from_typeql,python_class_name} remove the public direct TypeQL-to-model generation module/API type-bridge schema generate; keep any old renderer privately only while frozen released-input conversion or migration snapshots require it

Explicitly retain

  • Generated package-internal Python runtime (ModelBase, EntityBase, RelationBase, AttributeBase, tokens, and installer) emitted by schema-codegen; it is not a supported handwritten declaration API.
  • type_bridge._runtime_projection, @type-bridge/node/runtime-projection, native PyRuntimeProjection / NodeRuntimeProjection, Rust SchemaPackage and InstalledRuntimeProjection; these install verified generated evidence only.
  • Python/Node/Rust direct and remote V2 query APIs, connection/session APIs, generated client CRUD, hydration, diagnostics, and canonical CLI workspace commands.
  • Exact separately unscheduled V1 query identities: Python root Query / QueryBuilder and type_bridge.crud TypeDBQuery / GroupByQuery aliases; Node root TypedQuery, TypedGroupByQuery, QueryExpr, ComparisonExpr, BooleanExpr, NotExpr, SortExpr, AggregateSpec, agg, and their error; Rust MatchRequest, entity/relation query, and group-by query facades. Their descriptor/model execution dependencies become private compatibility implementation and do not enter generated packages.
  • type_bridge_core.toml_to_typeql, frozen TOML parser, legacy migration readers/checksum/snapshots/metadata/ledger import/frontier bridge, and V1 query facades lacking their own removal schedule.