Skip to content

v0.1.5

Choose a tag to compare

@matt-beanland matt-beanland released this 09 May 03:18
· 25 commits to main since this release
b752ccc

0.1.5 — 2026-05-05

Artefact:

  • Artefact.is_artefact?/1, Artefact.is_valid?/1, Artefact.validate/1, Artefact.validate!/1 — public validation API. Closes #26, #27
  • Artefact.UUID.valid?/1 — UUIDv7 format predicate; used internally by validation and exposed for callers
  • All public ops (new/1, compose/3, combine/3, harmonise/4, graft/3) now validate their input artefacts and validate the produced artefact before returning — corruption fails at the call site rather than several steps downstream. Closes #30 (empty/invalid uuid rejected at op input), #24 (non-list :labels rejected at op input)
  • Artefact.graft/3 enforces the no-new-islands rule — every new node in args must reach a bind-only key via args.relationships; raises ArgumentError listing orphan keys otherwise. Closes #29
  • Validation rule-set: artefact uuid is UUIDv7; node uuid is UUIDv7; node :labels is a list of strings; node :properties is a map; relationship :type is a non-empty string; relationship :from_id/:to_id reference an extant node; node uuids, node ids and relationship ids are unique within the graph

ArtefactKino:

  • ArtefactKino.new/1,2 now calls Artefact.validate!/1 on its input — a hand-built %Artefact{} with malformed fields (non-list labels, missing uuid, dangling relationship endpoint, etc.) raises ArgumentError with structured reasons instead of a cryptic render-time error. Closes #28. Bumps artefact requirement to ~> 0.1.5 for the new validation API.