What's New in Dippin v0.28

Issue #39 closes a parser gap. Tracker’s runtime already supported marker_grep, route_required, and output_limit for stdout-driven routing, but .dip source couldn’t reach them — authors following tracker’s TRK101 lint recommendation hit unrecognized tool field "marker_grep" from dippin instead of a cleaner pipeline.

Three new tool-node fields

tool RunTests
  marker_grep: "^(tests_pass|tests_fail)$"
  route_required: true
  output_limit: 65536
  timeout: 2m
  command:
    go test ./... 2>&1
  • marker_grep — regex matched against captured stdout. The last match populates ctx.tool_marker, so routing edges can reference it instead of parsing raw ctx.tool_stdout.
  • route_required — when true, the node fails (EventToolRouteMissing) if the command emits no _TRACKER_ROUTE=<value> sentinel line. The matched value populates ctx.tool_route.
  • output_limit — per-node override of the engine’s captured-stdout byte cap, for tools that need a larger or smaller window than the global default.

Why it matters

Without these fields, authors working around tracker’s TRK101 truncation foot-gun had to enumerate every possible stdout marker as a conditional edge. That made dippin coverage flag false-positive non-exhaustive routing on nodes that were actually fully covered. Typed marker_grep is the canonical fix; now dippin accepts it.

Runtime requirement

These fields forward through DOT export to tracker. Routing semantics require the matching extractToolAttrs change in tracker; the dippin v0.28 release pairs with a tracker version that pins [email protected]. Older tracker versions silently ignore the new attrs.

Coming next

  • #42 — DIP138 lint, recommending marker_grep when a tool node parses stdout for routing without declaring it.
  • #43 — normalize boolean parsing (true / yes / 1 accepted consistently).
  • #44 — close the existing outputs DOT round-trip gap.

Full changelog: CHANGELOG.md.