300fe465

By: Lucien Huber <im@lcnbr.ch>

bundle standalone Linnest rendering in linnet-py

Move the generic renderer into Linnest, pass topology through a versioned CBOR graph spec, and render in-process through typst-py without a Clinnet runtime dependency. Bundle Linnest, Kurvst, CeTZ, and oxifmt in wheels and source distributions, including licenses and provenance, and publish a Python 3.10+ abi3 wheel.

Snapshot user Typst source trees for prepared renders, support explicit source roots for parent-relative imports, preserve package-cache inputs, and keep physics styling as a Python-side example. Make structural edge names first-class, preserve selector fallback for INHERIT, and expose complete runtime signatures for typed render options.

Checks:
- cargo fmt, check, and strict clippy
- 69 Python tests with real Typst 0.15 rendering
- focused Nix nextest: 16 Linnet integration, 174 Linnet, and 85 Linnest tests
- documentation and generated Python stubs
- source distribution to isolated cp310-abi3 wheel and SVG render

User requests:
- "yes that sounds good! Also note that we want to publish this as its own wheel, so we would have to bundle linnest and the templates?"
- "But we don’t really need clinnet except for the templates"
- "Can you continue now?"
- "continue"