attention: own-PR team requests demand the team; triage becomes a per-repo choice - #22
Merged
Merged
Conversation
…a per-repo choice Two judgment fixes and one disclosure, all read-side. A team review request reaching the viewer on their OWN PR no longer lands in waiting_on_me: an author cannot review their own PR, so the request demands the rest of the team. The exclusion rests on login_eq(author, viewer) — structural certainty, not uncertainty, so it suppresses no demand addressed to the viewer. GitHub forbids user-kind self-requests, so only the team path could ever reach this case. The oracle test's polarity assertion narrows accordingly and gains the inverse pin; an integration witness seats the rule against SQL-fed signals with the declared-team control alongside. Project scope stops bundling the maintainer duty with the whole-stream archive: a new per-repo `triage` field (default on at project scope, refused at working scope, where there is no sweep to gate) turns needs_reviewer and untriaged off for repos the operator archives but does not route. Read-side like `teams` — never in the sync fingerprint, so editing it re-derives buckets instantly and cold-starts nothing. Scope chooses what is archived; triage chooses what is owed. people_prs rows disclose `threads_unresolved` — the structural discriminator between a stalled PR nobody reviews (zero, days old) and one already mid-review (many). The judgment stays with the reader. The attention_derive fuzz harness sweeps with the rename and its request-polarity witness narrows the same way the oracle did — both directions now witnessed, so neither regression direction is silent. Verification: make check green; the bucket oracle sweeps the full signal cube with both polarity directions pinned; one integration witness per change (own-PR exclusion with a declared-team control; the triage flip on one archive proving only the maintainer buckets move); the repaired fuzz harness ran 10.9M executions in a 45s soak with zero findings; attention goldens regenerated additive-only; diff mutation sweep 30 mutants, 28 caught, 2 unviable, 0 missed.
The harnesses reference the main crate's public types, so a rename there can orphan the exact witness that carried the renamed invariant — and fuzz-targets-check pins only the file/[[bin]] pairing, not compilation. Stable cargo suffices to type-check (only running targets needs nightly), so the gate catches it for seconds of cost after the first build. This diff is its own first catch: attention_derive spelled the old field name and asserted the old polarity until this gate's dry run flagged it.
eslerm
force-pushed
the
attention-honesty
branch
from
August 13, 2026 20:39
93d6d14 to
0584fe8
Compare
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.
Two judgment fixes and one disclosure in the attention derivation, all
read-side — found by daily use of the archive against real repos — plus
one gate hardening the change itself demanded.
waiting_on_me. An author cannot review their own PR, so the requestdemands the rest of the team. The exclusion rests on
login_eq(author, viewer)— structural certainty, not uncertainty, soit suppresses no demand addressed to the viewer (GitHub forbids
user-kind self-requests; only the team path reaches this case). In real
use this was ~8 of 39
waiting_on_merows.triageconfig field (default on at project scope,refused at working scope, where there is no sweep to gate): turns
needs_reviewer/untriagedoff for repos the operator archives butdoes not route. Read-side like
teams— never in the sync fingerprint,so editing it re-derives buckets instantly and cold-starts nothing; the
fingerprint test now pins the exact key set so a read-side knob can
never leak in unnoticed. Scope chooses what is archived; triage chooses
what is owed.
people_prsrows disclosethreads_unresolved— the structuraldiscriminator between a stalled PR nobody reviews (zero, days old) and
one already mid-review. Additive under
schema_version: 1.make checknow type-checks the fuzz workspace. The harnessesreference the main crate's public types, so a rename can orphan the
exact witness carrying the renamed invariant; this diff was its own
first catch —
attention_derivestill spelled the old field andasserted the old polarity until the new gate leg flagged it. Stable
cargo suffices to type-check; seconds of cost.
Verification:
make checkgreen including the new leg; the bucketoracle sweeps the full signal cube with both polarity directions pinned
(a request on someone else's PR is never suppressed; a request on your
own is never yours); one integration witness per change (own-PR
exclusion with a declared-team control; the triage flip on one archive
proving only the maintainer buckets move); the repaired
attention_deriveharness carries both request-polarity directions and ran a 10.9M-execution
soak with zero findings; attention goldens regenerated additive-only;
diff mutation sweep 30 mutants, 28 caught, 2 unviable, 0 missed.