fix(empowerment): restore τ to externalitySafe — the missing parameter was a consent inversion - #10227
Merged
Merged
Conversation
…ter was a consent inversion Soraya's P0 #1. The shipped predicate DROPPED the tau parameter the design specifies and hardcoded tau = 0, which reads a bystander's SILENCE AS CONSENT to the maximum harm the predicate can permit. Machine-checked consequences she found (all reproduced here): L4 — a bystander at floor 0.8 hit by -0.7 returned TRUE (0.1 >= 0): reported safe while pushed far below their own floor. L3 — mu=.95/sigma=.01 with delta=-0.9 returned TRUE: a 90% reach reduction called safe. L2 — vacuously true for every delta >= 0, and EB-8 asserts exactly that branch, so the test CANNOT FAIL. Fix per the boxing-ring table (Aaron 2026-08-09): bystander (no declared tau) -> ANY harm fails; they are the audience, not in the ring. entered the ring (declared tau) -> harm down to their declared tau is permitted. The default is the party's OWN pre-interaction floor rather than a magic constant, so the predicate reduces to `harm >= 0` and "no harm to a bystander" is true BY CONSTRUCTION. A permissive tau must be passed explicitly; it can never be inferred. Two other review findings addressed in place: - Math.min(0, delta) KEPT, with the missing justification written down: a claimed benefit to a non-consenting party is an unverified assertion about someone not at the table, so letting +0.3 offset -0.3 would let the pair self-certify a compensation the bystander never agreed to. - The floor+delta expression is now LABELLED A PROXY, naming both defects honestly: the real property needs posterior_after(third, interaction), which DOES NOT EXIST, and the addition mixes a calibration-score bound with a reach quantity (the lbf-vs-N shape). Tolerated only because the alternative is no bystander check at all — marked so the next reader does not mistake it for the real operator. (D_f 1.322 lesson.) Six tests added (EB-11..EB-16) locking the corrected semantics, including Soraya's L3/L4 counterexamples verbatim. IMPORTANT: the 10 pre-existing tests ALL still passed after a material semantic change, which is itself the evidence they were self-certifying. So I verified the new ones are not: restoring the old `tau ?? 0` makes 4 of the 6 FAIL, and the fix makes them pass again. NOT fixed here (left for Lumen, deeper in their design): the cross-aggregator gain comparison that lets a `sum` interaction outrank a harmless `min` one. Aaron's framing reclassifies it as a punch thrown OUTSIDE the ring — an entry-control failure, so the fix is not rescaling; a sacrificing interaction must not be selectable at all against parties who have not entered. Also NOT added: a capacity predicate — no wallet exists in-tree, so one would silently pass everyone. Validation: 16/16 empowerment tests, tsc 0 errors. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Soraya's P0 #1. The shipped predicate dropped the
τparameter the design specifies and hardcodedτ = 0— which reads a bystander's silence as consent to the maximum harm the predicate can permit.What that produced (all reproduced here)
0.8, harm−0.7μ=.95, σ=.01, harm−0.9delta ≥ 0The fix, per the boxing-ring table
τ) → any harm fails. They're the audience, not in the ring.τ) → harm down to their declaredτis permitted.The default is the party's own pre-interaction floor rather than a magic constant, so the predicate reduces to
harm >= 0and "no harm to a bystander" is true by construction. A permissiveτmust be passed explicitly — it can never be inferred.Two other review findings, addressed in place
Math.min(0, delta)kept, with the missing justification written down: a claimed benefit to a non-consenting party is an unverified assertion about someone not at the table, so letting+0.3offset−0.3would let the pair self-certify a compensation the bystander never agreed to.floor + deltaexpression is now labelled a proxy, naming both defects honestly: the real property needsposterior_after(third, interaction), which does not exist, and the addition mixes a calibration-score bound with a reach quantity (the lbf-vs-N shape). Tolerated only because the alternative is no bystander check at all — and marked so nobody mistakes it for the real operator (theD_f 1.322lesson).The tests are real this time — I checked
All 10 pre-existing tests still passed after a material semantic change, which is itself the evidence they were self-certifying. So I verified the 6 new ones aren't: restoring the old
τ ?? 0makes 4 of 6 fail, and the fix makes them pass again.Deliberately NOT in this PR
suminteraction outranking a harmlessminone) — left for Lumen, deeper in their design. Aaron's framing reclassifies it as a punch thrown outside the ring: an entry-control failure, so the fix isn't rescaling — a sacrificing interaction must not be selectable at all against parties who haven't entered.Validation: 16/16 empowerment tests ·
tsc0 errors.🤖 Generated with Claude Code