zero-slop 2.5.8 → 2.6.1
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 +103 -121
- package/SKILL.md +160 -53
- 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/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/slopscore.py +313 -19
- /package/data/corpus/performed-register/{judgment → mechanical}/verdict-arithmetic.txt +0 -0
package/data/patterns.json
CHANGED
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
{
|
|
158
158
|
"name": "performed-candor",
|
|
159
159
|
"cat": "performed",
|
|
160
|
-
"rx": "\\b(?:let(?:(?:'|\u2019)s| us) be (?:honest|real|clear)|here(?:(?:'|\u2019)s| is) the (?:thing|truth|kicker|deal|catch)|i(?:'|\u2019)ll be honest|the (?:uncomfortable|hard) truth is|truth be told|no fluff|real talk|not gonna lie|if i(?:'|\u2019)m being honest|let me be (?:crystal |perfectly )?clear)\\b",
|
|
160
|
+
"rx": "\\b(?:let(?:(?:'|\u2019)s| us) be (?:honest|real|clear)|here(?:(?:'|\u2019)s| is) the (?:thing|truth|kicker|deal|catch|detail|part|wrinkle|nuance|upshot|punchline|rub)|i(?:'|\u2019)ll be honest|the (?:uncomfortable|hard) truth is|truth be told|no fluff|real talk|not gonna lie|if i(?:'|\u2019)m being honest|let me be (?:crystal |perfectly )?clear)\\b",
|
|
161
161
|
"w": 4,
|
|
162
162
|
"first_seen": "2026-08-03",
|
|
163
163
|
"last_confirmed": "2026-08-15"
|
|
@@ -523,6 +523,33 @@
|
|
|
523
523
|
"first_seen": "2026-08-14",
|
|
524
524
|
"last_confirmed": "2026-08-14"
|
|
525
525
|
},
|
|
526
|
+
{
|
|
527
|
+
"name": "isocolon-ditransitive",
|
|
528
|
+
"cat": "contrast",
|
|
529
|
+
"rx": "\\b(let|give|hand|show|tell|offer|teach|buy|cost|earn|save|bring|send|win)s? you\\b[^.!?]{0,70}[.!?]\\s+[^.!?]{0,70}\\b\\1s? you\\b",
|
|
530
|
+
"hints": ["you"],
|
|
531
|
+
"w": 4.5,
|
|
532
|
+
"first_seen": "2026-08-26",
|
|
533
|
+
"last_confirmed": "2026-08-26"
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"name": "this-is-what-looks-like",
|
|
537
|
+
"cat": "contrast",
|
|
538
|
+
"rx": "(?:^|[.!?]\\s+|\\n)(?:this|that) is what [\\w '\u2019-]{2,40} looks like\\b",
|
|
539
|
+
"hints": ["looks like"],
|
|
540
|
+
"w": 4,
|
|
541
|
+
"first_seen": "2026-08-26",
|
|
542
|
+
"last_confirmed": "2026-08-26"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"name": "no-x-had-to",
|
|
546
|
+
"cat": "contrast",
|
|
547
|
+
"rx": "(?:^|[.!?]\\s+|\\n)No [\\w '\u2019-]{2,40} (?:had to|needed to|has to|ever) [\\w '\u2019-]{2,60}\\.\\s+[\\w '\u2019-]{2,40} (?:did|made|chose|decided|built|released|shipped|published)\\b",
|
|
548
|
+
"hints": ["had to", "needed to", "has to", "ever"],
|
|
549
|
+
"w": 4,
|
|
550
|
+
"first_seen": "2026-08-26",
|
|
551
|
+
"last_confirmed": "2026-08-26"
|
|
552
|
+
},
|
|
526
553
|
{
|
|
527
554
|
"name": "not-the-but-the",
|
|
528
555
|
"cat": "contrast",
|
|
@@ -1709,7 +1736,7 @@
|
|
|
1709
1736
|
{
|
|
1710
1737
|
"name": "chatgpt-artifact",
|
|
1711
1738
|
"cat": "artifact",
|
|
1712
|
-
"rx": "\\boaicite\\b|\\boai_citation\\b|\\bciteturn\\d|\\butm_source=(?:chatgpt(?:\\.com)?|openai)\\b
|
|
1739
|
+
"rx": "\\boaicite\\b|\\boai_citation\\b|\\bciteturn\\d|\\butm_source=(?:chatgpt(?:\\.com)?|openai(?:\\.com)?|copilot(?:\\.com)?|claude\\.ai|perplexity\\.ai|gemini\\.google\\.com)\\b|\\breferrer=grok\\.com\\b|:?contentReference\\[(?:oaicite:)?|\\battributableIndex\\b|\\[cite: ?\\d|\\bturn\\d+(?:search|news|image|view)\\d+\\b|\\[span_\\d|\\(start_span\\)|\\bgrok_(?:card|render)|\\bppl-ai-file-upload\\b|\\battached_file\\b",
|
|
1713
1740
|
"w": 10,
|
|
1714
1741
|
"first_seen": "2026-08-14",
|
|
1715
1742
|
"last_confirmed": "2026-08-22"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zero-slop",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"description": "An Agent Skill that scores AI-sounding prose 0-100 locally and rewrites it without losing a fact. Runs inside Claude Code, Codex, Cursor, Warp, Zed and other SKILL.md agents. Offline, zero dependencies, MIT.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-skill",
|
package/references/copy-desk.md
CHANGED
|
@@ -69,7 +69,7 @@ known voice signals, and immutable facts when available. Then use this brief:
|
|
|
69
69
|
> terse note only for unresolved ambiguities or unusual forms deliberately kept.
|
|
70
70
|
|
|
71
71
|
Apply the corrected version to the deliverable, then send that exact artifact
|
|
72
|
-
through the
|
|
72
|
+
through the read-aloud pass in `references/readalong.md`. Verify the
|
|
73
73
|
artifact returned by the read-aloud editor:
|
|
74
74
|
|
|
75
75
|
1. Rerun the heuristic surface scorer and scripted fidelity check.
|
|
@@ -77,11 +77,13 @@ artifact returned by the read-aloud editor:
|
|
|
77
77
|
claims, qualifiers, intended voice, regional spelling, format, and non-prose
|
|
78
78
|
structure. The script cannot detect every semantic or stylistic change.
|
|
79
79
|
3. If any check or comparison requires a repair, apply it, send the repaired
|
|
80
|
-
text through the copy desk and
|
|
80
|
+
text through the copy desk and read-aloud pass again, and repeat all
|
|
81
81
|
final checks.
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
After verification, send that exact text through the finalizer in
|
|
84
|
+
`references/fresh-eyes.md`. Stop only when the same artifact clears the copy desk,
|
|
85
|
+
read-aloud pass, semantic and format review, scorer, fidelity check, and receives a
|
|
86
|
+
no-change fresh-eyes approval. Limit this repair loop to
|
|
85
87
|
three rounds. If an issue still cannot be resolved without guessing, return the best
|
|
86
88
|
source-preserving version that completed both editorial passes, flag the unresolved
|
|
87
89
|
span and failed check plainly, and do not describe the fallback as fully verified.
|
package/references/evidence.md
CHANGED
|
@@ -47,6 +47,28 @@ not a deception.
|
|
|
47
47
|
8. **Affect skew.** LLM text is joy-skewed and uniformly positive
|
|
48
48
|
(Muñoz-Ortiz). Counter: widen affect.
|
|
49
49
|
|
|
50
|
+
## Incumbent audit: what transferred and what did not
|
|
51
|
+
|
|
52
|
+
Zero Slop v2.5.9 audited
|
|
53
|
+
[`conorbronsdon/avoid-ai-writing`](https://github.com/conorbronsdon/avoid-ai-writing)
|
|
54
|
+
at commit `40328bd292bc682d46010a6f9ac2cdbf4fb4ceca`. The ideas that survived
|
|
55
|
+
transfer tests were zero-width and mixed-script normalization, exact protection
|
|
56
|
+
for structured document spans, broader AI-tool tracker residue, three narrowly
|
|
57
|
+
defined phrase families, and one conservative long-form word-variety signal.
|
|
58
|
+
On the incumbent's pinned 875-human/779-machine
|
|
59
|
+
paragraph corpus, its low-TTR signal fired on 1 human and 20 machine paragraphs
|
|
60
|
+
(22.46x lift). Zero Slop keeps it weak and corroboration-dependent.
|
|
61
|
+
|
|
62
|
+
Function-word entropy, punctuation-distribution uniformity, and cross-paragraph
|
|
63
|
+
rhythm were also tested. None fired on Zero Slop's 38 consensus-labelled
|
|
64
|
+
editorial passages; on the Beemo paired set they were rare and only directional
|
|
65
|
+
proxies because Beemo labels provenance and editing history, not slop quality.
|
|
66
|
+
They were not promoted. The incumbent's hand-shaped class probabilities were
|
|
67
|
+
also rejected: its documentation correctly says they are not calibrated against
|
|
68
|
+
a labelled corpus, and its own composite reports paragraph ROC-AUC 0.501 and
|
|
69
|
+
document ROC-AUC 0.623. Zero Slop does not turn an uncalibrated writing score
|
|
70
|
+
into an authorship probability.
|
|
71
|
+
|
|
50
72
|
## Why the scorer measures features, not detector verdicts
|
|
51
73
|
|
|
52
74
|
Detectors are brittle: RAID (2405.07940) shows trivial perturbations fool
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# The fresh-eyes finalizer
|
|
2
|
+
|
|
3
|
+
This is the last role in the editing workflow. It receives the exact text that
|
|
4
|
+
already cleared the copy desk, read-aloud editor, and verifier. Its job is to read
|
|
5
|
+
that text as a first-time reader and catch the small but consequential problems an
|
|
6
|
+
editor can stop seeing after repeated passes.
|
|
7
|
+
|
|
8
|
+
Use a new, role-isolated editor when the harness supports agents or subagents.
|
|
9
|
+
Otherwise start a separate pass with no drafting or scoring mindset. Do not ask the
|
|
10
|
+
rewriter to approve its own work.
|
|
11
|
+
|
|
12
|
+
## What to check
|
|
13
|
+
|
|
14
|
+
- **The whole arc.** The opening sets up the real point, sections arrive in a useful
|
|
15
|
+
order, and the ending resolves rather than repeats the piece.
|
|
16
|
+
- **First-use clarity.** Names, pronouns, abbreviations, references, and transitions
|
|
17
|
+
make sense when encountered, without knowledge from the editing process.
|
|
18
|
+
- **Reader effort.** A smart first-time reader can follow the argument once through.
|
|
19
|
+
Unpack only a genuine stumble; do not dilute expert language the audience needs.
|
|
20
|
+
- **Voice continuity.** The same person seems to have written the beginning, middle,
|
|
21
|
+
and end. Restore source-backed warmth or texture lost to over-editing.
|
|
22
|
+
- **Residual process language.** Remove internal labels, scoring talk, evaluation
|
|
23
|
+
jargon, or comments meant for the editor rather than the reader.
|
|
24
|
+
- **Genre and format.** The text looks and sounds native to its destination. Preserve
|
|
25
|
+
all legitimate lists, tables, code, headings, citations, links, and layout.
|
|
26
|
+
- **Last-mile polish.** Correct a safe leftover repetition, vague handoff, awkward
|
|
27
|
+
phrase, or mechanical inconsistency that survived the earlier passes.
|
|
28
|
+
|
|
29
|
+
## Boundaries
|
|
30
|
+
|
|
31
|
+
Preserve every fact, claim, qualifier, name, number, date, link, quotation, source,
|
|
32
|
+
voice signal, regional spelling choice, and protected non-prose element. Do not add
|
|
33
|
+
examples, experiences, certainty, novelty, emotion, or specificity. Do not make a
|
|
34
|
+
substantive rewrite. If the intended correction is uncertain, leave the text alone
|
|
35
|
+
and name the ambiguity.
|
|
36
|
+
|
|
37
|
+
## Finalizer brief
|
|
38
|
+
|
|
39
|
+
> You are the fresh-eyes finalizer. Read the complete verified text as a first-time
|
|
40
|
+
> reader, from title to final line. Apply only safe last-mile polish for overall arc,
|
|
41
|
+
> first-use clarity, reader effort, voice continuity, genre fit, residual process
|
|
42
|
+
> language, repetition, and mechanical consistency. Preserve every fact, claim,
|
|
43
|
+
> qualifier, name, number, date, link, quotation, source, voice signal, regional
|
|
44
|
+
> spelling choice, and non-prose element. Do not add detail, certainty, emotion,
|
|
45
|
+
> novelty, or generic polish. Return the complete text in its original format,
|
|
46
|
+
> followed by exactly one status: `approve without changes`, `changed — rerun final
|
|
47
|
+
> checks`, or `unresolved — needs the writer`.
|
|
48
|
+
|
|
49
|
+
## Closed finalization loop
|
|
50
|
+
|
|
51
|
+
Approval is valid only when the finalizer returns `approve without changes`. If it
|
|
52
|
+
changes even one character, apply the complete revision and rerun, in order:
|
|
53
|
+
|
|
54
|
+
1. the copy desk;
|
|
55
|
+
2. the read-aloud editor;
|
|
56
|
+
3. the verifier, including local and contextual checks; and
|
|
57
|
+
4. this fresh-eyes finalizer.
|
|
58
|
+
|
|
59
|
+
Repeat for at most three rounds. The same exact text must clear all four roles, with
|
|
60
|
+
the fresh-eyes finalizer approving it unchanged. If the remaining issue cannot be
|
|
61
|
+
fixed without guessing, return the best source-preserving text that completed every
|
|
62
|
+
pass, identify the unresolved span, and do not describe it as fully verified.
|
|
@@ -56,6 +56,11 @@ experience — these alone are NOT evidence of AI:
|
|
|
56
56
|
Require corroboration. A paragraph needs multiple independent tells, or a failed
|
|
57
57
|
removal test, before it's slop.
|
|
58
58
|
|
|
59
|
+
This governs lexical flags only. It does not apply to the performed-register
|
|
60
|
+
family: register is a property of the piece, not of a paragraph. Four unmarked
|
|
61
|
+
antithesis pairs across four paragraphs *is* the corroboration — each one is
|
|
62
|
+
locally defensible, and the repetition is the whole finding.
|
|
63
|
+
|
|
59
64
|
## Signs of human writing — preserve on sight
|
|
60
65
|
|
|
61
66
|
When a draft shows these, protect them through the rewrite; deleting them is
|
package/references/readalong.md
CHANGED
|
@@ -6,8 +6,8 @@ listener hears it: from the first line to the last, with each sentence setting u
|
|
|
6
6
|
next. A stumble, cold transition, unclear antecedent, or change of voice can still
|
|
7
7
|
survive a clean score and correct grammar.
|
|
8
8
|
|
|
9
|
-
Run this pass on every deliverable after the copy desk. It is the
|
|
10
|
-
before
|
|
9
|
+
Run this pass on every deliverable after the copy desk. It is the spoken-flow pass
|
|
10
|
+
before verification and the separate fresh-eyes finalizer. Use a dedicated editor with fresh ears
|
|
11
11
|
when the harness supports subagents; otherwise perform a separate, role-isolated pass.
|
|
12
12
|
The editor must fix the actual deliverable and return the corrected artifact in the
|
|
13
13
|
same format. An audit or list of suggestions is not a completed pass.
|
|
@@ -21,17 +21,33 @@ safe correction for:
|
|
|
21
21
|
endings that make a reader stop or back up.
|
|
22
22
|
- **Cold transitions.** Add or repair the hinge when a sentence, paragraph, or
|
|
23
23
|
section arrives without a clear connection to what came before.
|
|
24
|
+
- **Paragraph-order dependence.** If adjacent prose paragraphs can trade places
|
|
25
|
+
without changing the argument, rebuild the progression. Do not impose a story
|
|
26
|
+
arc on FAQs, reference entries, independent findings, or genuine lists.
|
|
24
27
|
- **Performed candor.** Remove announcements of honesty such as "honestly" or "to be
|
|
25
28
|
fair" when the sentence can simply make its point.
|
|
26
29
|
- **Reflexive agreement.** Remove automatic praise or agreement that appears before
|
|
27
30
|
the substance has been checked. Let the facts determine whether the draft agrees,
|
|
28
31
|
qualifies, or disagrees.
|
|
32
|
+
- **Recap-flattery.** In a reply, cut praise and a needless restatement of the
|
|
33
|
+
question before the answer. Keep setup that materially changes the answer.
|
|
34
|
+
- **Wall-of-text reply.** Break an answer where the reader must change task,
|
|
35
|
+
decision, time, or subject. Do not split a coherent narrative paragraph merely
|
|
36
|
+
to make it look lighter.
|
|
29
37
|
- **Communicative drift.** Stop when fluent sentences no longer advance a clear
|
|
30
38
|
point or reader need. Cut the passage, rebuild it around its purpose, or flag the
|
|
31
39
|
missing intent rather than inventing one.
|
|
32
40
|
- **Rhetorical scale mismatch.** Reduce grand reveals, lessons, or contrasts when
|
|
33
41
|
the underlying point is too small or unsupported for the framing. Preserve a
|
|
34
42
|
contrast that corrects a real, supported misconception.
|
|
43
|
+
- **Unsupported novelty.** Remove claims that nobody has noticed or named an idea
|
|
44
|
+
unless the source supplies a defensible comparison.
|
|
45
|
+
- **Self-labeling significance.** Replace an unsupported declaration that a point
|
|
46
|
+
is important with the consequence that makes it important.
|
|
47
|
+
- **Moral-adjective category error.** Do not call a system design, metric, or
|
|
48
|
+
technical choice brave, honest, ethical, or courageous when the sentence means
|
|
49
|
+
accurate, transparent, conservative, or reliable. Preserve a sourced moral
|
|
50
|
+
judgment about an actual agent or decision.
|
|
35
51
|
- **Performed-writer register.** Flatten theatrical framing of ordinary work ("we
|
|
36
52
|
hired an adversary"), epigram closers, staccato antithesis pairs ("Not perfect.
|
|
37
53
|
Honest."), extended conceits (billing, courtroom, forensics, recipe), one-word
|
|
@@ -58,6 +74,8 @@ safe correction for:
|
|
|
58
74
|
Do not merely flag these problems. Correct them directly wherever the intended
|
|
59
75
|
meaning is certain.
|
|
60
76
|
|
|
77
|
+
For consistent reporting, use these names: paragraph-order dependence, unsupported novelty, self-labeling significance, moral-adjective category error, recap-flattery, and wall-of-text reply.
|
|
78
|
+
|
|
61
79
|
## Boundaries
|
|
62
80
|
|
|
63
81
|
- Preserve every fact, claim, qualifier, number, name, date, link, and source.
|
|
@@ -103,7 +121,8 @@ Verify the exact artifact returned by the read-aloud editor:
|
|
|
103
121
|
this read-aloud pass again, and repeat every final check.
|
|
104
122
|
|
|
105
123
|
Stop only when the same artifact has cleared the copy desk, final read-aloud pass,
|
|
106
|
-
semantic and format review, scorer,
|
|
124
|
+
semantic and format review, scorer, fidelity check, and the separate fresh-eyes
|
|
125
|
+
finalizer in `fresh-eyes.md`. Limit this repair loop to
|
|
107
126
|
three rounds. If an issue still cannot be resolved without guessing, return the best
|
|
108
127
|
source-preserving version that completed both editorial passes, state the unresolved
|
|
109
128
|
span and failed check plainly, and do not describe the fallback as fully verified.
|
package/references/tells.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# The Tell Taxonomy
|
|
2
2
|
|
|
3
|
-
A hundred and
|
|
3
|
+
A hundred and thirteen tells in six families, merged from WP:AICATCH (Wikipedia's editor
|
|
4
4
|
catalog, built from thousands of caught instances), the de-slop/stop-slop
|
|
5
5
|
detector line, petergyang/no-ai-slop, blader/humanizer, the academic
|
|
6
6
|
lexicon studies (Kobak, Liang, Juzek & Ward), and community taxonomies of
|
|
@@ -26,6 +26,8 @@ as weak evidence unless it is generic in context or appears in a cluster. A
|
|
|
26
26
|
lone dash, formal sentence, transition, or supported contrast remains a style
|
|
27
27
|
choice. See `evidence.md` for the study, limitations, and adoption decision.
|
|
28
28
|
|
|
29
|
+
Contextual review names six checks explicitly: paragraph-order dependence, unsupported novelty, self-labeling significance, moral-adjective category error, recap-flattery, and wall-of-text reply.
|
|
30
|
+
|
|
29
31
|
## 1. Lexical
|
|
30
32
|
|
|
31
33
|
| Tell | Fix |
|
|
@@ -76,6 +78,8 @@ choice. See `evidence.md` for the study, limitations, and adoption decision.
|
|
|
76
78
|
| Mechanical sentence openings: several consecutive sentences begin with the same subject or frame without building deliberate rhythm | Merge or vary the sentences; preserve purposeful anaphora |
|
|
77
79
|
| Jargon compression: invented compound terms in place of explanation — "threshold cliff", "length-blind floor", "pinned high forever" | Unpack into the plain explanation once, then a short name only if the document truly reuses it; the fix is unpacking, not a synonym |
|
|
78
80
|
| Stat pile-up: several datasets or tests crammed into one paragraph with no connective explanation | One test per paragraph, opening with what the test checks in plain words ("The first test checks that the score falls as humans get more involved"), numbers after the plain-language setup |
|
|
81
|
+
| Paragraph-order dependence: prose paragraphs can be shuffled without changing the argument | Rebuild a progression in which each paragraph earns the next; exempt FAQs, reference entries, independent findings, and genuine lists |
|
|
82
|
+
| Wall-of-text reply: an answer hides distinct steps or decisions in one unbroken block | Add only the paragraph breaks or list structure the reader needs; length alone is not the signal |
|
|
79
83
|
|
|
80
84
|
## 3. Rhetorical
|
|
81
85
|
|
|
@@ -86,6 +90,9 @@ choice. See `evidence.md` for the study, limitations, and adoption decision.
|
|
|
86
90
|
| Manufactured stakes: "in today's fast-paced world", "now more than ever" | Start where the reader needs to start |
|
|
87
91
|
| Performed candor: "let's be honest", "here's the thing", "truth be told" | State the point |
|
|
88
92
|
| Rhetorical-question openers: "Ever wondered…?", "What if I told you…?" | The answer, as a statement |
|
|
93
|
+
| Unsupported novelty: "the problem nobody is naming" without a comparison or source | Make the narrower supported claim, or ask for the missing basis |
|
|
94
|
+
| Self-labeling significance: "this matters", "this is important", or "the key insight" substitutes a label for a consequence | State the concrete consequence and let it carry the weight |
|
|
95
|
+
| Moral-adjective category error: a technical choice or metric is called brave, honest, ethical, or courageous without a moral agent or decision | Name the engineering property or trade-off; preserve a real moral judgment when the source supports one |
|
|
89
96
|
| Throat-clearing: "The uncomfortable truth is", "Let me be clear" | Cut; the claim stands alone |
|
|
90
97
|
| Emphasis crutches: "Make no mistake", "Let that sink in", "Read that again" | Show the weight with the fact itself |
|
|
91
98
|
| Meta-commentary: "In this post we'll explore", "Let me walk you through" | Just do it |
|
|
@@ -113,6 +120,8 @@ choice. See `evidence.md` for the study, limitations, and adoption decision.
|
|
|
113
120
|
| Hyperbole universals: "nothing on earth", "on the planet", "in history", "known to man" | State the actual scope; the honest comparison is smaller and stronger |
|
|
114
121
|
| Cute meta-taglines and campaign framing: "a meter you can argue with", "the fight against X" as a slogan | Describe the thing; "posts about writing quality" beats a campaign poster. "The fight against" is real usage in history and civic prose — flag the marketing register, not the phrase |
|
|
115
122
|
| Staccato antithesis: two short balanced sentences, the second landing the twist — "Not perfect. Honest.", "Slop isn't a vibe. It's measurable.", "The draft was cheap. The signal it sent was not." | One plain sentence with the claim; at most one antithesis per piece |
|
|
123
|
+
| Unmarked antithesis: the same figure with no negation marker at all, so the whole "not X, it's Y" family walks past it. Four shapes — bare subject swap ("Llama is open-weights. Dolma releases the data."); isocolon, one verb frame with both arguments swapped ("Open weights let you adapt a model. An open stack lets you adapt the machinery that created it."); the stock closer ("Ai2 argues for a principle. This is what that principle looks like."); unmarked reversal ("No frontier lab had to decide. Thai researchers made that call themselves.") | State the claim once, plainly. The meter now catches the last three (`isocolon-ditransitive`, `this-is-what-looks-like`, `no-x-had-to`); bare subject swap stays a judgment call. **Count them** — one is a device, three in a short piece is the register |
|
|
124
|
+
| Significance scaffolding: a sentence announcing that a point matters instead of delivering it — "Here's the detail that matters:", "This is what that principle looks like when it works." | Delete the announcement and keep the point. Budget: zero |
|
|
116
125
|
| Extended conceit: a process or abstraction dressed as physical drama — billing ("the bill lands on reputation", "gets billed to a reader"), courtroom ("never allowed to convict"), forensics ("rhythm leaves prints"), machinery ("opens the hood"), recipe ("has four ingredients") | At most one metaphor per piece, then plain language; name the actual mechanism |
|
|
117
126
|
| Vibe-slang: "just a vibe", "vibe check", "argue with vibes", "has receipts" | The plain word: impression, judgment, evidence |
|
|
118
127
|
| One-word drama beat: "Fine." dropped between claims as a rhythm device | Cut it or fold it into the sentence it interrupts |
|
|
@@ -125,13 +134,28 @@ same costume seen at detection time instead of rewrite time. The scorer
|
|
|
125
134
|
catches the mechanical subset (`hired-adversary`, `turns-out-payoff`,
|
|
126
135
|
`has-receipts`, `hyperbole-universal`, `argue-with-artifact`,
|
|
127
136
|
`vibe-register`, `where-x-lives`, `billed-conceit`, `on-the-tin`,
|
|
128
|
-
`minding-own-business`, `economics-brutal`, `opens-the-hood`,
|
|
129
|
-
rider-gated "fight against"
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
`minding-own-business`, `economics-brutal`, `opens-the-hood`, the
|
|
138
|
+
rider-gated "fight against", and — since v2.5.10 — three of the four unmarked
|
|
139
|
+
antithesis shapes: `isocolon-ditransitive`, `this-is-what-looks-like`, and
|
|
140
|
+
`no-x-had-to`. Epigram cadence, marked staccato antithesis, bare subject swap,
|
|
141
|
+
most conceits, jargon compression, and tagline register still need the
|
|
142
|
+
performed-register pass, because their literal forms are legitimate in news,
|
|
143
|
+
history, crime, and civic writing.
|
|
144
|
+
|
|
145
|
+
`isocolon-ditransitive` is worth reading closely, because it marks the boundary
|
|
146
|
+
between what a rule can safely reach and what it cannot. It fires only when the
|
|
147
|
+
**same verb** is repeated in a give-you frame across a sentence break. That
|
|
148
|
+
identity requirement is the whole safety property: rhetorical anaphora repeats
|
|
149
|
+
its frame with a *different* verb every time — "we can not dedicate, we can not
|
|
150
|
+
consecrate, we can not hallow" — so the rule cannot touch it. Relaxing the
|
|
151
|
+
backreference from the verb to the frame was tested and fires on the Gettysburg
|
|
152
|
+
Address, the Federalist, and an ESL engineer's email. Do not relax it.
|
|
153
|
+
|
|
154
|
+
The human-flagged spans that motivated the family live in
|
|
133
155
|
`data/corpus/performed-register/` — the mechanical half is regression-tested,
|
|
134
|
-
the judgment half is the
|
|
156
|
+
the judgment half is the performed-register pass's fixture list. Files move
|
|
157
|
+
between the two halves in both directions: `verdict-arithmetic.txt` graduated
|
|
158
|
+
from judgment to mechanical in v2.5.10 when a safe rule finally reached it.
|
|
135
159
|
|
|
136
160
|
## 4. Punctuation & formatting
|
|
137
161
|
|
|
@@ -153,6 +177,7 @@ the judgment half is the read-aloud pass's fixture list.
|
|
|
153
177
|
|---|---|
|
|
154
178
|
| Assistant voice: "Great question!", "I hope this helps", "I'd be happy to" | Delete |
|
|
155
179
|
| Reflexive agreement or praise: approving the premise before checking it, flattering the writer, or refusing to take a supported position | Answer the substance first; agree, qualify, or disagree according to the facts |
|
|
180
|
+
| Recap-flattery: a reply opens by praising and paraphrasing the question before answering it | Start with the answer; keep only context the reader actually needs |
|
|
156
181
|
| Chatbot residue: "Would you like me to…", "Let me know if you'd like…", "my training data" | Delete — it is proof of paste, not style |
|
|
157
182
|
| Knowledge-cutoff residue: "as of my last update", "not widely documented" | Delete; verify the claim |
|
|
158
183
|
| Passive or subjectless wording that hides an actor who matters | Name the actor and use the direct verb; keep passive voice when the actor is unknown, irrelevant, or native to the genre |
|