Context
Issue #47 requires "storage (presenting as links notation (text based as in
https://github.com/link-foundation/links-notation) ...)". LiNo parses in
(src/lino_parser.rs), but arbitrary networks cannot be written back out as
links-notation text - only self_description_text emits LiNo-style lines. See
requirements.md R-7 and
solution-plans.md S-5.
The reference Rust parser is the links-notation crate 0.13.0 (verified on
crates.io 2026-06-10), which formal-ai also pins
(formats-storage-apis.md Part B).
Scope
- Implement
LinkNetwork::to_lino() and LinkNetwork::from_lino() covering
every link kind (references, names, metadata) so any network round-trips.
- Property test:
from_lino(to_lino(n)) is isomorphic to n across parsed
and hand-built networks.
- Align the emitted dialect with the
links-notation 0.13 crate so other
ecosystem parsers can consume the output; record divergences as parity
fixtures.
- Use a doublets-style id discipline for unnamed links so text and (future)
binary storage share one addressing scheme.
Acceptance criteria
References
Filed from docs/case-studies/issue-47/proposed-issues/05-lino-network-serialization.md. Part of the implementation plan for #47.
Context
Issue #47 requires "storage (presenting as links notation (text based as in
https://github.com/link-foundation/links-notation) ...)". LiNo parses in
(
src/lino_parser.rs), but arbitrary networks cannot be written back out aslinks-notation text - only
self_description_textemits LiNo-style lines. Seerequirements.mdR-7 andsolution-plans.mdS-5.The reference Rust parser is the
links-notationcrate 0.13.0 (verified oncrates.io 2026-06-10), which formal-ai also pins
(
formats-storage-apis.mdPart B).Scope
LinkNetwork::to_lino()andLinkNetwork::from_lino()coveringevery link kind (references, names, metadata) so any network round-trips.
from_lino(to_lino(n))is isomorphic tonacross parsedand hand-built networks.
links-notation0.13 crate so otherecosystem parsers can consume the output; record divergences as parity
fixtures.
binary storage share one addressing scheme.
Acceptance criteria
to_lino/from_linoround-trip property test passes on languagefixtures and synthetic networks.
to_linois accepted by thelinks-notationcrate parser ina test.
PARITY_FIXTURESgain a serialization (output-side)fixture, not just parse-side.
bump: minor).References
requirements.mdR-7solution-plans.mdS-5issue-47-76af108c0f24(PR Finish issue #47 parity feature set #48).Filed from
docs/case-studies/issue-47/proposed-issues/05-lino-network-serialization.md. Part of the implementation plan for #47.