▶ projectSettingsError
  ✔ keeps status, code, message and issues on PLAN_FROZEN (1.02158ms)
  ✔ maps revision and concurrent conflicts to distinct recovery (0.093647ms)
  ✔ joins validation issues but still keeps typed codes (0.099887ms)
  ✔ prefers envelope code over legacy error field (0.062248ms)
  ✔ unwraps nested business JSON inside VERSION_CONFLICT envelope (0.101087ms)
  ✔ maps bare VERSION_CONFLICT envelope to retry_after_switch (0.055168ms)
  ✔ retains the local draft when a late tab hits PLAN_FROZEN (0.058419ms)
✔ projectSettingsError (2.318142ms)
ℹ tests 7
ℹ suites 1
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 146.621456
