Skip to content

Feat: dag and inspector tools - #295

Merged
bpiwowar merged 8 commits into
experimaestro:masterfrom
VictorMorand:feat/dag-tool
Oct 20, 2026
Merged

bpiwowar merged 8 commits into
experimaestro:masterfrom
VictorMorand:feat/dag-tool

Conversation

@VictorMorand

@VictorMorand VictorMorand commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Description

This PR introduces two main features:

experimaestro inspect

a lightweight tool for inspecting serialized tasks (params.json) or Objects (experimaestro.json )

  • available with
    • Direct CLI with experimaestro inspect [--workspace my_ws] [path/to/params.json | hashid]
    • In the TUI montior, hitting i on a task
  • Straight forward searching tool highlighting and unfolding matching configs / params
  • works with remote workspaces

Example visual:

image

DAG tool

Fancy DAG drawing featuring:

  • Task node color based on status

  • optinally also display the intermediate Objects in the Dependency Graph

  • Aligned Heuristic vs advanced Dagre layouts

  • Auto-filter when using grid search configs

  • stack parallel nodes not core to the xp (e.g many parallel evals)

  • could be integrated in the web app directly

Example visualization for a very complex experiment:
image

Checklist

  • Pre-commit hooks installed (pre-commit install) and pre-commit run --all-files passes
  • Commit messages follow Conventional Commits (feat: …, fix: …)
  • Tests added or updated, and uv run pytest passes
  • Documentation updated (if the CLI or a public API changed)
  • Web UI rebuilt and src/experimaestro/webui/data/ committed (if app/ changed)

See CONTRIBUTING.md for details.

bpiwowar added a commit that referenced this pull request Oct 20, 2026
Factor the DAG tool of #295 so that the web UI, the `experimaestro dag`
command and its HTML export share one implementation:

- experimaestro.ui.graph builds the graph from the run's serialized objects
  (no experiment code import, no networkx) and computes the views (grid
  search configuration, jobs only, stacking by bisimulation, transitive
  reduction) in Python only
- state providers expose the raw objects (get_run_objects, cached, with an
  RPC for SSH workspaces) and stay graph-agnostic
- the web UI graph tab uses a new presentational DagView component, fed by
  an experiment.graph WebSocket request and the live job statuses
- the standalone HTML page embeds the same component (dag.js bundle) with
  the graph, all its views and the statuses
- the dag command opens that page, saves it (--html), dumps JSON or prints
  the graph stage by stage

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bpiwowar
bpiwowar merged commit 8a7bc99 into experimaestro:master Oct 20, 2026
1 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants