Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .superset/workspace.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ if [[ "$mode" == setup ]]; then
echo "Copied $filename from root checkout."
done
shopt -u nullglob
git submodule update --init
if [[ ! -x venv/bin/python ]]; then
make venv
fi
Expand Down
45 changes: 13 additions & 32 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,26 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Fixed

- **CLI**: Invoke `ngraph inspect` without the unsupported output option.
- **CLI**: Return a nonzero exit status when scenario inspection or simulation fails.
- **BAC**: Keep destinations distinct for flows sharing a source and sum priority classes within each direction.
- **Sweeps**: Normalize directional BAC by baseline delivery, matching the metrics pipeline.
- **Plots**: Compute iteration-count and timing medians and interquartile ranges from per-seed data.

### Changed

- **BREAKING**: **Dependencies**: Require NetGraph `>=0.24.0`.
- **BREAKING**: **Workflows**: Placement inherits the scenario seed; set step `seed` explicitly to keep using `42`.
- **BREAKING**: **Metrics**: Require a positive integer `occurrence_count` on every failure flow result.
- **BREAKING**: **Summaries**: Replace operation counters with `iters_fail`, `iters_total`, and `unique_patterns`.
- **Scenarios**: Generated scenarios, shared templates, and the autoresearch prompt use current NetGraph keys.
- **Autoresearch**: Prompts distinguish measurements from explanations and flag missing or inconsistent evidence.
- **Autoresearch**: Load the NetGraph DSL reference from the `.claude/skills` submodule; run `git submodule update --init` to enable it.
- **Fixtures**: Regenerate scenarios, results, and metrics; see `tests/data/README.md` for numerical changes.
- **Docs**: Correct command examples, metric definitions, and scenario descriptions.
- **Internal**: Consolidate metric and provenance helpers, run the TopoGen pipeline checks in the default test suite, and remove unused code, fixtures, and the PyPI publish workflow.
- **BREAKING**: **Execution**: Use TopoGen `3bf0fa4a` and NetGraph `>=0.24.0` through their Python APIs, with a local process queue. TopoGen and NetGraph executable overrides are removed.
- **BREAKING**: **Scenarios**: `netlab build` now produces seeded scenarios. Supply existing corridor MultiGraphs with `--graphs-dir`. Placement workflows inherit the scenario seed unless a step sets its own.
- **BREAKING**: **Python API**: Import metrics from `netlab.metrics`; the top-level `metrics` package is removed.
- **BREAKING**: **Input formats**: Require list-form workflows and current NetGraph result fields: MSD `source`/`target`/`volume` under `msd_baseline`, timing in `metadata.duration_sec`, and graph `edges`. Failure patterns require a positive integer `occurrence_count`.
- **BREAKING**: **Metric files**: Preserve full endpoint names and bandwidth above baseline; write unavailable numbers as `null`. Research logs use `bw_p99_pct` for availability. See [metrics.md](metrics.md) for output fields and definitions.
- **BREAKING**: **Research**: Templates require `params`, and programmatic generators receive typed values. Resuming requires matching inputs, seed, and dependencies; use a new output directory when these change.

### Added
### Fixed

- **Workspaces**: Superset setup creates an isolated environment and copies missing `.env` files; Run executes `make check-ci`.
- **Integration**: Add local-source validation and fixture regeneration commands.
- **Bandwidth**: Correct availability thresholds and failure-pattern weighting. Sum priority classes without merging distinct endpoints, and keep complete outages in the samples.
- **Latency and comparisons**: Use each endpoint pair's baseline path cost and compare matching seeds. Fix errors caused by measurement scale and inconsistent baseline selection in tables and plots.
- **Runs and reports**: Enforce timeouts, reject stale cached results, and return a failing CLI status when a task fails. Publish complete metric reports only after successful analysis, preserving the previous report on failure.
- **Research**: Rank minimized objectives correctly and prevent infeasible candidates from winning. Allow failed hypotheses and sweep entries to be retried.

### Removed
### Added

- **BREAKING**: **MSD**: Remove `base_demands` aliases `source_path`, `sink_path`, and `demand`; use `source`, `target`, and `volume`.
- **BREAKING**: **MSD**: Read alpha from `msd_baseline.data.alpha_star`; remove `msd` and placement-probe inference.
- **BREAKING**: **Timing**: Read step duration from `metadata.duration_sec`; remove the `execution_time` alias.
- **BREAKING**: **Graphs**: Require `edges` in graph results; remove support for the `links` alias.
- **BREAKING**: **Autoresearch**: Remove the `parameters` alias in hypothesis templates; use `params`.
- **Workspaces**: Superset setup installs a development environment and copies missing `.env` files; Run executes `make check-ci`.

## [0.3.0] - 2026-03-26

Expand Down
16 changes: 3 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,17 @@

.DEFAULT_GOAL := help

# --------------------------------------------------------------------------
# Python interpreter detection
# --------------------------------------------------------------------------
# VENV_BIN: path to local virtualenv bin directory
VENV_BIN := $(PWD)/venv/bin

# PY_BEST: scan for newest supported Python (used when creating new venvs)
# Supports 3.11-3.13 to match common CI matrix
# Choose a Python version from the CI matrix for new virtual environments.
PY_BEST := $(shell for v in 3.13 3.12 3.11; do command -v python$$v >/dev/null 2>&1 && { echo python$$v; exit 0; }; done; command -v python3 2>/dev/null || command -v python 2>/dev/null)

# PY_PATH: active python3/python on PATH (respects CI setup-python and activated venvs)
PY_PATH := $(shell command -v python3 2>/dev/null || command -v python 2>/dev/null)

# PYTHON: interpreter used for all commands
# 1. Use local venv if present
# 2. Otherwise use active python on PATH (important for CI)
# 3. Fall back to best available version
# 4. Final fallback to 'python3' literal for clear error messages
# Prefer the local venv, then PATH (including CI's setup-python), then PY_BEST.
PYTHON ?= $(if $(wildcard $(VENV_BIN)/python),$(VENV_BIN)/python,$(if $(PY_PATH),$(PY_PATH),$(if $(PY_BEST),$(PY_BEST),python3)))

# Derived tool commands (always use -m to ensure correct environment)
# Run tools through the selected interpreter.
PIP := $(PYTHON) -m pip
PYTEST := $(PYTHON) -m pytest
RUFF := $(PYTHON) -m ruff
Expand Down
Loading
Loading