fix: #107 P3 follow-ups — cross-SDK consistency + version metadata (v1.12.1)#109
Merged
Conversation
…rsion metadata - __version__ derived from dist metadata in all 3 Python packages (importlib.metadata; was stale 0.1.0rc1/0.0.1). DataVersion.for_research tokens now reflect the true SDK version (opt-in surface, no cache or settlement impact — verified not wired into research()). - Canonical unknown-source error text on the research() surface in both SDKs: 'research(): source must be one of [...]', exact-message-pinned. - TS sources: null follows the Phase 21 null-as-absent wire contract; removed the dead TS mutual-exclusion check (only reachable firing WAS the wire-contract bug) and the mirrored unreachable Python ValueError. - Pin provenance threaded explicitly through wrap_result (mode2 parity, defense-in-depth); unpinned wrapper path byte-identical (verified vs HEAD). - TS barrel re-exports RESEARCH_SOURCE_ALIASES / RESEARCH_OBSERVATION_SOURCES / isResearchObservationSource; contextlib consolidated to module level. - Coverage: as_dataframe=False pin, polars wrapper (skip-guarded), empty-after-pin attrs, sources:null regression, barrel surface test. - Weather bundle growth root-caused (hosted-shim root-barrel re-export); shrink deferred to its own PR (public-API contraction) — see #107. Review: codex GATE PASS (0 findings) + architect approve (no P1/P2; the single P3 comment nit fixed in this commit). Closes #107 (remaining: hosted-barrel shrink tracked there). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
✅ Docs-required check: PASS API-surface change includes docs updates — no reminder needed. API-surface files changed: Docs files changed: |
|
Parity ticket gate: PASSED See |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Patch release resolving the deferred P3 findings from PR #108's two-reviewer loop (#107). No behavior change on any default path.
__version__from dist metadata (all 3 Python packages; was stale0.1.0rc1/0.0.1). Verified zero persistence blast radius:DataVersion.for_researchis opt-in, never auto-wired intoresearch(), not a cache key, no literal-token tests.research(): source must be one of [...]error in both SDKs, exact-message-pinned both sides (researchBySource's "Mode 2..." text untouched).sources: null= absent per the Phase 21 wire contract + regression test; dead mutual-exclusion checks deleted in both SDKs with written unreachability proofs (the TS one's only reachable firing was the wire-contract bug).wrap_result(source=...), mode2 parity, defense-in-depth) — unpinned path verified character-identical to HEAD.as_dataframe=False, skip-guarded polars wrapper, empty-after-pin, barrel).mintStreamTokenis root-barrel-only today). Details on Follow-ups from #<pending> — research(source=) pin + mode2 window trim (P3 nits) #107.TS Parity
Identical surface changes shipped in this PR (
packages-ts/meta): same canonical error prefix, same nullish wire-contract semantics, barrel exports. No parity ticket needed.Review loop
codex review --uncommitted, high): GATE PASS, 0 findings.wrap_resultchar-identical to HEAD), both unreachability proofs (incl. the 3×3 TS presence matrix), and the__version__/DataVersion blast-radius analysis. Its single P3 (comment accuracy) fixed pre-commit.Gates
tsc --noEmit, biome (no new), size gate green (meta 38.67/40, weather 25.88/26 — unchanged)Release
All 7 packages 1.12.0 → 1.12.1. Post-merge: tag
v1.12.1(PyPI) +vts-1.12.1(npm).Closes #107 (hosted-barrel shrink stays tracked there as a dedicated follow-up).
🤖 Generated with Claude Code