zero-slop 2.11.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zero_slop/__init__.py +14 -0
- zero_slop/data/learned.json +198 -0
- zero_slop/data/patterns.json +2361 -0
- zero_slop/scripts/__init__.py +1 -0
- zero_slop/scripts/gate.py +74 -0
- zero_slop/scripts/register.py +1304 -0
- zero_slop/scripts/rerank.py +159 -0
- zero_slop/scripts/safeio.py +147 -0
- zero_slop/scripts/slopscore.py +2009 -0
- zero_slop-2.11.2.dist-info/METADATA +109 -0
- zero_slop-2.11.2.dist-info/RECORD +15 -0
- zero_slop-2.11.2.dist-info/WHEEL +5 -0
- zero_slop-2.11.2.dist-info/entry_points.txt +4 -0
- zero_slop-2.11.2.dist-info/licenses/LICENSE +21 -0
- zero_slop-2.11.2.dist-info/top_level.txt +1 -0
zero_slop/__init__.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Zero Slop — score AI-sounding prose and check what a rewrite changed.
|
|
2
|
+
|
|
3
|
+
The scorer runs offline and uses only the Python standard library.
|
|
4
|
+
|
|
5
|
+
from zero_slop import score_text, load_patterns
|
|
6
|
+
|
|
7
|
+
data = load_patterns()
|
|
8
|
+
score_text("We are thrilled to announce...", data)["ai_likelihood"]
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from zero_slop.scripts.slopscore import load_patterns, score_text
|
|
12
|
+
|
|
13
|
+
__all__ = ["load_patterns", "score_text", "__version__"]
|
|
14
|
+
__version__ = "2.11.2"
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Continuous-learning overlay. Same schema as patterns.json; merged over it at runtime by slopscore.py. Add new tells here (with a dated entry in learned-log.md). Lexicon entries here override base weights; patterns append (to soften a base pattern, edit patterns.json). Keep this file valid JSON at all times.",
|
|
3
|
+
"patterns": [
|
|
4
|
+
{
|
|
5
|
+
"name": "has-too-often",
|
|
6
|
+
"cat": "scaffolding",
|
|
7
|
+
"rx": "\\bha(?:s|ve) too often\\b",
|
|
8
|
+
"w": 3.5,
|
|
9
|
+
"first_seen": "2026-08-03",
|
|
10
|
+
"last_confirmed": "2026-08-03"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "quiet-part-out-loud",
|
|
14
|
+
"cat": "performed",
|
|
15
|
+
"rx": "\\bsays? the quiet part out loud\\b",
|
|
16
|
+
"w": 3,
|
|
17
|
+
"first_seen": "2026-08-03",
|
|
18
|
+
"last_confirmed": "2026-08-03"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "arrow-in-prose",
|
|
22
|
+
"cat": "spec-notation",
|
|
23
|
+
"rx": "(?-i:[a-z0-9)])[^.!?\\n]{0,30}(?:\u2192|->)\\s*(?-i:[a-z0-9(])",
|
|
24
|
+
"w": 1.0,
|
|
25
|
+
"first_seen": "2026-08-03",
|
|
26
|
+
"last_confirmed": "2026-08-03",
|
|
27
|
+
"demoted": "2026-08-04"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "threshold-dump",
|
|
31
|
+
"cat": "spec-notation",
|
|
32
|
+
"rx": "[\u2264\u2265][^.!?\\n]{1,50}[\u2264\u2265]",
|
|
33
|
+
"w": 3,
|
|
34
|
+
"first_seen": "2026-08-03",
|
|
35
|
+
"last_confirmed": "2026-08-03"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "fake-first-person-authority",
|
|
39
|
+
"cat": "overcorrection",
|
|
40
|
+
"rx": "\\b(?:i(?:'|\u2019)ve|i have) (?:seen|watched) (?:this|it) (?:happen )?(?:a hundred times|over and over|again and again)\\b|\\bin my experience,\\b",
|
|
41
|
+
"w": 4,
|
|
42
|
+
"first_seen": "2026-08-03",
|
|
43
|
+
"last_confirmed": "2026-08-03"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "everyone-says-wrong",
|
|
47
|
+
"cat": "overcorrection",
|
|
48
|
+
"rx": "\\bevery(?:one|body) (?:says|thinks|tells you)[^.!?]{0,40}(?:they(?:'|\u2019)re| they are | but )\\s*wrong\\b",
|
|
49
|
+
"w": 5,
|
|
50
|
+
"first_seen": "2026-08-03",
|
|
51
|
+
"last_confirmed": "2026-08-03"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "staccato-emphasis",
|
|
55
|
+
"cat": "overcorrection",
|
|
56
|
+
"rx": "\\b\\w+\\. (?:A lot|Deeply|Enormously|Massively)\\. ",
|
|
57
|
+
"w": 4,
|
|
58
|
+
"first_seen": "2026-08-03",
|
|
59
|
+
"last_confirmed": "2026-08-03"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "hard-truth-posture",
|
|
63
|
+
"cat": "overcorrection",
|
|
64
|
+
"rx": "\\bthe (?:hard|honest|real) (?:truth|answer|version)(?: is|:)\\b|\\bnobody wants to (?:hear|say) (?:this|it)\\b",
|
|
65
|
+
"w": 4,
|
|
66
|
+
"first_seen": "2026-08-03",
|
|
67
|
+
"last_confirmed": "2026-08-03"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "thats-the-thing",
|
|
71
|
+
"cat": "scaffolding",
|
|
72
|
+
"rx": "\\b(?:and\\s+)?that'?s?\\s+the\\s+thing\\s+(?:about|with)\\b",
|
|
73
|
+
"w": 3,
|
|
74
|
+
"first_seen": "2026-08-04",
|
|
75
|
+
"last_confirmed": "2026-08-04",
|
|
76
|
+
"source": "manual",
|
|
77
|
+
"example": "And that's the thing about scaling"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "fragment-question-pivot",
|
|
81
|
+
"cat": "rhetorical",
|
|
82
|
+
"rx": "(?:^|[.!?]\\s+|\\n)(?:And |But |Then )?(?:The|My|Our|His|Her|Their)\\s+(?:real\\s+|actual\\s+|best\\s+|worst\\s+|biggest\\s+|good\\s+|bad\\s+|craziest\\s+)?(?:kicker|twist|catch|issue|problem|result|point|irony|upshot|reality|truth|part|news|surprise|difference|takeaway|lesson|mistake|secret|beauty|verdict|answer|goal|advice)\\?\\s",
|
|
83
|
+
"w": 5,
|
|
84
|
+
"first_seen": "2026-08-04",
|
|
85
|
+
"last_confirmed": "2026-08-15",
|
|
86
|
+
"source": "community-taxonomy"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "theres-a-twist",
|
|
90
|
+
"cat": "rhetorical",
|
|
91
|
+
"rx": "\\b(?:but\\s+)?there'?s?\\s+(?:a|the)\\s+(?:twist|catch|kicker|rub)\\b",
|
|
92
|
+
"w": 4,
|
|
93
|
+
"first_seen": "2026-08-04",
|
|
94
|
+
"last_confirmed": "2026-08-04",
|
|
95
|
+
"source": "community-taxonomy"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "not-only-but-also",
|
|
99
|
+
"cat": "rhetorical",
|
|
100
|
+
"rx": "\\bnot\\s+only\\s+\\w+(?:\\s+\\w+){0,6}?\\s+but\\s+also\\b",
|
|
101
|
+
"w": 3,
|
|
102
|
+
"first_seen": "2026-08-04",
|
|
103
|
+
"last_confirmed": "2026-08-04",
|
|
104
|
+
"source": "community-taxonomy"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "explainer-restatement",
|
|
108
|
+
"cat": "scaffolding",
|
|
109
|
+
"rx": "(?:^|[.!?]\\s+|\\n)\\s*(?:This|That|These|Those)\\s+(?:indicates?|shows?|demonstrates?|means?|suggests?|highlights?|underscores?|illustrates?)\\s+(?:that\\b|the\\b|how\\b|why\\b)",
|
|
110
|
+
"w": 3.5,
|
|
111
|
+
"first_seen": "2026-08-04",
|
|
112
|
+
"last_confirmed": "2026-08-04",
|
|
113
|
+
"source": "community-taxonomy"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "tacked-on-moral",
|
|
117
|
+
"cat": "scaffolding",
|
|
118
|
+
"rx": "\\b(?:the\\s+)?(?:lesson|moral|takeaway)\\s+(?:here\\s+|of\\s+the\\s+story\\s+|from\\s+(?:this|all\\s+this)\\s+)?is\\b",
|
|
119
|
+
"w": 4,
|
|
120
|
+
"first_seen": "2026-08-04",
|
|
121
|
+
"last_confirmed": "2026-08-04",
|
|
122
|
+
"source": "community-taxonomy"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "lingering-attention",
|
|
126
|
+
"cat": "performed",
|
|
127
|
+
"rx": "\\b(?:the|that|this)\\s+(?:one\\s+)?(?:line|quote|bit|part|idea|point|framing|comment|thing|phrase)\\s+(?:that\\s+)?i\\s+keep\\s+(?:coming\\s+back\\s+to|thinking\\s+about)\\b|\\bi\\s+can(?:'|’)?t\\s+stop\\s+thinking\\s+about\\b|\\b(?:has|have|had|been|be)\\s+(?:been\\s+)?rattling\\s+around\\s+(?:in\\s+)?my\\s+(?:head|brain)\\b|\\bi(?:'|’)?ve\\s+been\\s+chewing\\s+on\\s+(?:this|that)\\b",
|
|
128
|
+
"hints": ["i keep", "i can't", "i can’t", "rattling", "been chewing"],
|
|
129
|
+
"w": 3.5,
|
|
130
|
+
"first_seen": "2026-08-26",
|
|
131
|
+
"last_confirmed": "2026-08-26",
|
|
132
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "social-endorsement-closer",
|
|
136
|
+
"cat": "linkedin",
|
|
137
|
+
"rx": "\\bthis\\s+one(?:'|’)?s?\\s+(?:is\\s+)?(?:well\\s+|really\\s+|definitely\\s+)?worth\\s+(?:your\\s+time|the\\s+read|a\\s+read|reading|watching|a\\s+listen|a\\s+watch|a\\s+look)\\b|\\bdo\\s+yourself\\s+a\\s+favou?r\\s+and\\s+(?:read|watch|check\\s+out)\\s+(?:this|it)\\b|\\byou\\s+(?:really\\s+)?(?:won(?:'|’)?t|do(?:n(?:'|’)?t|\\s+not)|will\\s+not)\\s+want\\s+to\\s+miss\\s+this(?:\\s+one)?\\s*(?:[:.!?]|$)|\\bdo(?:n(?:'|’)?t|\\s+not)\\s+sleep\\s+on\\s+this(?:\\s+one)?\\b",
|
|
138
|
+
"hints": ["worth", "favor", "favour", "miss this", "sleep on"],
|
|
139
|
+
"w": 4,
|
|
140
|
+
"first_seen": "2026-08-26",
|
|
141
|
+
"last_confirmed": "2026-08-26",
|
|
142
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "chat-roleplay-action",
|
|
146
|
+
"cat": "artifact",
|
|
147
|
+
"rx": "(?:^|[^*])\\*(?:nods?|sighs?|laughs?|smiles?|frowns?|shrugs?|grins?|winks?|chuckles?|gasps?|pauses?|thinks?|wonders?|whispers?|shouts?|gestures?|raises?|leans?|turns?|looks?|glances?|smirks?|blinks?|nodding|sighing|laughing|smiling|thinking|gesturing)\\b[^*\\n]{0,70}\\*(?:$|[^*])",
|
|
148
|
+
"hints": ["*"],
|
|
149
|
+
"w": 8,
|
|
150
|
+
"first_seen": "2026-08-26",
|
|
151
|
+
"last_confirmed": "2026-08-26",
|
|
152
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "reasoning-artifact",
|
|
156
|
+
"cat": "artifact",
|
|
157
|
+
"rx": "\\b(?:let me think (?:this through|step by step)|here(?:'|’)s my thought process|working through this logically|to approach this systematically)\\b",
|
|
158
|
+
"hints": ["let me think", "thought process", "working through", "approach this systematically"],
|
|
159
|
+
"w": 6,
|
|
160
|
+
"first_seen": "2026-08-26",
|
|
161
|
+
"last_confirmed": "2026-08-26",
|
|
162
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"name": "novelty-inflation",
|
|
166
|
+
"cat": "rhetorical",
|
|
167
|
+
"rx": "\\b(?:the (?:failure mode|problem|insight) nobody(?:'|’)?s? (?:is )?(?:naming|talking about)|what nobody tells you|the insight everyone(?:'|’)?s? missing)\\b",
|
|
168
|
+
"hints": ["nobody", "everyone"],
|
|
169
|
+
"w": 4,
|
|
170
|
+
"first_seen": "2026-08-26",
|
|
171
|
+
"last_confirmed": "2026-08-26",
|
|
172
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"name": "emotional-flatline",
|
|
176
|
+
"cat": "performed",
|
|
177
|
+
"rx": "\\b(?:what surprised me most|i was fascinated to (?:discover|learn)|what struck me was|i was excited to learn|the most interesting part)\\b",
|
|
178
|
+
"hints": ["surprised", "fascinated", "struck me", "excited", "interesting"],
|
|
179
|
+
"w": 3,
|
|
180
|
+
"first_seen": "2026-08-26",
|
|
181
|
+
"last_confirmed": "2026-08-26",
|
|
182
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "acknowledgment-loop",
|
|
186
|
+
"cat": "artifact",
|
|
187
|
+
"rx": "\\b(?:to answer your question|you(?:'|’)re asking (?:about|whether)|the question of whether)\\b",
|
|
188
|
+
"hints": ["answer your question", "asking", "question of whether"],
|
|
189
|
+
"w": 3,
|
|
190
|
+
"first_seen": "2026-08-26",
|
|
191
|
+
"last_confirmed": "2026-08-26",
|
|
192
|
+
"source": "conorbronsdon/avoid-ai-writing@40328bd"
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"lexicon": {
|
|
196
|
+
"ascertain": 3
|
|
197
|
+
}
|
|
198
|
+
}
|