Skip to content

v2.0.0-rc

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Jul 00:24
Immutable release. Only release title and notes can be modified.
1ab818d

2.0.0-rc (2026-07-06)

⚠ BREAKING CHANGES

  • promote TableTheory product strengthening program
  • py: the deprecated theorydb_py Python import package is removed in v2; consumers must import tabletheory_py.
  • query: Go consumers must stop constructing pkg/query.MainExecutor, query.NewExecutor, or pkg/query.DynamoDBAPI directly; use DB.Model/tabletheory.Model flows for execution and query.UnmarshalItem(s) or NewWithClient plus pkg/testing/fakedb for tests.
  • core: Go callers can no longer pass arbitrary opts ...any values to AutoMigrateWithOptions or CreateTable; use schema.AutoMigrateOption and schema.TableOption values or concrete slices.
  • ts: TypeScript consumers must import FaceTheory ISR, release-state, and lease helpers from @theory-cloud/tabletheory-ts/facetheory, /release-state, and /lease; the root package now exposes only generic ORM APIs.
  • py: Python consumers must import tabletheory_py as the canonical runtime package; theorydb_py is no longer the implementation package and remains only as a DeprecationWarning transition shim.
  • ts: TypeScript now unmarshals DynamoDB N and NS values to canonical decimal strings by default; consumers that intentionally want historical JavaScript Number coercion must configure numberUnmarshalMode: 'number'.
  • core: Go consumers must replace DB.Transaction, ExtendedDB.TransactionFunc, core.Tx, mocks, and pkg/testing helpers built around the non-atomic callback API with the DynamoDB-backed Transact()/TransactWrite transaction builder.
  • Go writes now persist []byte and set-tagged numeric/binary slices as canonical DynamoDB B/NS/BS/NULL shapes and reject unsupported set element types. Legacy shape-driven reads remain, but consumers with raw filters or conditions over old list-shaped data may need backfill.

Features

  • api: add typed API surfaces (b82860c)
  • ci: adopt merge queue for protected branches (4cf17fb)
  • cli: add DMS validate and codegen (990c07b)
  • cli: add init scaffold command (d625d6e)
  • cli: generate CDK table constructs from DMS (d220248)
  • contract: add cross-runtime interop scenario support (509b103)
  • contract: add GSI projection P1 scenarios (b058043)
  • contract: add key-contract v0.2 transforms spec (338d8f3)
  • contract: add naming and encryption parity scenarios (2cf26b6)
  • contract: add native count P1 scenario (46ad3ca)
  • contract: add optional get P1 scenario (70f4237)
  • contract: add pagination cursor scenarios (c036ba5)
  • contract: add query and scan ops to the scenario harness (f2d7f37)
  • contract: add query semantics P1 scenarios (b351bcc)
  • contract: add transaction and lazy iteration scenarios (49d7686)
  • contract: add type matrix P0 scenario (87c852b)
  • contract: add version-conflict error scenario (fc57f56)
  • contract: generate runner models from DMS (6012701)
  • contract: implement item_equals and cursor_equals assertions (af9d827)
  • contract: pin exact number precision scenario (df1855e)
  • core: remove non-atomic Transaction API in favor of Transact() (5241ba1)
  • core: require typed schema options (9d86388)
  • docs: generate API references from source (88c7d94)
  • docs: ship generative-coding artifacts (feb423e)
  • examples: add DynamoDB-Local variant to cdk-multilang (dcf1867)
  • examples: add one-command Go local quickstart (35635a9)
  • go: add injectable DynamoDB client constructor (9f4d17a)
  • go: add state-backed DynamoDB fake (f36cc70)
  • keycontract: implement v0.2 transforms across runtimes (041cc73)
  • make: add rubric-fast contributor gate (579b0a7)
  • promote TableTheory product strengthening program (5130b5d)
  • py: add DMS equivalence gate (f169d2a)
  • py: add native query and scan count (21b50d2)
  • py: add optional get API (cb4c52d)
  • py: add schema migration and transform support (7ef69c1)
  • py: add stateful DynamoDB testkit fake (4616356)
  • py: add tabletheory_py canonical import alias (58723c2)
  • py: make tabletheory_py the canonical package (ea60a1a)
  • py: remove legacy theorydb_py shim (2aa4a46)
  • py: support Python 3.12+ (e1100ac)
  • query: add optional first helper in Go (9b6eec3)
  • query: remove deprecated MainExecutor (90997b4)
  • query: use native DynamoDB count in Go (c2467dc)
  • release: publish pip find-links index for Python releases (fe4ebbb)
  • release: publish tabletheory CLI as a release asset (adf1e3d)
  • ts: add DMS equivalence gate (688217c)
  • ts: add domain subpath exports (eceff7a)
  • ts: add exact number unmarshal mode (54ecfcc)
  • ts: add native query and scan count (f6d2030)
  • ts: add optional get API (66840a0)
  • ts: add schema migration and transform support (6753cc5)
  • ts: add stateful DynamoDB testkit fake (01c9e06)
  • ts: declare AWS SDK clients as peer dependencies (0353a2f)
  • ts: default to precision-safe number unmarshaling (7813d7e)
  • ts: ground optimizer index selection (2f3af60)
  • ts: move domain helpers to subpath exports (54d8cc0)
  • ts: support Node 20 LTS and CommonJS consumers (5e039c9)

Bug Fixes

  • ci: accept unnumbered release-please RC PRs (e5c26aa)
  • ci: accept unnumbered release-please RC PRs (bfc8e52)
  • ci: allow pinned runtime matrices in toolchain check (7285b0c)
  • ci: select v2 verifiers for protected promotions (9e447d4)
  • ci: select v2 verifiers for protected promotions (b8d3cd2)
  • ci: support premain compatibility checks (dfdcf97)
  • ci: support premain compatibility checks (5dd6bde)
  • cli: show persisted version in Go scaffold (ed96d22)
  • complete M6 review rework (1e866c8)
  • contract: assert DynamoDB numbers as canonical decimal strings (e14c485)
  • contract: fail closed on interop read assertions (929a101)
  • contract: map encryption error codes in Go driver (85eeeea)
  • contract: use consistent reads for raw-item assertions in all runners (3758b21)
  • dms: align naming convention enum (8e76cdc)
  • dms: make Python codegen dataclass ordering safe (0e7f7a4)
  • go: classify AWS errors with errors.As (45efbf3)
  • go: distinguish version conflict errors (0c83ff1)
  • go: satisfy update executor lint (6718067)
  • gov: store repo-relative evidence paths in rubric report (4684391)
  • keep correctness-trap deprecations lint-clean (5c0052a)
  • lambda: return cached init error instead of (nil, nil) after failed cold start (ad0837a)
  • lambda: synchronize lambdaTimeoutBuffer access (ecd8e40)
  • lambda: synchronize timeout buffer reads (353edb8)
  • mocks: fail assertions instead of panicking on type mismatches (02bd5ec)
  • model: improve tag validation diagnostics (efc8484)
  • py: distinguish version conflict errors (cf76ce4)
  • py: keep count helpers within size gate (96fb8e7)
  • py: keep key contract exports lazy (961c10f)
  • py: keep storage type helper typed for build verification (95a7dde)
  • py: preserve legacy shims without wildcards (b29800a)
  • py: reject unsupported union annotations and unify storage-type resolution (64c2ad1)
  • query: keep native count gates green (9fbac15)
  • release: accept release-please first RC publishing (e117879)
  • release: accept release-please first RC publishing (0d0873e)
  • release: read branch-sync JSON from git refs (c7da8e7)
  • release: read branch-sync JSON from git refs (aec7779)
  • release: tolerate Python version path transition (f698ffd)
  • resolve PR export checks (9c7bee4)
  • rubric: enforce generated model drift gate (8c1673d)
  • testing: return explicit error from DefaultDBFactory instead of nil DB (a3bcb5b)
  • transaction: document non-atomic DB.Transaction and deprecate in favor of Transact() (371cb04)
  • ts: build package exports in unit test (2a9ebb1)
  • ts: distinguish version conflict errors (e509a72)