Skip to content

v0.8.7 — Pipeline Diagrams, Semantic Seal & Pipeline Package

Choose a tag to compare

@github-actions github-actions released this 30 Aug 08:01
· 72 commits to master since this release
31ccf5a

📦 Release

  • Version sync to 0.8.7 (app + frontend + core): root pyproject.toml,
    frontend/ml-canvas/package.json / package-lock.json, and
    skyulf-core/setup.py bumped to 0.8.7.

🗺️ New — Mermaid pipeline diagrams, end to end

  • Single source of truth in core: skyulf/pipeline/diagram.py renders a
    top-down flowchart TD (data -> preprocessing steps -> model) from
    config parts. Every label is double-quoted (mermaid rejects unquoted
    parentheses/brackets inside labels), with a human-readable head line and an
    optional second detail line — an explicit runtime summary or a compact
    digest of the step params (max 3 keys, _-prefixed/None/mapping values
    skipped, long values truncated). Algorithm names are humanized
    (random_forest_classifierRandom Forest Classifier); no internal
    node ids leak into labels.
  • Core API surface: SkyulfPipeline.to_mermaid() and
    to_mermaid_markdown() plus mermaid_markdown() for fenced export;
    export_model_card()["diagram"] carries the same diagram; the notebook
    export cell renders a ## Pipeline topology fenced block using node
    display names, not uuids.
  • Backend persistence: successful jobs now persist
    metrics.pipeline_diagram at completion, built from live node results —
    display names captured from the canvas (params._display_name
    metadata["display_name"]), runtime summaries preferred with a
    params-digest fallback for nodes without one, model node typed from the
    job's model_type.
  • Frontend: the Experiments "Pipeline Diagram" tab renders one card per
    selected run (legacy runs without a diagram are listed, not dropped), and
    each card has a Copy mermaid button that copies a ready-to-paste
    ```mermaid fenced block.
  • Render hardening: mermaid's htmlLabels output is HTML, not XML — the
    rendered SVG is now parsed via DOMParser('text/html') and mounted with
    replaceChildren, fixing the browser "Opening and ending tag mismatch:
    br and p" error page; regression tests pin both the parse and the mount.
  • Regression guards: core describe/humanize/fence tests, backend diagram
    adapter tests (display names, summaries, no-uuid assertions, notebook
    cell), and frontend real-mermaid parse tests plus copy-button tests.

🧠 Core — findings closeout

  • F-07: to_native() converts engine frames back to pandas for
    interchange consumers.
  • F-15: semantic fingerprint seals pipeline identity for reuse checks.
  • F-19/F-19b: pipeline split into the skyulf/pipeline/ package —
    diagram generation extracted from the fit path, describe()/to_mermaid()
    live on the pipeline object.

🔧 Fixes & hardening

  • Engine-agnostic node summaries: summary.py now handles both pandas
    and polars frames (shape, dtype breakdown, split renderings), pinned by
    tests/unit/test_summary_polars.py — previously polars-engine runs lost
    their diagram detail lines.
  • Docs: pipeline_quickstart.md gained an "Inspecting a pipeline" section
    covering the diagram labels and export paths.