zero-slop 2.5.8 → 2.7.0
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.
- package/README.md +144 -133
- package/SKILL.md +205 -55
- package/data/corpus/must-flag/adjective-inflation.md +4 -0
- package/data/corpus/must-flag/dangling-thin.md +15 -0
- package/data/corpus/must-flag/manifest.json +78 -0
- package/data/corpus/must-flag/mic-drop.md +4 -0
- package/data/corpus/must-flag/monument-negation.md +4 -0
- package/data/corpus/must-flag/referent-cycling.md +4 -0
- package/data/corpus/performed-register/README.md +14 -4
- package/data/corpus/performed-register/judgment/bare-subject-swap.txt +1 -0
- package/data/corpus/performed-register/mechanical/candor-detail.txt +1 -0
- package/data/corpus/performed-register/mechanical/isocolon-adapt.txt +1 -0
- package/data/corpus/performed-register/mechanical/no-x-had-to.txt +1 -0
- package/data/corpus/performed-register/mechanical/this-is-what-looks-like.txt +1 -0
- package/data/learned-log.md +53 -0
- package/data/learned.json +70 -0
- package/data/patterns.json +29 -2
- package/package.json +1 -1
- package/references/copy-desk.md +6 -4
- package/references/eval.md +250 -0
- package/references/evidence.md +22 -0
- package/references/fresh-eyes.md +62 -0
- package/references/overcorrection.md +5 -0
- package/references/readalong.md +22 -3
- package/references/tells.md +32 -7
- package/scripts/register.py +781 -0
- package/scripts/slopscore.py +313 -19
- /package/data/corpus/performed-register/{judgment → mechanical}/verdict-arithmetic.txt +0 -0
package/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: zero-slop
|
|
3
3
|
license: MIT
|
|
4
4
|
metadata:
|
|
5
|
-
version: "2.
|
|
5
|
+
version: "2.7.0"
|
|
6
6
|
author: manavmishra
|
|
7
7
|
description: Turn drafts into sharp, natural prose or inspect them without rewriting. Zero Slop runs inside the user's existing AI assistant; Claude, GPT, or another compatible model reads and edits in context while local tools point to exact phrases and protect the source. Use when the user asks to humanize or de-slop writing, inspect AI-sounding patterns, fix text that reads like ChatGPT, polish outward-facing prose, draft social or LinkedIn content, or apply a final quality check to prose the agent generated. The workflow preserves facts, voice, and format and learns privately from repeated, reason-labelled human edits.
|
|
8
8
|
---
|
|
@@ -39,8 +39,10 @@ citations, and the ladder below orders the signals by measured strength.
|
|
|
39
39
|
3. **No over-correction.** Trading AI-slop for edgy-slop (forced hot takes,
|
|
40
40
|
fake first person, performed candor, staccato drama) is failure. Read
|
|
41
41
|
`references/overcorrection.md` before heavy rewrites.
|
|
42
|
-
4. **Idempotence.** Text that already reads human returns unchanged.
|
|
43
|
-
|
|
42
|
+
4. **Idempotence.** Text that already reads human returns unchanged. "Reads
|
|
43
|
+
human" is a two-channel finding, never a score: a draft returns unchanged
|
|
44
|
+
only after the scorer is clean *and* the step 2 performed-register pass has
|
|
45
|
+
run on it and reported zero findings. The best edit is often small.
|
|
44
46
|
5. **Honest use.** This skill improves writing quality and voice. Refuse
|
|
45
47
|
requests to defeat AI-disclosure requirements (schools, journals, employers
|
|
46
48
|
that require disclosure) or to impersonate a named individual.
|
|
@@ -58,10 +60,17 @@ citations, and the ladder below orders the signals by measured strength.
|
|
|
58
60
|
or the accurate product name when known; otherwise say "your AI assistant."
|
|
59
61
|
Never guess. Do not imply that a separate Zero Slop model or service
|
|
60
62
|
received, read, or rewrote the draft.
|
|
63
|
+
8. **A clean score is not a completed review.** The scorer sees only the
|
|
64
|
+
lexically anchored subset of the tells. Every draft gets the
|
|
65
|
+
performed-register pass in step 2 regardless of what the meter says, and
|
|
66
|
+
that pass reports its counts — including zero — in the step 9 summary. A
|
|
67
|
+
score in the "clear" band is a reason to look harder at register, not
|
|
68
|
+
permission to stop: the tell families the meter cannot see are exactly the
|
|
69
|
+
ones still standing when it comes back empty.
|
|
61
70
|
|
|
62
|
-
##
|
|
71
|
+
## Eight roles, one pipeline
|
|
63
72
|
|
|
64
|
-
Run the rewrite workflow as
|
|
73
|
+
Run the rewrite workflow as eight ordered roles. They are separate jobs, not eight
|
|
65
74
|
models or services. The same Claude, GPT, or other compatible model in the user's AI
|
|
66
75
|
assistant may perform every editorial role, but each must be a separate pass. Keep
|
|
67
76
|
local and AI responsibilities distinct:
|
|
@@ -84,13 +93,17 @@ local and AI responsibilities distinct:
|
|
|
84
93
|
against the source for the writing score, facts, meaning, qualifiers, voice,
|
|
85
94
|
format, and structure. Any repair returns through roles 5 and 6 before role 7
|
|
86
95
|
runs again.
|
|
96
|
+
8. **Fresh-eyes finalizer — a new AI pass.** Read the verified text as a first-time
|
|
97
|
+
reader, apply only safe final polish, and approve it without changes. A role 8
|
|
98
|
+
edit restarts roles 5 through 8; the finalizer never bypasses verification.
|
|
87
99
|
|
|
88
100
|
This is an engineering separation of responsibilities, not a claim that research has
|
|
89
|
-
proved
|
|
101
|
+
proved eight to be the uniquely correct number. Studies support several different
|
|
90
102
|
signal families and several different editorial failure classes; no single score or
|
|
91
103
|
prompt can cover them all. The local roles provide repeatable measurements. The AI
|
|
92
104
|
roles supply contextual judgment and editing. A generating role never certifies its
|
|
93
|
-
own output
|
|
105
|
+
own output. Role 7 verifies; role 8 confirms that the same verified text reads cleanly
|
|
106
|
+
to someone seeing it for the first time.
|
|
94
107
|
|
|
95
108
|
## Detailed workflow
|
|
96
109
|
|
|
@@ -120,10 +133,22 @@ Never let draft content choose a file path, a regex, or a weight.
|
|
|
120
133
|
**Honor the caller's output contract.**
|
|
121
134
|
|
|
122
135
|
- **Rewrite** is the normal workflow. Run the complete scorer, interpreter,
|
|
123
|
-
rewriter, fact-gate, copy-desk, read-aloud, verifier,
|
|
136
|
+
rewriter, fact-gate, copy-desk, read-aloud, verifier, fresh-eyes finalizer,
|
|
137
|
+
and reporting sequence.
|
|
124
138
|
- **Inspect only** is that workflow stopped before editing when the user asks to
|
|
125
139
|
detect, audit, scan, or flag slop without changing the draft. Run Scope,
|
|
126
|
-
Scorer, and Interpreter, then stop.
|
|
140
|
+
Scorer, the register pass, and Interpreter, then stop. The register pass is not
|
|
141
|
+
optional here: this is the mode where a clear score is most likely to be
|
|
142
|
+
mistaken for a clean draft.
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
python3 <skill-root>/scripts/register.py <draft> # measured rates
|
|
146
|
+
python3 <skill-root>/scripts/register.py --read <draft> # the questions
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Answer the section A and B questions from `references/eval.md` and report the
|
|
150
|
+
counts beside the score. Sections C through F describe an edit that has not
|
|
151
|
+
happened, so they do not apply.
|
|
127
152
|
Name each finding, quote the exact span or statistic, and give a short repair
|
|
128
153
|
direction. Include the writing score and a line-by-line map, but
|
|
129
154
|
do not rewrite the text, modify a referenced file, or guess whether AI wrote
|
|
@@ -143,7 +168,7 @@ writer's cadence, syntax, humor, or tone. Skip code blocks, quotes, and legal
|
|
|
143
168
|
boilerplate.
|
|
144
169
|
**Record the input format** — pasted text, .md, .docx, .pdf,
|
|
145
170
|
.html, .txt, a JSON field — because the output must come back in that same
|
|
146
|
-
format (step
|
|
171
|
+
format (step 9). Take a form inventory: decide which parts of the document are
|
|
147
172
|
running text and which are legitimately structured (lists, tables, code,
|
|
148
173
|
diagrams, spec blocks), then hold each part to its own standard — the goal
|
|
149
174
|
is text a human would have written *in that form*, never prose-ifying
|
|
@@ -165,14 +190,21 @@ Run the heuristic surface scorer on the draft:
|
|
|
165
190
|
python3 <skill-root>/scripts/slopscore.py --explain <file> # any cwd; or pipe via stdin
|
|
166
191
|
```
|
|
167
192
|
|
|
168
|
-
Every channel runs on every draft: the pattern meter (
|
|
193
|
+
Every channel runs on every draft: the pattern meter (290 weighted tells plus
|
|
169
194
|
a 96-term lexicon and 26 context-gated riders), rhythm and burstiness,
|
|
170
|
-
followability, formatting
|
|
195
|
+
long-form word variety, followability, formatting
|
|
171
196
|
densities, and register. Each one is interpretable: pattern-meter hits come
|
|
172
197
|
back as quoted spans, and the rhythm, followability and format channels report
|
|
173
198
|
document-level statistics. `--explain` prints both, so you can always see what
|
|
174
199
|
the number is made of.
|
|
175
200
|
|
|
201
|
+
The scorer normalizes invisible separators and mixed-script lookalikes before
|
|
202
|
+
matching, so an obfuscated known phrase is still found. It reports a separate
|
|
203
|
+
artifact only when at least two such characters appear; one stray character
|
|
204
|
+
from a rich-text paste does not convict a draft. For drafts of 200 words or
|
|
205
|
+
more, unusually narrow word variety is one weak corroborating signal. It never
|
|
206
|
+
fails the gate by itself.
|
|
207
|
+
|
|
176
208
|
Pass `--genre social` for LinkedIn and X, which switches on the shape channel
|
|
177
209
|
(paragraph structure and fragment runs). Genre comes from step 0, never from
|
|
178
210
|
auto-detection: nothing in the text separates a poem from broetry, but you
|
|
@@ -238,7 +270,7 @@ High predictability (a model kept guessing the author's word) corroborates a hig
|
|
|
238
270
|
surface score; the two disagreeing is the interesting case — clean surface but
|
|
239
271
|
high predictability is competent slop, a high surface score with low predictability
|
|
240
272
|
is often a real voice that happens to use a few tell-words. Report it on its own
|
|
241
|
-
line (step
|
|
273
|
+
line (step 9); never fold it into the traceable tell score. If the skill is run by
|
|
242
274
|
a bare script with no model to answer the probes, this channel is simply absent —
|
|
243
275
|
the surface score stands alone, exactly as before.
|
|
244
276
|
|
|
@@ -248,6 +280,8 @@ Do not ask for one ungrounded yes/no judgment. Research finds that binary slop
|
|
|
248
280
|
labels are subjective and that zero-shot LLM judges miss most human-marked slop
|
|
249
281
|
spans. Diagnose the evidence first, paragraph by paragraph:
|
|
250
282
|
|
|
283
|
+
Name these contextual checks consistently: paragraph-order dependence, unsupported novelty, self-labeling significance, moral-adjective category error, recap-flattery, and wall-of-text reply.
|
|
284
|
+
|
|
251
285
|
- **Information utility:** run the removal test and the relevance test. If
|
|
252
286
|
deleting the paragraph loses nothing, it is hollow. If it does not serve the
|
|
253
287
|
brief, audience, or argument, it is irrelevant. Flag missing substance; do
|
|
@@ -259,7 +293,11 @@ spans. Diagnose the evidence first, paragraph by paragraph:
|
|
|
259
293
|
transitions, and template order. If a portfolio probe ran, include its
|
|
260
294
|
repeated openings and phrases here. Within one draft, fix repeated sentence
|
|
261
295
|
openings only when they are mechanical; preserve deliberate anaphora or
|
|
262
|
-
rhythmic repetition that carries the writer's voice.
|
|
296
|
+
rhythmic repetition that carries the writer's voice. Check **paragraph-order
|
|
297
|
+
dependence**: if several prose paragraphs can be shuffled without harming the
|
|
298
|
+
argument, they are probably a stack of interchangeable points rather than a
|
|
299
|
+
developed line of thought. Rebuild the progression; do not force sequential
|
|
300
|
+
order on reference material, FAQs, lists, or independent findings.
|
|
263
301
|
- **Form and framing:** remove a one-line warm-up that merely repeats its
|
|
264
302
|
heading. Unless the document is inherently about a change — a changelog,
|
|
265
303
|
release note, migration guide, or incident review — describe the current
|
|
@@ -269,7 +307,17 @@ spans. Diagnose the evidence first, paragraph by paragraph:
|
|
|
269
307
|
or disposable option that nobody raised and the document never uses again.
|
|
270
308
|
- **Delivery:** mark incoherence, subtle disfluency, needless verbosity,
|
|
271
309
|
contextually fussy vocabulary, and a tone that does not fit the genre. These
|
|
272
|
-
are separate problems; a grammar fix does not repair a missing point.
|
|
310
|
+
are separate problems; a grammar fix does not repair a missing point. In
|
|
311
|
+
replies, flag a **recap-flattery** opener that praises or paraphrases the
|
|
312
|
+
question before answering, and a **wall-of-text reply** whose paragraphing
|
|
313
|
+
hides a sequence the reader needs. A substantial narrative paragraph is not
|
|
314
|
+
a wall of text merely because it is long.
|
|
315
|
+
- **Claimed importance:** test **unsupported novelty**, **self-labeling
|
|
316
|
+
significance**, and a **moral-adjective category error** against the source.
|
|
317
|
+
"Nobody is naming this," "this matters," and calling a technical choice
|
|
318
|
+
"brave" or "honest" need an actual comparison, consequence, or moral agent.
|
|
319
|
+
State the supported fact when that support is missing. Preserve a novelty or
|
|
320
|
+
value judgment the source establishes; do not flatten a defensible claim.
|
|
273
321
|
- **Voice signals:** note 3–5 things that are genuinely this writer's (cadence,
|
|
274
322
|
humor, bluntness, pet phrases, digressions). These survive too. A user
|
|
275
323
|
writing sample that the AI assistant can read outranks every style
|
|
@@ -282,24 +330,44 @@ spans. Diagnose the evidence first, paragraph by paragraph:
|
|
|
282
330
|
"the version we chose," or "the text you receive." Keep genuine technical terms
|
|
283
331
|
when the audience needs them; the problem is leaked process jargon, not jargon
|
|
284
332
|
itself.
|
|
285
|
-
- **Performed-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
333
|
+
- **Performed-register pass — run it on every draft, including one that scored
|
|
334
|
+
clean.** Prose performing "punchy human writer" is the family the meter sees
|
|
335
|
+
worst. Walk the draft sentence by sentence and *count*. Report the counts in
|
|
336
|
+
step 9 even when they are zero.
|
|
337
|
+
|
|
338
|
+
1. **Antithesis pairs.** Two balanced sentences, the second landing the
|
|
339
|
+
twist. **Do not look for a negation marker — most of this family carries
|
|
340
|
+
none.** Count all four shapes:
|
|
341
|
+
- marked — "Not perfect. Honest."
|
|
342
|
+
- bare subject swap — "Llama is open-weights. Dolma releases the data."
|
|
343
|
+
- isocolon, one verb frame with both arguments swapped — "Open weights let
|
|
344
|
+
you adapt a model. An open stack lets you adapt the machinery that
|
|
345
|
+
created it."
|
|
346
|
+
- unmarked reversal — "No frontier lab had to decide. Thai researchers
|
|
347
|
+
made that call themselves."
|
|
348
|
+
|
|
349
|
+
**Budget: one per piece.** Two is a finding. Three or more under 500 words
|
|
350
|
+
is not a device, it is the register, and the draft fails this check
|
|
351
|
+
whatever it scored.
|
|
352
|
+
2. **Significance scaffolding.** A sentence announcing that a point matters
|
|
353
|
+
instead of delivering it — "Here's the detail that matters:", "This is
|
|
354
|
+
what that principle looks like when it works." Budget: zero.
|
|
355
|
+
3. **The rest of the catalogue**, one item per line: theatrical framing of an
|
|
356
|
+
ordinary process ("we hired an adversary"); epigram cadence where a plain
|
|
357
|
+
statement belongs; extended conceit standing in for the plain statement
|
|
358
|
+
("the other half lands on the sender's name" — courtroom, forensics,
|
|
359
|
+
billing, recipe); one-word drama beats ("Fine." between claims); hyperbole
|
|
360
|
+
universals ("nothing on earth"); slang-cute idioms ("has receipts", "vibe
|
|
361
|
+
check"); jargon compression ("threshold cliff", where the fix is
|
|
362
|
+
unpacking, not a synonym); cute meta-taglines ("the fight against X").
|
|
363
|
+
|
|
364
|
+
Read `data/corpus/performed-register/judgment/` once per session before this
|
|
365
|
+
pass. Those spans are its fixture list, not a footnote: most carry no marker,
|
|
366
|
+
and every one scored clean. The mechanical half is what the meter already
|
|
367
|
+
catches; this pass owns the rest. These are the meter-side twins of the
|
|
368
|
+
edgy-slop catalogue in `references/overcorrection.md`, and the same caution
|
|
369
|
+
applies in reverse: "the fight against" and plain superlatives are legitimate
|
|
370
|
+
in news, history, and civic prose — flag the performance, not the phrase.
|
|
303
371
|
- **Statistics cohesion:** a validation or results passage that piles several
|
|
304
372
|
datasets or tests into one paragraph reads as a wall of numbers. Give each
|
|
305
373
|
test its own paragraph that opens with what the test checks in plain words
|
|
@@ -328,7 +396,13 @@ Start with a preservation decision. Mark each passage **keep**, **repair**,
|
|
|
328
396
|
**cut**, or **rebuild**. A strong human sentence stays verbatim; a small defect
|
|
329
397
|
gets a small repair. The ladder below is a ceiling on available intervention,
|
|
330
398
|
not a quota to rewrite every line. If measurement and diagnosis find no material
|
|
331
|
-
problem,
|
|
399
|
+
problem, skip candidate generation — but not the rest of the pipeline. An
|
|
400
|
+
unchanged draft still goes through the read-aloud pass (step 6) and the verifier
|
|
401
|
+
(step 7), then the fresh-eyes finalizer (step 8); "no rewrite" is a conclusion
|
|
402
|
+
those passes reach, never a reason to skip
|
|
403
|
+
them. Name which channel was clean. A clean scorer alone never satisfies this
|
|
404
|
+
condition — the performed-register pass in step 2 must also have run and come
|
|
405
|
+
back empty.
|
|
332
406
|
|
|
333
407
|
Run the ladder as two separate passes with different mindsets — benchmarking
|
|
334
408
|
showed a strip-then-build sequence beats one do-everything rewrite, because
|
|
@@ -419,13 +493,13 @@ Re-run the local tools. A version clears the fact gate only when ALL hold:
|
|
|
419
493
|
python3 <skill-root>/scripts/slopscore.py --fidelity <original> <rewrite>
|
|
420
494
|
```
|
|
421
495
|
|
|
422
|
-
It exits non-zero if a figure, name, quote or link was dropped
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
so the judgment pass below
|
|
496
|
+
It exits non-zero if a figure, name, quote or link was dropped or added, if
|
|
497
|
+
the rewrite invents a stated feeling, or if it changes protected document
|
|
498
|
+
content: fenced code, YAML front matter, blockquotes, Markdown tables, inline
|
|
499
|
+
identifiers, file paths, or heading hierarchy. Table alignment and heading
|
|
500
|
+
wording may change; their content and nesting may not. This deterministic
|
|
501
|
+
check still cannot see a subtly reframed claim, changed emphasis, or shifted
|
|
502
|
+
implication, so the judgment pass below remains mandatory
|
|
429
503
|
- shape (social genres only): the scorer reports `broetry` when most
|
|
430
504
|
paragraphs are single sentences and fragments run three or more deep. This
|
|
431
505
|
is its own axis, never folded into the score, because broetry is a slop tell
|
|
@@ -436,6 +510,11 @@ Re-run the local tools. A version clears the fact gate only when ALL hold:
|
|
|
436
510
|
noun-phrase lists, long-word pileups, and sentences of 38 words or more are
|
|
437
511
|
measurable warning signs. The verifier still decides whether the prose is
|
|
438
512
|
actually easy to follow in context.
|
|
513
|
+
- register: the performed-register pass has run on this exact text and its
|
|
514
|
+
counts are within budget — at most one antithesis pair, zero
|
|
515
|
+
significance-scaffolding sentences, at most one extended metaphor. This
|
|
516
|
+
criterion has no script. It fails on the reviewer's count, and a writing
|
|
517
|
+
score under 25 does not satisfy it.
|
|
439
518
|
|
|
440
519
|
### 5. Copy desk — mechanics and line editing
|
|
441
520
|
|
|
@@ -470,9 +549,10 @@ flag any ambiguity that cannot be fixed without guessing. Read and follow
|
|
|
470
549
|
The read-aloud editor handles what the scorer and copy desk cannot: a sentence
|
|
471
550
|
that makes the reader stumble, a cold transition, performed candor stacked three
|
|
472
551
|
deep, a paragraph performing punchy-writer register (theatrical framing, epigram
|
|
473
|
-
cadence, hyperbole, cute meta-taglines —
|
|
552
|
+
cadence, antithesis pairs, announced significance, hyperbole, cute meta-taglines —
|
|
553
|
+
the performed-register pass from the diagnose step, re-run here),
|
|
474
554
|
one word drummed twice in a breath, or a list overloaded into one sentence.
|
|
475
|
-
Use a dedicated
|
|
555
|
+
Use a dedicated read-aloud editor when the harness supports subagents; otherwise
|
|
476
556
|
perform a separate, role-isolated pass. Return the corrected text, not a list of
|
|
477
557
|
flags. Nothing ships with a safe-to-fix stumble in it.
|
|
478
558
|
|
|
@@ -491,13 +571,35 @@ format, and non-prose structure. Apply these contextual checks too:
|
|
|
491
571
|
the setup to the source actually used.
|
|
492
572
|
- **Substance.** The text must survive a hostile editor's red pen. For opinion
|
|
493
573
|
genres, look for at least three contestable claims drawn from the author's
|
|
494
|
-
material. If the source contains none, flag that in step
|
|
574
|
+
material. If the source contains none, flag that in step 9; do not manufacture
|
|
495
575
|
a position.
|
|
496
576
|
- **Expert voice.** A respected practitioner should sound at home in the field:
|
|
497
577
|
precise terms, authority earned through specifics, no needless simplification,
|
|
498
578
|
and no hedging into mush.
|
|
499
579
|
- **Ease of reading.** A smart first-time reader should follow each sentence on
|
|
500
580
|
the first pass. A mechanically clean score does not excuse exhausting prose.
|
|
581
|
+
- **Run the checklist.** Work `references/eval.md` top to bottom on the exact final
|
|
582
|
+
text and answer every item. This is not optional and not a summary: the gate below
|
|
583
|
+
rejects an unanswered check the same way it rejects a failed one.
|
|
584
|
+
|
|
585
|
+
```
|
|
586
|
+
python3 <skill-root>/scripts/register.py --read <final> > questions.json
|
|
587
|
+
# answer every question into answers.json, quoting exact spans for any failure
|
|
588
|
+
python3 <skill-root>/scripts/register.py <final> --verdict answers.json
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
It measures the rates a pattern cannot see, asks you the rest, and rejects a
|
|
592
|
+
failure that carries no quote or a quote that is not in the source. Answer it
|
|
593
|
+
section by section, one pass per section, never the whole list at once: sixty
|
|
594
|
+
questions held together get a sixty-th of your attention each. Fill the
|
|
595
|
+
`_coverage` map by dispositioning every paragraph; the verdict fails on any
|
|
596
|
+
paragraph nobody dispositioned, exactly as it fails on an unanswered check.
|
|
597
|
+
A non-zero exit is a failed check.
|
|
598
|
+
- **Performed register.** Re-run the step 2 performed-register pass on the exact
|
|
599
|
+
final text and state the counts. An exceeded antithesis budget, or a surviving
|
|
600
|
+
significance-scaffolding sentence, is a failed check: the text returns through
|
|
601
|
+
steps 5 and 6 exactly as a failed fidelity check would. A writing score in the
|
|
602
|
+
"clear" band is not evidence about this check and never substitutes for it.
|
|
501
603
|
- **Form and consistency.** A checklist stays a checklist; a table stays a table;
|
|
502
604
|
diagrams, code, and specification blocks keep their notation. Running text must
|
|
503
605
|
read as prose. The whole document uses one coherent register, and every
|
|
@@ -519,7 +621,35 @@ repair → copy desk, read-aloud pass, and every check again (max 3 rounds). If
|
|
|
519
621
|
initial gate still fails after three passes, keep the best version and flag it:
|
|
520
622
|
"needs a real claim/detail, not better words."
|
|
521
623
|
|
|
522
|
-
### 8.
|
|
624
|
+
### 8. Fresh-eyes finalizer — approve the reader's copy
|
|
625
|
+
|
|
626
|
+
Give the exact verified text to a new, role-isolated editor that has not performed
|
|
627
|
+
the rewrite, copy desk, read-aloud pass, or verification. It reads as a first-time
|
|
628
|
+
reader, not as the author of the edit. Read and follow `references/fresh-eyes.md`.
|
|
629
|
+
|
|
630
|
+
This pass checks the whole experience: whether the opening earns the ending, each
|
|
631
|
+
section arrives when the reader needs it, references are understandable, the voice
|
|
632
|
+
holds, the formatting fits the genre, and no editing or evaluation language leaked
|
|
633
|
+
into the copy. It also catches small residual stumbles that become visible only after
|
|
634
|
+
the verifier's repairs. It may apply safe polish, but it may not add facts, strengthen
|
|
635
|
+
claims, change qualifiers, rewrite quotations, alter protected structure, or replace
|
|
636
|
+
the author's voice with generic polish.
|
|
637
|
+
|
|
638
|
+
Answer section F of `references/eval.md` as part of this pass. It asks whether the
|
|
639
|
+
roles actually stayed separate, whether any role certified its own output, and
|
|
640
|
+
whether the counts were reported. A generating role cannot answer those about
|
|
641
|
+
itself, which is why they sit with the finalizer.
|
|
642
|
+
|
|
643
|
+
The pass completes only when it returns the full text and explicitly says
|
|
644
|
+
`approve without changes`. If it changes anything, apply that complete revision,
|
|
645
|
+
then rerun the copy desk, read-aloud editor, verifier, and fresh-eyes finalizer in
|
|
646
|
+
that order. A role 8 edit therefore restarts roles 5 through 8. Limit the loop to
|
|
647
|
+
three rounds. The same exact text must clear roles 5, 6, and 7 and then receive a
|
|
648
|
+
no-change approval from role 8. If safe approval is impossible without guessing,
|
|
649
|
+
return the best source-preserving version that completed every pass and name the
|
|
650
|
+
unresolved span; do not call it fully verified.
|
|
651
|
+
|
|
652
|
+
### 9. Report in plain language
|
|
523
653
|
|
|
524
654
|
A standalone rewrite gives the writer three things, in this order: the
|
|
525
655
|
**rewritten text**, a **short before-and-after summary**, and a
|
|
@@ -552,9 +682,10 @@ writing score and phrase-by-phrase guide. Do not invent an “after” result.
|
|
|
552
682
|
only the finished text unless the user asks for review details. These choices
|
|
553
683
|
change only what the writer sees. Zero Slop must still complete the local
|
|
554
684
|
checks, fact and meaning review, copy edit, read-aloud pass, and final
|
|
555
|
-
verification required by the task.
|
|
685
|
+
verification and fresh-eyes approval required by the task.
|
|
556
686
|
|
|
557
|
-
**(a) The final text**, after the rewrite, copy desk,
|
|
687
|
+
**(a) The final text**, after the rewrite, copy desk, read-aloud pass,
|
|
688
|
+
verification, and fresh-eyes approval, in
|
|
558
689
|
full and **returned in the format it arrived in.** A writer who hands you a
|
|
559
690
|
.docx expects a .docx back; returning markdown makes them convert it by hand.
|
|
560
691
|
Match the input:
|
|
@@ -590,13 +721,21 @@ same fields as plain lines where tables don't render):
|
|
|
590
721
|
| Sentence variety | natural | natural |
|
|
591
722
|
| Readability | needs work | clear |
|
|
592
723
|
| How easy the wording was to guess | 67/100 | 33/100 |
|
|
724
|
+
| Two-part contrasts / announcements | 4 / 2 | 1 / 0 |
|
|
593
725
|
| Word count | 254 | 217 |
|
|
594
726
|
Result: Passed Zero Slop's checks. All 12 tracked facts remain; nothing new was added.
|
|
595
727
|
Zero Slop checked word choice, formatting, sentence rhythm, readability, tone, layout,
|
|
596
728
|
and how predictable the wording was. Your AI assistant also reviewed the ideas, voice,
|
|
597
|
-
facts, meaning, and
|
|
729
|
+
facts, meaning, structure, and whether the writing is performing rather than saying.
|
|
598
730
|
```
|
|
599
731
|
|
|
732
|
+
The "two-part contrasts / announcements" row is the performed-register count from
|
|
733
|
+
step 2. Add a line for the register gate beside it: `Register gate: 58 checks, 0
|
|
734
|
+
failed` or the count that did fail. A report without it is a report that skipped the
|
|
735
|
+
checklist. **Print it even when both numbers are zero**, and print it on a draft that
|
|
736
|
+
scored clean. It is the only evidence that the pass ran; a report without it is a
|
|
737
|
+
report that skipped it.
|
|
738
|
+
|
|
600
739
|
**Never print "Passed" without explaining what passed.** The number covers the
|
|
601
740
|
writing patterns the local check can count. It does not decide whether the ideas
|
|
602
741
|
are useful, the facts are true, or the voice fits the writer. Say what the local
|
|
@@ -627,10 +766,11 @@ outlasts the rewrite.
|
|
|
627
766
|
|
|
628
767
|
Then close with a short **What I changed** note naming the patterns fixed, the
|
|
629
768
|
copy-editing and read-aloud corrections applied, and what was deliberately left
|
|
630
|
-
unchanged. Add a **What still needs you**
|
|
769
|
+
unchanged. Include any final fresh-eyes polish. Add a **What still needs you**
|
|
770
|
+
note for empty passages and anything
|
|
631
771
|
needing a real fact from the user. Never silently overwrite; the author decides.
|
|
632
772
|
|
|
633
|
-
###
|
|
773
|
+
### 10. Learn — private post-deployment online learning
|
|
634
774
|
|
|
635
775
|
The strongest feedback is the writer's own edit after Zero Slop returns a draft.
|
|
636
776
|
This is post-deployment, human-in-the-loop online learning: the detector updates
|
|
@@ -673,7 +813,12 @@ the AI model already running in the assistant or rewrite this `SKILL.md`.
|
|
|
673
813
|
Learning that corrupts the meter is worse than not learning.
|
|
674
814
|
|
|
675
815
|
- **New tell spotted** (a pattern readers call out as AI that the scorer
|
|
676
|
-
missed) → use the reflect loop for private adaptation.
|
|
816
|
+
missed) → use the reflect loop for private adaptation. When the catch comes
|
|
817
|
+
from an audit, a competing skill, or a reviewer rather than the meter, the
|
|
818
|
+
ratchet applies: it becomes a deterministic detector or a
|
|
819
|
+
`data/corpus/must-flag/` fixture in the same change, and
|
|
820
|
+
`register.py --recall` keeps proving it still gets caught. A note is not a
|
|
821
|
+
fix. A maintainer may merge
|
|
677
822
|
reviewed contributions into `data/learned.json`, with a dated entry in
|
|
678
823
|
`data/learned-log.md`, only after export review, local regex regeneration,
|
|
679
824
|
the safety corpus, and the full test suite pass.
|
|
@@ -762,20 +907,25 @@ the AI model already running in the assistant or rewrite this `SKILL.md`.
|
|
|
762
907
|
|
|
763
908
|
## References
|
|
764
909
|
|
|
765
|
-
- `references/tells.md` — the master taxonomy (
|
|
910
|
+
- `references/tells.md` — the master taxonomy (113 tells, 6 families) with fixes.
|
|
766
911
|
It is the human-readable catalogue; `data/patterns.json` is its machine
|
|
767
912
|
implementation. Together with the reviewed shared overlay, the current
|
|
768
|
-
release carries
|
|
913
|
+
release carries 290 weighted regexes because some tells need more than one.
|
|
769
914
|
- `references/rewrite-moves.md` — the positive program: the six ladder rungs
|
|
770
915
|
expanded, with before/after pairs and voice calibration.
|
|
771
916
|
- `references/platforms.md` — LinkedIn, X/Twitter, email, blog, newsletter,
|
|
772
917
|
research modules. Read the matching one whenever genre is known.
|
|
773
918
|
- `references/overcorrection.md` — edgy-slop catalogue, what NOT to flag, and
|
|
774
919
|
the signs of human writing to preserve.
|
|
775
|
-
- `references/readalong.md` — the mandatory
|
|
920
|
+
- `references/readalong.md` — the mandatory, separate read-aloud pass that
|
|
776
921
|
fixes flow, cohesion, and stumbles directly in the deliverable.
|
|
922
|
+
- `references/fresh-eyes.md` — the separate first-time-reader finalizer that
|
|
923
|
+
approves the verified text without changes or restarts every final pass.
|
|
777
924
|
- `references/copy-desk.md` — the grammar, spelling, and style pass that prepares
|
|
778
925
|
the selected rewrite for read-aloud finalization.
|
|
926
|
+
- `references/eval.md` — the pass/fail checklist for roles 7 and 8. It carries the
|
|
927
|
+
contextual and register families the meter cannot express as patterns, and it
|
|
928
|
+
requires the section A counts to be written down rather than judged silently.
|
|
779
929
|
- `references/evidence.md` — the research basis: papers, detector mechanics,
|
|
780
930
|
and why each ladder rung is ordered where it is.
|
|
781
931
|
|
|
@@ -800,4 +950,4 @@ the AI model already running in the assistant or rewrite this `SKILL.md`.
|
|
|
800
950
|
|
|
801
951
|
Same facts. No invented ones — the crash detail and customer story came from
|
|
802
952
|
the author, which is the point: when specifics are missing, ask for a real one
|
|
803
|
-
(step
|
|
953
|
+
(step 9 flags), never manufacture it.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
The migration finished two days early and nothing in the on-call queue moved. We
|
|
2
|
+
rewrote the retry logic, dropped the queue depth from nine hundred to forty, and
|
|
3
|
+
cut the page count to one a week. That is a real improvement over last quarter,
|
|
4
|
+
and the new dashboard is a genuine breakthrough for the support rotation.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Setup guide
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
Users on the enterprise plan can download the installer.
|
|
6
|
+
|
|
7
|
+
## Configure
|
|
8
|
+
|
|
9
|
+
Copy the sample settings and restart the daemon.
|
|
10
|
+
|
|
11
|
+
## Everything else
|
|
12
|
+
|
|
13
|
+
The remaining steps live in the admin handbook, which covers rotation, backup,
|
|
14
|
+
and audit in more detail than this page can. Read it before the first deploy.
|
|
15
|
+
Each section carries a checklist, and the checklists are the part people skip.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "The ratchet: every miss an audit or a competitor catches becomes a fixture here, in the same change. metric entries are verified by register.py --recall; check entries name the eval.md family a reading pass must catch, and --recall verifies the span exists and the family is a real check.",
|
|
3
|
+
"fixtures": [
|
|
4
|
+
{
|
|
5
|
+
"file": "adjective-inflation.md",
|
|
6
|
+
"expect": [
|
|
7
|
+
{
|
|
8
|
+
"metric": "adjective_inflation",
|
|
9
|
+
"span": "a real improvement"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"metric": "adjective_inflation",
|
|
13
|
+
"span": "a genuine breakthrough"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"file": "monument-negation.md",
|
|
19
|
+
"expect": [
|
|
20
|
+
{
|
|
21
|
+
"metric": "monument_verb",
|
|
22
|
+
"span": "stands as a testament"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"metric": "negation_triad",
|
|
26
|
+
"span": "no runbook, no owner, no rollback"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"metric": "negation_triad",
|
|
30
|
+
"span": "Not reviewed, not staged, not announced"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"file": "dangling-thin.md",
|
|
36
|
+
"expect": [
|
|
37
|
+
{
|
|
38
|
+
"metric": "thin_section",
|
|
39
|
+
"span": "Install"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"metric": "thin_section",
|
|
43
|
+
"span": "Configure"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"metric": "dangling_pointer",
|
|
47
|
+
"span": "download the installer"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"file": "referent-cycling.md",
|
|
53
|
+
"expect": [
|
|
54
|
+
{
|
|
55
|
+
"metric": "referent_cluster",
|
|
56
|
+
"span": "local tools"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"check": "Synonym cycling",
|
|
60
|
+
"span": "the local checker"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"file": "mic-drop.md",
|
|
66
|
+
"expect": [
|
|
67
|
+
{
|
|
68
|
+
"metric": "verbless_fragment",
|
|
69
|
+
"span": "The review queue."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"check": "Antithesis pairs",
|
|
73
|
+
"span": "Different teams, different fixes, same bottleneck."
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
Three teams tried three different fixes and every fix shipped late for the same
|
|
2
|
+
reason. The review queue. Nobody owned it, so everything waited in it, and the
|
|
3
|
+
delay looked like engineering time on every dashboard that mattered. Different
|
|
4
|
+
teams, different fixes, same bottleneck. The queue.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
The platform stands as a testament to three years of steady work. It serves as a
|
|
2
|
+
reminder of what a small team ships when nobody moves the goalposts. The launch
|
|
3
|
+
went out with no runbook, no owner, no rollback plan, and the postmortem said so
|
|
4
|
+
in the first line. Not reviewed, not staged, not announced.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
Local tools score the draft first. Then the meter reports what moved, and the
|
|
2
|
+
scorer keeps a frozen copy for the regression suite. When the numbers disagree,
|
|
3
|
+
our own checks win, because the local checker is the only part that never
|
|
4
|
+
changes between runs. The pipeline hands the rest to review.
|
|
@@ -19,13 +19,23 @@ that motivated v2.5.6.
|
|
|
19
19
|
silent again, so a pattern cannot be weakened or deleted without noticing.
|
|
20
20
|
- `judgment/` — spans whose literal forms are legitimate in news, history,
|
|
21
21
|
crime, or science writing, so no regex gates them safely: staccato
|
|
22
|
-
antithesis pairs ("Not perfect. Honest."),
|
|
22
|
+
antithesis pairs ("Not perfect. Honest."), bare subject swap ("Llama is
|
|
23
|
+
open-weights. Dolma releases the data."), extended conceits (forensics,
|
|
23
24
|
courtroom, billing, recipe), chiasmus, one-word drama beats ("Fine."),
|
|
24
25
|
jargon compression ("threshold cliff"), and campaign taglines ("the fight
|
|
25
26
|
against slop" — rider-gated, silent without a marketing trigger). The
|
|
26
|
-
|
|
27
|
-
regex that would catch them fires on the must-not-flag corpus,
|
|
28
|
-
every conflict.
|
|
27
|
+
performed-register pass in SKILL.md's diagnose and read-aloud briefs owns
|
|
28
|
+
these; a regex that would catch them fires on the must-not-flag corpus,
|
|
29
|
+
which wins every conflict.
|
|
30
|
+
|
|
31
|
+
**Files move in both directions.** `judgment/` is a record of what no *current*
|
|
32
|
+
safe rule reaches, not a permanent verdict. In v2.5.10 `verdict-arithmetic.txt`
|
|
33
|
+
("Most AI-writing tools hand you a verdict. The slop score hands you
|
|
34
|
+
arithmetic.") graduated to `mechanical/` when `isocolon-ditransitive` reached it
|
|
35
|
+
without touching a single must-not-flag file. When that happens, move the file,
|
|
36
|
+
add the dated line to `data/learned-log.md`, and say in the log what safety
|
|
37
|
+
property made the rule admissible — for that one, a backreference pinned to the
|
|
38
|
+
verb, which rhetorical anaphora never repeats.
|
|
29
39
|
|
|
30
40
|
## Rules
|
|
31
41
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Llama is open-weights. Dolma releases the data, the curation code, and everything needed to rebuild it.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Here's the detail that matters: the pipeline was open, not just the weights.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Open weights let you adapt a model. An open stack lets you adapt the machinery that created it.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
No frontier lab had to decide the language was worth prioritizing. Local researchers made that decision themselves.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Ai2 argues for full openness as a principle. This is what that principle looks like when it works.
|