Skip to content

fix(empowerment): restore τ to externalitySafe — the missing parameter was a consent inversion - #10227

Merged
AceHack merged 1 commit into
mainfrom
shadow/externality-safe-tau-consent-inversion
Aug 9, 2026
Merged

fix(empowerment): restore τ to externalitySafe — the missing parameter was a consent inversion#10227
AceHack merged 1 commit into
mainfrom
shadow/externality-safe-tau-consent-inversion

Conversation

@AceHack

@AceHack AceHack commented Aug 9, 2026

Copy link
Copy Markdown
Member

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)

Input Old result
L4 bystander at floor 0.8, harm −0.7 true — reported safe while pushed far below their own floor
L3 μ=.95, σ=.01, harm −0.9 true — a 90% reach reduction called safe
L2 any delta ≥ 0 vacuously true — and EB-8 asserts exactly that branch, so the test cannot fail

The fix, per the boxing-ring table

  • Bystander (no declared τ)any harm fails. They're the audience, not in the ring.
  • Entered the ring (declared τ) → 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 >= 0 and "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.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 — and marked so nobody mistakes it for the real operator (the D_f 1.322 lesson).

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 τ ?? 0 makes 4 of 6 fail, and the fix makes them pass again.

Deliberately NOT in this PR

  • The cross-aggregator comparison (a sum interaction outranking a harmless min one) — 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.
  • A capacity predicate — no wallet exists in-tree, so one would silently pass everyone.

Validation: 16/16 empowerment tests · tsc 0 errors.

🤖 Generated with Claude Code

…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>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@AceHack
AceHack merged commit 705cd5e into main Aug 9, 2026
31 of 32 checks passed
@AceHack
AceHack deleted the shadow/externality-safe-tau-consent-inversion branch August 9, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant