Two safety declarations were failing open, and one approval card could be spent twice.
- Tool declarations now inherit. Ruby does not inherit class-level instance variables, so a shared tool base class silently left subclasses with no database transaction and no human gate — both failing open, for sixteen versions. If your app has a tool base class, read
YourTool.effect_modeandYourTool.approval_policyin a console before deploying: that is what those tools have been running as. approve!/answer!/decline!are compare-and-swap. Two holders of one approval card could both settle it and run the turn twice. A verdict now claims the row or loses loudly, naming the approver who won.
Also: the installer prints the queue-adapter fix instead of failing its own doctor; channels route to named staff; named agents gain ask_question and connection tools (settle their parked turns before upgrading — digest change); the session page is an activity feed with handoff lineage; the trace schema is documented as a versioned public interface (docs/traces.md); docs/vs-eve.md rewritten against eve 0.27.8; six false published claims corrected.
Full details in CHANGELOG.md.