◆ Proxy の set trap は返り値で書き込み成功したかを返す必要あり
◆ strict モードだと書き込み失敗はエラーなので set の関数が何も返さないとエラー

Proxy の set を使う時 こんな感じで使えます

const v = {}
const p = new Proxy({}, {
set(_, name, value) {
v[name] = value
}
})
p.foo = 10
console.log(v)
{ foo: 10 }

p.foo への代入で v.foo に書き込まれています

この処理で
Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'foo'
というエラーが出ることがありました

調べてみると原因は class 構文の内部で実行されていたことです
正確には strict モードになっているから

new class {
constructor() {
const v = {}
const p = new Proxy({}, {
set(_, name, value) {
v[name] = value
}
})
p.foo = 10
console.log(v)
}
}
Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'foo'

set の trap は返り値が必要で true か false で書き込みが成功したかを表します
何も返さない undefined は falsish になり 失敗したと扱われます
だからといって実際には書き込まれているのでなんの問題もないのですが strict モードだと書き込みの失敗はエラーになります

const obj = Object.freeze({a: 1})
obj.a = 123
obj.a
// 1 ←変わってない

new class {
constructor() {
obj.a = 234
}
}
// Uncaught TypeError: Cannot assign to read only property 'a' of object '#<Object>'

このように Object.freeze で書き込み不可にしたプロパティを書き換えようとすると 通常であれば書き換わってないだけで何も起きません
しかし strict モードになる class 構文中で行えばエラーが起きています

なので Proxy で set trap を使うなら書き換えができているなら true を返せば良いです

new class {
constructor() {
const v = {}
const p = new Proxy({}, {
set(_, name, value) {
v[name] = value
return true
}
})
p.foo = 10
console.log(v)
}
}
{ foo: 10 }