feat(spec): canonical complex param-type model + shared fixture#11
Closed
scarmuega wants to merge 1 commit into
Closed
feat(spec): canonical complex param-type model + shared fixture#11scarmuega wants to merge 1 commit into
scarmuega wants to merge 1 commit into
Conversation
Define the complete parameter-type model every SDK must interpret from the TII params schema, and track fleet parity for it. - `sdk-spec/api-surface/args.md`: full canonical model — trailing-name core `$ref` matching across `tii#/$defs/<Name>` and legacy `core#<Name>` forms; list/tuple/map/record/variant/unit/utxo/anyAsset shapes with their schema encodings; `#/components/schemas/<Name>` resolution; the never-throw `unknown` fallback; and the generic-recursive value-marshalling requirement. - `sdk-spec/test-vectors/complex-types/complex.tii`: shared schema-only fixture declaring one param of every kind (TIR is a non-resolvable placeholder). - `parity-matrix.md`: mark complex param-type interpretation ✅ across all four SDKs; add a row marking type-directed value validation/encoding out of scope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 12, 2026
Contributor
Author
|
Superseded by #13 (merged), which included this PR's spec commit verbatim alongside the cshell submodule and tooling/docs. Closing as redundant — its content is already on main. |
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.
Summary
Defines the complete parameter-type model every Tx3 SDK must interpret from the TII params schema, plus a shared fixture and the parity-matrix update. This is the normative half of a cross-fleet complex-type parity effort; the four SDK implementations land in their own repos:
Why
An audit (triggered by parametric tuples) found the SDKs'
ParamTypeinterpretation had drifted badly fromtx3c's output: rust threw on almost any typed param from a modern TII (it matched only the exact legacycore#URIs); go/python silently degradedtii#/$defs/refs to opaque/typeless; tuples/maps/records/variants were variously unhandled. This change defines one canonical model and brings all four into line.Changes (umbrella repo)
sdk-spec/api-surface/args.md— the full model: trailing-name core$refmatching acrosstii#/$defs/<Name>+ legacycore#<Name>; the schema encodings for list/tuple/map/record/variant/unit/utxo/anyAsset;#/components/schemas/<Name>resolution; the never-throwunknownfallback; generic-recursive value marshalling.sdk-spec/test-vectors/complex-types/complex.tii— shared schema-only fixture with one param of every kind (validated to produce an identicalParamTypemap through both the python and go loaders). TIR is a non-resolvable placeholder.parity-matrix.md— complex param-type interpretation now ✅×4; new row marking type-directed value validation/encoding as out of scope.Sequencing
Spec-first per the fleet golden rule. Submodule pointer bumps are intentionally not included here — they come last via
commit-umbrellaafter the four SDK PRs merge.🤖 Generated with Claude Code