The set trap will only be entered into when something tries to assign to a property of the proxy. But your o class tries to assign to a property of this, where this is the instance, not the Proxy:
  add = () => {
    this.count++;
  };
Note that these class fields are equivalent to doing
class O {
  constructor() {
    this.count = 0;
    this.add = () => {
      this.count++;
    };
  }
}
so this always refers to the instance, rather than the proxy.
If you use a method or function instead, the calling context will be preserved, rather than always being the instance, and the .add being called from the Proxy will result in this being the Proxy in such cases:
class O {
  count = 0;
  add() {
    this.count++;
  };
}
const o = new O();
const po = new Proxy(o, {
  set(t, k, v, r) {
    console.log("set", k, v);
    return true;
  },
});
po.add();
console.log(po.count === 1);