fabro/lib
Scott Werner 7bf40373f9 Split workflow version wire type from semantic validation
Move the WorkflowVersion wire type and its structural invariants (file
count and size limits, entrypoint presence, unique keys, path
collisions, canonical form) into fabro-types, so fabro-api replaces the
generated schema type without pulling graph parsing or the template
engine into every API consumer. The wire shape is unchanged.

fabro-workflow-version keeps the expensive graph/config/template
validation behind a ValidatedWorkflowVersion newtype and now owns
WorkflowVersionStore: put only accepts validated versions and get still
re-validates blobs read from shared storage. fabro-store goes back to
being domain-agnostic persistence.

Move the static-reference attribute vocabulary (ReferenceKind,
AttributeScope, reference_kind_for_attribute) to fabro_types::graph and
template-syntax validation to fabro-template, so fabro-graphviz no
longer depends on the template engine.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 13:46:10 -04:00
..
apps Split workflow version wire type from semantic validation 2026-08-13 13:46:10 -04:00
components Split workflow version wire type from semantic validation 2026-08-13 13:46:10 -04:00
foundation Split workflow version wire type from semantic validation 2026-08-13 13:46:10 -04:00
packages/fabro-api-client Add immutable workflow version resource 2026-08-13 13:46:10 -04:00