Skip to content

0.4.0 — running it, and looking at what happened

Latest

Choose a tag to compare

@aidonerightcorp aidonerightcorp released this 10 Aug 23:37
· 17 commits to main since this release

0.3.0 could describe a graph, check it, and choose a route through it. It could not execute one, and it could not draw one without a domain baked into the drawing. This release does both.

Install

pip install "browsergraph @ git+https://github.com/aidonerightcorp/browsergraph.git@v0.4.0"

The wheel has no dependencies at all. Every engine, OCR backend and plotting library is an optional extra, so a graph can be built, drawn, linted, compiled and mock-run with nothing else installed.

Added

  • An executor — map steps, branches, parallel workers, fallbacks, a cache, content-hashed artifacts, and receipts for failures too. Steps record when they started, not only how long they took, so a picture of a run can show two of them overlapping instead of stacking them end to end.
  • solve — one call that tries routes, runs them, judges the output, and returns a champion and a fallback. Judging is a separate argument because "did it work" must not mean "did it not raise": a route returning an empty record passes that test with full marks.
  • Seven pictures of any workbench — shape, route space, funnel, per-step evidence, run timeline, solve scoreboard, learning trend — plus Mermaid, JSON and matplotlib renderings and a self-contained HTML report that opens with no network. Domain-neutral: viz takes a graph and knows nothing else.
  • browsergraph draw and browsergraph solve — both of the above were reachable only from Python.
  • Eleven problem templates across nine domains, each carrying its anti-patterns.
  • Bounded execution — a step gets its own process with a clock and a memory ceiling. Lifecycle isolation, not a sandbox, and it says so in its first paragraph.
  • A hash-chained journal, so evidence survives the process and an edited history is detectable.
  • Model-guided exploration — the model proposes, the compiler disposes, and a refused suggestion is recorded as refused.

Fixed

  • A run's verdict never reached the per-candidate posteriors. solve stamps the judge's answer onto the receipt, but only the per-step flag was read — so after six runs, a reader that produced two records and one that produced none had identical posteriors.
  • An optimism clamp saturated every candidate whose prior plus bonus reached 1.0 — which, since an undeclared prior is 1.0, was almost all of them. Tried and untried scored identically and the search stopped exploring.
  • The pair detector compared a route's outcome against the product of two rates, a category error: on data built with no interaction at all it reported eleven.
  • Exhaustive search materialised the whole product and took 53GB of the machine with it on a 3.8-trillion-route space. It now refuses above a limit, with the number in the message, and streams below it.
  • Discovery and the compiler disagreed about types, so a notebook reported zero legal routes forever; compile_route never checked candidate ports despite a comment saying it did; artifacts were detected by name rather than content, so a second run reported writing nothing.

Full notes in CHANGELOG.md. 1,341 tests.