Skip to content

v0.2.1

Choose a tag to compare

@v0lka v0lka released this 20 Sep 05:44

Changed

  • Report-contract tag bumped to flowsh/v2 across the docs, specs and ADR pointers. A new CI guard asserts that the frozen tag spelled in the live docs matches analysis.ToolVersion, so a future bump cannot silently drift; the ADRs keep their historical flowsh/v1 spellings with a pointer to the live contract.
  • The canonical staging fold is now order-aware, and the canonical form is emitted only when the report actually has effects. Live egress and bottom-targeted effects are kept verbatim, and commandCalls are de-duplicated so a loop body contributes a single entry.

Fixed

  • Hardened the host-shaped grammar feeding the egress gate: reject non-network URL schemes (file:, data:, mailto:), Windows drive paths and VCS-like dotted local names; accept UNC/SMB authorities, the trailing-dot absolute name, scp paths over IPv6 hosts and the clients' own protocol-prefixed address spellings; bound ports to 1–65535.
  • A confined numeric-class operand that feeds a NetEgress destination now degrades to unresolved egress instead of contributing a directory literal, and systemctl -H/--host is tiered as a destination dialect.
  • Fixed numeric-class confinement so an expansion that can splice a fresh, possibly absolute, path component (an alternate/replacement, a zero-length slice, an out-of-range index or a backslash-escaped ..) degrades to ⊤ rather than claiming a directory.
  • On the PowerShell path, fall back to the command's intrinsic ProcSpawn when the egress gate drops its only effect, and keep a sub-expression destination as unresolved egress.

See CHANGELOG.md for the full history.