You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.