Skip to content

Releases: networmix/NetGraph

v0.19.0

18 Feb 11:40

Choose a tag to compare

[0.19.0] - 2026-02-18

Changed

  • Relicensed from AGPL-3.0-or-later to GPL-3.0-or-later

v0.18.0

17 Feb 11:39

Choose a tag to compare

[0.18.0] - 2026-02-17

Added

  • Python 3.14 support, including free-threaded (no-GIL) builds in CI

v0.17.4

08 Feb 18:51

Choose a tag to compare

[0.17.4] - 2026-02-08

Fixed

  • Single shared RNG per apply_failures call, fixing correlated-seed bug across rules
  • Bracket-exhaustion edge case in MSD binary search when all probed alphas are feasible

Removed

  • seeds_per_alpha MSD parameter (placement is deterministic)
  • SeedManager.create_random_state() and seed_global_random() (unused)

v0.17.3

02 Feb 23:34

Choose a tag to compare

[0.17.3] - 2026-02-02

Fixed

  • Link path filter now uses deterministic {source}|{target} instead of full link ID

v0.17.2

02 Feb 19:39

Choose a tag to compare

[0.17.2] - 2026-02-02

Changed

  • Version management simplified

v0.17.1

16 Jan 03:32

Choose a tag to compare

[0.17.1] - 2026-01-16

Fixed

  • DSL skill documentation aligned with implementation; removed unused demand_placed schema field

v0.17.0

16 Jan 01:47
6581076

Choose a tag to compare

[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

22 Dec 11:22
6ee4620

Choose a tag to compare

[0.16.0] - 2025-12-21

Changed

  • Module reorganization: ngraph.exec split into ngraph.analysis (runtime analysis) and ngraph.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.placement module with place_demands() and PlacementResult

Added

  • ngraph.model.demand subpackage: TrafficDemand and builder functions
  • ngraph.model.flow subpackage: FlowPolicyPreset and policy configuration
  • ngraph.types exports: Mode, FlowPlacement, EdgeSelect, EdgeRef, MaxFlowResult

[0.15.0] - 2025-12-21

Added

  • Dynamic risk group creation: membership rules auto-assign entities by attribute matching; generate blocks create groups from unique attribute values
  • Risk group validation: Undefined references and circular hierarchies detected at load time
  • Dot-notation in conditions: attr field supports nested paths (e.g., hardware.vendor)

Changed

  • match.logic defaults now context-aware: "or" for adjacency/demands, "and" for membership rules

v0.14.0

20 Dec 05:44
6464476

Choose a tag to compare

[0.14.0] - 2025-12-20

Changed

  • BREAKING: Monte Carlo results restructured: baseline returned separately; results contains deduplicated failure patterns with occurrence_count
  • BREAKING: baseline parameter removed from Monte Carlo APIs; baseline always runs implicitly

Added

  • FlowIterationResult.occurrence_count: how many iterations produced this failure pattern
  • FlowIterationResult.failure_trace: mode/rule selection details when store_failure_patterns=True

[0.13.0] - 2025-12-19

Changed

  • BREAKING: TrafficDemand.source_path/sink_path renamed to source/sink; now accept string patterns or selector dicts with path, group_by, and match fields
  • BREAKING: Removed attr:<name> magic string syntax; use {"group_by": "<name>"} dict selectors instead
  • BREAKING: Removed ngraph.utils.nodes module; use ngraph.dsl.selectors for node selection
  • Unified selector system: ngraph.dsl.selectors provides normalize_selector() and select_nodes() for consistent node selection across demands, workflows, adjacency, and overrides
  • Variable expansion in demands: TrafficDemand supports expand_vars with $var/${var} syntax and expansion_mode (cartesian/zip)
  • Match conditions: Selector match field supports 12 operators: ==, !=, <, <=, >, >=, contains, not_contains, in, not_in, any_value, no_value
  • Context-aware defaults: active_only defaults to True for demands/workflows, False for adjacency/overrides

Added

  • ngraph.dsl.selectors module: NodeSelector, MatchSpec, Condition schema classes
  • ngraph.dsl.expansion module: 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_mode field for node group handling (flatten, per_group, group_pairwise)
  • .claude/skills/netgraph-dsl/: Claude skill with DSL syntax reference and examples

v0.12.3

12 Dec 08:05
f3ef090

Choose a tag to compare

[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: MaximumSupportedDemand builds AnalysisContext once and reuses it across all binary search probes