tidu 0.1.0

Automatic-differentiation transforms (linearize, transpose, eager reverse-mode) for primitive computation graphs.
Documentation
# API Map

The full Rust API is generated by rustdoc:

```bash
bash scripts/build_docs_site.sh
```

Then open `target/docs-site/api/index.html`.

The public surface groups into transforms, the rule contract, and eager
integration.

## Transforms

- `tidu::linearize` / `tidu::try_linearize` — build a JVP graph for selected
  outputs with respect to selected inputs.
- `tidu::linear_transpose` / `tidu::try_linear_transpose` — transpose a
  linearized graph so cotangents flow backward.
- `tidu::try_linear_transpose_with_builder` — transpose directly through a
  downstream builder for eager execution.
- `tidu::LinearizedGraph` — result of linearization/transposition; exposes
  `tangent_inputs`, `tangent_outputs`, `as_graph`, `into_graph`.
- `tidu::PrimitiveGraph` — borrowed primitive-graph view passed to executors.

## Rule Contract (`tidu::rules`)

- `tidu::Primitive` — trait downstream operations implement (`add`, `jvp_rule`,
  `transpose_rule`, and their `try_` variants).
- `tidu::PrimitiveBuilder` — emits new operations from a rule (`add_primitive`).
- `tidu::PrimitiveValue` — a rule operand: `Local(LocalValueId)` or
  `External(ValueKey)`.
- `tidu::ADKey` — input-key contract (`tangent_of`) for deriving tangent keys.
- `tidu::ADRuleError` — error for a missing AD rule.
- `tidu::ADRuleKind` — which rule is missing (`Jvp` or `Transpose`).
- `tidu::ADRuleResult``Result<T, ADRuleError>` returned by the `try_` APIs.
- `tidu::DiffPassId` — identifies one `linearize` pass for tangent-key derivation.

## Eager Integration (`tidu::eager`)

- `tidu::eager::try_backward` — reverse-mode `backward()` over a recorded trace.
- `tidu::eager::BackwardExecutor` — downstream hook for concrete forward replay,
  transposed execution, and cotangent accumulation.
- `tidu::eager::Recorder` — records eager graph invocations.
- `tidu::eager::RecordedGraph` — one recorded invocation (one or many operations).
- `tidu::eager::EagerInput` / `tidu::eager::EagerOutput` — per-value input/output
  records.
- `tidu::eager::KeySource` — supplies fresh input keys for recorded graphs.
- `tidu::eager::Trace` — handle linking an eager value to the invocation that
  produced it.