ADR 0004 - creation_from_tensor test category + tracking-scope broadening
rstsr implements the array-joining / construction-from-tensor functions
(concat/concatenate, stack, hstack, vstack, diag, meshgrid,
unstack) in rstsr-core/src/tensor/creation_from_tensor.rs. The prior
NumPy-parity audit (ADR-0003) covered only the manipulation/ surface
(reshape/transpose/swapaxes/moveaxis/squeeze/expand_dims/flip/broadcast/to_contig/
to_layout); concat/stack/diag were not covered by that audit.
This ADR decides where parity tests for those functions live, and how functions rstsr does not yet implement are tracked.
1. Decision
- Parity tests for
creation_from_tensor.rsfunctions live in a dedicatedcreation_from_tensor/category undertests/core_func/(mirrored underdoc_draft/for doc tests). The category name mirrors the source modulesrc/tensor/creation_from_tensor.rs, consistent with howmanipulation/mirrorssrc/tensor/manipulation/andlinalg/mirrorssrc/tensor/linalg/. - The tracking scope (ADR-0003 artifact (b)
numpy_coverage.csvand thesync_numpy.pySURFACE) is the manipulation + creation_from_tensor surface, not manipulation alone. Functions rstsr does not yet implement (split/array_split/hsplit/vsplit/dsplit,dstack,column_stack,block,tile) are recorded astodorows - one representative NumPy test method per class, with the full method count cited in the note.
2. Considered
- Fold join functions into
manipulation/- rejected. rstsr's source groups them increation_from_tensor.rs, notmanipulation/; the test category mirrors the source module so the mapping is mechanical. - Per-function categories (
concat/,stack/, ...) - rejected; too granular. One category per source module, holding all its parity tests, matches the existingmanipulation/granularity.
3. Consequences
- The category mirrors the source module, so a function newly added to
creation_from_tensor.rsmaps to a parity test increation_from_tensor/mechanically - no per-function category decision. todorows make unimplemented functions visible rather than silently absent: a future implementation or a NumPy version bump surfaces them as tracked candidates.- Divergences for this surface (intentional or since-fixed) live in the
ADR-0003 (c) reports (
numpy_differences.md/numpy_differences_resolved.md), not duplicated here.