python-math #16: feat(math): participant-ban leak replication in clojure-legacy mode (Q1) - #2644
Draft
jucor wants to merge 1 commit into
Draft
python-math #16: feat(math): participant-ban leak replication in clojure-legacy mode (Q1)#2644jucor wants to merge 1 commit into
jucor wants to merge 1 commit into
Conversation
This was referenced Jul 22, 2026
Draft
Draft
Draft
jucor
marked this pull request as draft
July 22, 2026 00:52
This was referenced Jul 27, 2026
Draft
Draft
python-math #43: docs(delphi): s7 goal state + journal — mode collapse executed, battery 20/20
#2672
Draft
Draft
Draft
This was referenced Jul 28, 2026
Draft
3 tasks
…ure-legacy mode (Q1) ## Why Quirk Q1 (`delphi/docs/CLOJURE_QUIRKS.md`): the Clojure math worker NEVER honored the participant ban (`participants.mod = -1`) — its ingest path has no mod filter, so banned participants keep influencing user-vote-counts, in-conv membership (the set of participants admitted to clustering), PCA, clustering, and repness (the per-group representative-comment statistics). Python's real ban feature (the `mod_out_ptpts` row drop in `_apply_moderation`, added 2026-06-10) is correct, but it is a certification divergence against Clojure. ## What clojure-legacy mode (the engine setting that reproduces the old Clojure engine's behavior exactly) now stores `mod_out_ptpts` without applying it: the rows are kept, and the single choke point — the `_apply_moderation` row drop — is gated on improved mode. Everything downstream then leaks exactly like Clojure. improved mode keeps the ban byte-for-byte. This supersedes the legacy-mode premise of #2623's T1 carry-prune test: banning can no longer shrink the legacy clustering pool, so the stale-carry trap cannot arise. The `vote_counts` intersection stays as belt-and-braces (comment updated), and the test now pins ban-invariance (`TestCarryUnderParticipantBan`). ## Testing TDD: `tests/test_mod_ptpt_leak_parity.py` — 4 legacy tests RED on the old code (rows dropped / not clustered / not counted / not in-conv), GREEN after; the improved-mode pin stayed green throughout. Neighbor suites green: greedy-carry + degenerate-tick (22 passed), discrepancy moderation subset (19 passed, 6 pre-existing data skips). commit-id:d4116474
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.
Why
Quirk Q1 (
delphi/docs/CLOJURE_QUIRKS.md): the Clojure math worker NEVER honored the participant ban (participants.mod = -1) — its ingest path has no mod filter, so banned participants keep influencing user-vote-counts, in-conv membership (the set of participants admitted to clustering), PCA, clustering, and repness (the per-group representative-comment statistics). Python's real ban feature (themod_out_ptptsrow drop in_apply_moderation, added 2026-06-10) is correct, but it is a certification divergence against Clojure.What
clojure-legacy mode (the engine setting that reproduces the old Clojure engine's behavior exactly) now stores
mod_out_ptptswithout applying it: the rows are kept, and the single choke point — the_apply_moderationrow drop — is gated on improved mode. Everything downstream then leaks exactly like Clojure. improved mode keeps the ban byte-for-byte.This supersedes the legacy-mode premise of #2623's T1 carry-prune test: banning can no longer shrink the legacy clustering pool, so the stale-carry trap cannot arise. The
vote_countsintersection stays as belt-and-braces (comment updated), and the test now pins ban-invariance (TestCarryUnderParticipantBan).Testing
TDD:
tests/test_mod_ptpt_leak_parity.py— 4 legacy tests RED on the old code (rows dropped / not clustered / not counted / not in-conv), GREEN after; the improved-mode pin stayed green throughout. Neighbor suites green: greedy-carry + degenerate-tick (22 passed), discrepancy moderation subset (19 passed, 6 pre-existing data skips).commit-id:d4116474
Stack: