Embody v5.0.397: set_dat_content wipe guardrail, TDN at-risk filter, settings sort fix (#18), test debt cleanup
Three independent improvements bundled together: a wipe guardrail on the set_dat_content MCP tool to prevent silent destruction of user content from malformed agent calls, a TDN at-risk filter that excludes TD-managed read-only DAT types from the save-time content-loss warning, and a deterministic settings serialization fix that closes issue #18. Plus a substantial test-debt cleanup that brings the previously-failing legacy tests back to green. - Wipe guardrail on set_dat_content: refuses calls whose result would empty a DAT (text='', rows=[], or clear=True with no replacement) unless caller passes confirm_wipe=True. Plus a no-content guard for text=None, rows=None, clear=False -- same failure shape (silent confused success), refused the same way. Error message points back to get_dat_content as the proper read-modify-write workflow. Tests cover all guard paths plus the no-partial-mutation guarantee. - TDN at-risk dialog skips TD-managed read-only DAT types (info, webrtc, folder, monitors, devices, etc.) so the warning only fires for content the user actually authored. Callback DATs (executeDAT family) are intentionally NOT excluded. - Issue #18: .embody/config.json byte-stable across saves via sorted iteration of _PERSISTED_PARAMS + sort_keys=True in json.dumps. Reported by chrsmlls333. - Test debt cleanup: 28 stale .txt test duplicates removed, test_ancestor_rename tearDown leak fixed (4 tests now reliable), 3 envoy_bridge stubs converted to 6 real tests + 1 deleted, test_tdn_reconstruction V03/V07/V12 aligned with current production contract (native widget COMPs export as regular COMPs). - 23 new tests across 4 files; test count: 48 → 49. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
D
Dylan Roscover committed
9e5f71c75a261ff6463373b4a8060f351bd2ded1
Parent: e2bd5c0