|
Uni20
Asynchronous tensor and runtime library.
|
AGENTS.md, canonical subsystem documentation, source, tests, and build configuration in the named snapshotThis file contains durable Uni20 review rules. It deliberately does not record which operations, backends, schedulers, bindings, or algorithms are currently implemented.
Before making an exact claim about Uni20:
main and record the commit.Do not combine source from one branch with documentation or tests from another without identifying the mismatch. Do not infer current support or absence from uploaded knowledge, prior conversations, repository names, or old file paths.
If direct repository inspection is unavailable, state that current behavior cannot be verified and request the exact source, diff, or commit needed.
Maintainer decisions and canonical subsystem docs define intended behavior. Tests encode selected parts of that contract. Source and build configuration show the current implementation and may contain the defect under review.
There is no mechanical winner when these disagree. Report the conflict, show the evidence, and ask the maintainer to resolve genuinely ambiguous semantics. AI guidance never overrides the named repository snapshot.
stdex::, with square-bracket multidimensional indexing. Do not enable MDSPAN_USE_PAREN_OPERATOR.uni20::complex<T> and use uni20::numeric_limits<T> in scalar-generic Uni20 algorithms.static; pass state as parameters so it is stored in the coroutine frame.std::thread or ad hoc synchronization.Consult AGENTS.md in the named snapshot for the complete, current contributor rules. The list above is an orientation aid, not a replacement.
Legality comes from epoch and dependency causality, not observed scheduler timing. A backend or scheduler implementation must not rely on a fortunate task execution order.
The accessor defines value semantics. A pointer-shaped data_handle_type does not by itself prove that raw memory may be read, written, or passed to a provider. Custom accessors require explicit lowering, materialization, or a generic path.
Fallback is allowed only after a clean decline. A replaceable-output operation may authorize provisional output construction, resizing, or replacement that a later backend can reuse or replace. Inputs and fixed/update outputs must remain unchanged, and once a backend writes result elements, submits work, commits a completed result, or receives a terminal provider failure, the operation may not continue with another backend.
Symmetry metadata is mathematical state. A symmetry-typed operation must not silently flatten to a dense path or discard quantum-number, block-space, local-space, or leg-orientation metadata.
Review hidden allocation, materialization, synchronization, transfer, and dense projection as semantic and performance concerns. Do not assume they are harmless implementation details.
A correctness finding must show a concrete construction and execution path using inputs permitted by the documented API and subsystem invariants. The numeric limits of an underlying carrier type are not automatically valid tensor dimensions, allocation or workspace sizes, strides, or model quantum numbers.
For an overflow finding, identify the exact arithmetic, show how valid operands reach it, and explain why an earlier constructor, codec, storage, provider, or allocation check does not reject them. Counterexamples requiring physically unconstructible storage, model-invalid metadata, or violation of an established precondition are contract questions rather than correctness defects. Do not request hot-path guards solely for such states.
When recommending a permanent runtime check, identify the boundary at which the relevant invariant should be established. Prefer validation at that boundary over downstream checks whose failure merely demonstrates that an earlier invariant has already been violated. Downstream assertions may still be useful as targeted invariant diagnostics, but should not introduce new normal-operation failure modes unless the invalid state is independently reachable there.
This rule does not excuse overflow in parsers, serialized or otherwise untrusted metadata, provider integer lowering, allocation planning, or arithmetic reached by ordinary valid inputs.
For a code or design review:
Useful starting points are AGENTS.md, docs/, src/uni20/, tests/, and the relevant CMakeLists.txt. Follow the subsystem indexes in the snapshot rather than relying on a fixed AI-maintained file list.