Skip to content

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 24 Jun 15:02
787713c
fix(verify,ui,vm): second-pass hardening of the reactive-inputs PR (#2)

A follow-up review of #1 surfaced one verifier soundness bug (exposed by
the correct `!= x` null fix), an eval/trace divergence, and several
reactive-simulator defects. All fixed, each with a repro-backed test.

verify:
- `unreachable-default` no longer fires when a null/missing input would fall
  through to the `default` line; it now requires a reachable catch-all rule to
  cover the all-null point (shared ir.MatchCell). Fixes a false "default is
  useless" on the credit example and idiomatic `< / >`-tiled tables.
  (OPNE-VERIFY-01/02)
- new `priority-gap` warning when a hit:priority rule outputs a value absent
  from the `priority:` list (was a silent rule-order fallback). (GLUE-002)

compiler:
- reject mixed-type enum members (`number in {1,2,"x"}` -> DSL005) so the
  verifier can't silently drop a member. (NE-1)

vm/service:
- TraceFull is demand-driven like Eval: an unreached-but-static erroring
  dependency no longer makes a full trace fail where Eval succeeds; the HTTP
  and WASM handlers also surface `traceError` instead of silently dropping the
  trace. (GLUE-001)

ui (internal/service/web/shared.js, the single source of truth):
- stale-response guard so a slow earlier /v1/run cannot clobber a newer result
- preserve the exact decimal token on the JSON<->widget round-trip (no f64
  rounding; removes a dead ternary)
- empty/invalid required inputs show a field-level hint and suppress the run
  instead of a cryptic global "unknown variable" error
- dim inputs that provably did not affect the outcome ("not used for this
  outcome") so first-hit short-circuiting is visible rather than confusing

go test ./..., go vet, gofmt all clean; all examples re-verified with no new
blockers (credit's false unreachable-default is gone).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>