Releases: networmix/NetGraph
Releases · networmix/NetGraph
v0.19.0
v0.18.0
v0.17.4
[0.17.4] - 2026-02-08
Fixed
- Single shared RNG per
apply_failurescall, fixing correlated-seed bug across rules - Bracket-exhaustion edge case in MSD binary search when all probed alphas are feasible
Removed
seeds_per_alphaMSD parameter (placement is deterministic)SeedManager.create_random_state()andseed_global_random()(unused)
v0.17.3
v0.17.2
v0.17.1
v0.17.0
[0.17.0] - 2026-01-10
Changed
BREAKING: DSL syntax refinement with renamed fields and restructured expansion blocks; see updated DSL reference
v0.16.0
[0.16.0] - 2025-12-21
Changed
- Module reorganization:
ngraph.execsplit intongraph.analysis(runtime analysis) andngraph.model(data structures); public API unchanged via re-exports - Expanded public API:
TrafficDemand,FlowPolicyPreset,Scenario,NetworkExplorer, and placement functions now exported from top-level modules - Placement analysis: Extracted SPF caching and demand placement logic into
ngraph.analysis.placementmodule withplace_demands()andPlacementResult
Added
ngraph.model.demandsubpackage:TrafficDemandand builder functionsngraph.model.flowsubpackage:FlowPolicyPresetand policy configurationngraph.typesexports:Mode,FlowPlacement,EdgeSelect,EdgeRef,MaxFlowResult
[0.15.0] - 2025-12-21
Added
- Dynamic risk group creation:
membershiprules auto-assign entities by attribute matching;generateblocks create groups from unique attribute values - Risk group validation: Undefined references and circular hierarchies detected at load time
- Dot-notation in conditions:
attrfield supports nested paths (e.g.,hardware.vendor)
Changed
match.logicdefaults now context-aware:"or"for adjacency/demands,"and"for membership rules
v0.14.0
[0.14.0] - 2025-12-20
Changed
- BREAKING: Monte Carlo results restructured:
baselinereturned separately;resultscontains deduplicated failure patterns withoccurrence_count - BREAKING:
baselineparameter removed from Monte Carlo APIs; baseline always runs implicitly
Added
FlowIterationResult.occurrence_count: how many iterations produced this failure patternFlowIterationResult.failure_trace: mode/rule selection details whenstore_failure_patterns=True
[0.13.0] - 2025-12-19
Changed
- BREAKING:
TrafficDemand.source_path/sink_pathrenamed tosource/sink; now accept string patterns or selector dicts withpath,group_by, andmatchfields - BREAKING: Removed
attr:<name>magic string syntax; use{"group_by": "<name>"}dict selectors instead - BREAKING: Removed
ngraph.utils.nodesmodule; usengraph.dsl.selectorsfor node selection - Unified selector system:
ngraph.dsl.selectorsprovidesnormalize_selector()andselect_nodes()for consistent node selection across demands, workflows, adjacency, and overrides - Variable expansion in demands:
TrafficDemandsupportsexpand_varswith$var/${var}syntax andexpansion_mode(cartesian/zip) - Match conditions: Selector
matchfield supports 12 operators:==,!=,<,<=,>,>=,contains,not_contains,in,not_in,any_value,no_value - Context-aware defaults:
active_onlydefaults toTruefor demands/workflows,Falsefor adjacency/overrides
Added
ngraph.dsl.selectorsmodule:NodeSelector,MatchSpec,Conditionschema classesngraph.dsl.expansionmodule:ExpansionSpec,expand_templates(),substitute_vars(),expand_name_patterns(),expand_risk_group_refs()- Bracket expansion in risk groups:
[1-3]and[a,b,c]patterns now expand in risk group definitions (including children) and membership arrays on nodes, links, and groups TrafficDemand.group_modefield for node group handling (flatten,per_group,group_pairwise).claude/skills/netgraph-dsl/: Claude skill with DSL syntax reference and examples
v0.12.3
[0.12.3] - 2025-12-11
Changed
- SPF caching in demand placement:
demand_placement_analysis()caches SPF results by (source, policy_preset) for ECMP, WCMP, and TE_WCMP_UNLIM policies; TE policies recompute when capacity constraints require alternate paths - MSD AnalysisContext caching:
MaximumSupportedDemandbuildsAnalysisContextonce and reuses it across all binary search probes