Skip to content

feat(spec): canonical complex param-type model + shared fixture#11

Closed
scarmuega wants to merge 1 commit into
mainfrom
feat/sdk-complex-type-spec
Closed

feat(spec): canonical complex param-type model + shared fixture#11
scarmuega wants to merge 1 commit into
mainfrom
feat/sdk-complex-type-spec

Conversation

@scarmuega

Copy link
Copy Markdown
Contributor

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' ParamType interpretation had drifted badly from tx3c's output: rust threw on almost any typed param from a modern TII (it matched only the exact legacy core# URIs); go/python silently degraded tii#/$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 $ref matching across tii#/$defs/<Name> + legacy core#<Name>; the schema encodings for list/tuple/map/record/variant/unit/utxo/anyAsset; #/components/schemas/<Name> resolution; the never-throw unknown fallback; 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 identical ParamType map 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-umbrella after the four SDK PRs merge.

🤖 Generated with Claude Code

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>
@scarmuega

Copy link
Copy Markdown
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.

@scarmuega scarmuega closed this Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant