0.6.0 — 2026-04-25
Added
Choreo.FSM.Analysis.to_dfa/1— converts NFA to equivalent complete DFA via subset construction. Automatically introduces a:__trap__sink state for incomplete alphabets.Choreo.FSM.remove_initial_state/2— explicitly demotes a state from initial status without deleting the node.Choreo.FSM.remove_final_state/2— explicitly demotes a state from final status without deleting the node.
Changed
- Breaking:
Choreo.FSMstate typing moved from nodestate_typefield tometaMapSets (initial_statesandfinal_states).add_state/3withtype: :initialortype: :finalnow populates these sets directly. Choreo.FSM.add_state/3withtype: :normalnow explicitly clears a state from bothinitial_statesandfinal_statesin meta. Omitting the:typeoption (e.g. updating a label) preserves existing status.Choreo.FSM.Analysis.deterministic?/1now enforces a single initial state in addition to unique outgoing transition labels, aligning with classical DFA definition.Choreo.FSM.complement/1now converts nondeterministic input to a DFA first (viato_dfa/1) before complementing final states.
Fixed
add_state/3 with type: :initialnow correctly registers the state inmeta.initial_statesso thatreachable_states/1,accepts?/2, and rendering treat it as an entry point.- Fixed broken doctests in
Choreo.FSM.add_initial_state/2andChoreo.FSM.add_final_state/2that still referenced the removedstate_typenode field.
0.5.0 — 2026-04-24
Added
Choreo.Workflow— task orchestration builder with Saga-pattern compensation support- Nodes:
add_start/3,add_end/3,add_task/3,add_decision/3,add_fork/3,add_join/3,add_compensation/3,add_event/3 - Edge types:
:sequence,:compensation,:retry,:failure,:timeout - Swimlane grouping for visual organization
- Analysis:
critical_path/1,parallelizable_tasks/1,failure_scenarios/1,missing_compensations/1,bottlenecks/2,simulate/1,validate/1
- Nodes:
- Internal helpers module — shared
bfs_reachable/2,build_cluster_subgraphs/2,best_predecessor/3extracted to eliminate Credo duplicate-code warnings
Changed
- Breaking: Package and all modules renamed from
YogSystemtoChoreo Choreo.DecisionTree.set_root/3andbranch/4now returnt()directly (pipeable), raisingArgumentErroron invalid use. Removed redundantbranch!/4.
Fixed
- All
mix credo --strictwarnings resolved (double filters, deep nesting, unused aliases, list append inefficiencies,Enum.map_join/3usage,with→caseconversions) - Incorrect
@specreturn types for edge-returning functions (String.t()→number())
0.1.0 — 2026-04-24
Added
Choreo— infrastructure architecture diagrams with typed nodes (database, cache, service, queue, etc.), clusters, and MST/topological-sort analysisChoreo.FSM— finite-state machine builder with initial/final states, transitions, determinism checks, NFA simulation, equivalence checking, and pruningChoreo.Dataflow— pipeline / ETL diagram builder with sources, transforms, buffers, conditionals, merges, and sinks- Analysis: cycle detection, topological sort, orphan/dead-end detection, bottlenecks, critical-path (longest path), throughput simulation, backpressure detection
- Edge types: normal, error, retry, dead-letter
- Cluster support
Choreo.Dependency— software dependency graphs with applications, libraries, modules, interfaces, and tests- Analysis: circular dependency extraction (actual paths), impact analysis (
affected_by/2,depends_on/2), layer violation detection, centrality ranking, longest dependency chain - Cycle edge highlighting in DOT output
- Analysis: circular dependency extraction (actual paths), impact analysis (
Choreo.DecisionTree— classification tree builder with enforced tree invariants- Analysis:
decide/2evaluation, path enumeration, depth/breadth metrics, feature importance, redundant-branch pruning
- Analysis:
Choreo.ThreatModel— STRIDE threat modeling with automated threat generation- Analysis: auto-generated STRIDE threats per element type, trust-boundary crossing detection, exposed data stores, high-risk processes, unencrypted flow detection
- Severity scoring based on sensitivity, privilege, encryption, and trust level
- Shared DOT rendering pipeline with
:default,:dark, and customChoreo.Themesupport - Graphviz integration in ExDoc for inline diagram rendering
- Credo, Dialyzer, and ExCoveralls tooling