zero-slop 2.5.8

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.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -0
  3. package/SKILL.md +803 -0
  4. package/data/corpus/community-register/README.md +14 -0
  5. package/data/corpus/community-register/judgment/communicative-drift.txt +1 -0
  6. package/data/corpus/community-register/judgment/reflexive-agreement.txt +1 -0
  7. package/data/corpus/community-register/judgment/rhetorical-scale-mismatch.txt +1 -0
  8. package/data/corpus/must-not-flag/README.md +49 -0
  9. package/data/corpus/must-not-flag/esl-engineer-email.txt +7 -0
  10. package/data/corpus/must-not-flag/exec-memo.txt +9 -0
  11. package/data/corpus/must-not-flag/federalist.txt +5 -0
  12. package/data/corpus/must-not-flag/gettysburg.txt +1 -0
  13. package/data/corpus/must-not-flag/grant-abstract.txt +5 -0
  14. package/data/corpus/must-not-flag/ml-methods.txt +1 -0
  15. package/data/corpus/must-not-flag/personal-essay.txt +1 -0
  16. package/data/corpus/must-not-flag/press-release.txt +7 -0
  17. package/data/corpus/must-not-flag/recipe.txt +11 -0
  18. package/data/corpus/must-not-flag/sre-runbook.txt +1 -0
  19. package/data/corpus/must-not-flag/technical-postmortem.txt +1 -0
  20. package/data/corpus/must-not-flag/terse-engineer-note.txt +1 -0
  21. package/data/corpus/must-not-flag-shape/README.md +22 -0
  22. package/data/corpus/must-not-flag-shape/aphorism-list.txt +9 -0
  23. package/data/corpus/must-not-flag-shape/changelog.txt +13 -0
  24. package/data/corpus/must-not-flag-shape/dialogue.txt +19 -0
  25. package/data/corpus/must-not-flag-shape/lyrics.txt +15 -0
  26. package/data/corpus/must-not-flag-shape/poem.txt +8 -0
  27. package/data/corpus/must-not-flag-shape/sms-transcript.txt +15 -0
  28. package/data/corpus/performed-register/README.md +38 -0
  29. package/data/corpus/performed-register/judgment/detection-fragile.txt +1 -0
  30. package/data/corpus/performed-register/judgment/draft-cheap-signal.txt +1 -0
  31. package/data/corpus/performed-register/judgment/ear-chiasmus.txt +1 -0
  32. package/data/corpus/performed-register/judgment/fight-against-tagline.txt +1 -0
  33. package/data/corpus/performed-register/judgment/fine-beat.txt +1 -0
  34. package/data/corpus/performed-register/judgment/glow-finishing.txt +1 -0
  35. package/data/corpus/performed-register/judgment/jargon-compression.txt +1 -0
  36. package/data/corpus/performed-register/judgment/not-perfect-honest.txt +1 -0
  37. package/data/corpus/performed-register/judgment/punctuation-convict.txt +1 -0
  38. package/data/corpus/performed-register/judgment/recipe-ingredients.txt +1 -0
  39. package/data/corpus/performed-register/judgment/replay-lands.txt +1 -0
  40. package/data/corpus/performed-register/judgment/rhymes-with.txt +1 -0
  41. package/data/corpus/performed-register/judgment/rhythm-prints.txt +1 -0
  42. package/data/corpus/performed-register/judgment/same-leak.txt +1 -0
  43. package/data/corpus/performed-register/judgment/tools-work.txt +1 -0
  44. package/data/corpus/performed-register/judgment/tuning-gradients.txt +1 -0
  45. package/data/corpus/performed-register/judgment/verdict-arithmetic.txt +1 -0
  46. package/data/corpus/performed-register/judgment/whole-product.txt +1 -0
  47. package/data/corpus/performed-register/judgment/words-cheap.txt +1 -0
  48. package/data/corpus/performed-register/mechanical/argue-with-artifact.txt +1 -0
  49. package/data/corpus/performed-register/mechanical/bill-lands.txt +1 -0
  50. package/data/corpus/performed-register/mechanical/billed-to-reader.txt +1 -0
  51. package/data/corpus/performed-register/mechanical/economics-brutal.txt +1 -0
  52. package/data/corpus/performed-register/mechanical/has-receipts.txt +1 -0
  53. package/data/corpus/performed-register/mechanical/hired-adversary.txt +1 -0
  54. package/data/corpus/performed-register/mechanical/hyperbole-universal.txt +1 -0
  55. package/data/corpus/performed-register/mechanical/metaphor-sender-name.txt +1 -0
  56. package/data/corpus/performed-register/mechanical/minding-own-business.txt +1 -0
  57. package/data/corpus/performed-register/mechanical/on-the-tin.txt +1 -0
  58. package/data/corpus/performed-register/mechanical/opens-the-hood.txt +1 -0
  59. package/data/corpus/performed-register/mechanical/turns-out-payoff.txt +1 -0
  60. package/data/corpus/performed-register/mechanical/vibe-check.txt +1 -0
  61. package/data/corpus/performed-register/mechanical/vibe-isnt-a-vibe.txt +1 -0
  62. package/data/corpus/performed-register/mechanical/vibe-number-attached.txt +1 -0
  63. package/data/corpus/performed-register/mechanical/where-slop-lives.txt +1 -0
  64. package/data/learned-log.md +339 -0
  65. package/data/learned.json +128 -0
  66. package/data/patterns.json +2298 -0
  67. package/package.json +54 -0
  68. package/references/copy-desk.md +87 -0
  69. package/references/evidence.md +382 -0
  70. package/references/overcorrection.md +77 -0
  71. package/references/platforms.md +102 -0
  72. package/references/readalong.md +118 -0
  73. package/references/rewrite-moves.md +177 -0
  74. package/references/tells.md +190 -0
  75. package/scripts/calibrate.py +274 -0
  76. package/scripts/learn.py +1588 -0
  77. package/scripts/predictability.py +227 -0
  78. package/scripts/rerank.py +150 -0
  79. package/scripts/safeio.py +146 -0
  80. package/scripts/slopscore.py +1352 -0
  81. package/scripts/version_check.py +104 -0
@@ -0,0 +1,14 @@
1
+ # Community-reported judgment fixtures
2
+
3
+ These short, synthetic passages preserve three high-value traits distilled from
4
+ the reader-reported study in `references/evidence.md`. They are not copied Reddit
5
+ posts and they carry no authorship label.
6
+
7
+ The passages belong to the AI assistant's judgment pass, not the regex meter:
8
+
9
+ - `reflexive-agreement.txt` validates before considering whether the claim is true;
10
+ - `communicative-drift.txt` keeps moving without giving the paragraph a useful job;
11
+ - `rhetorical-scale-mismatch.txt` gives a minor point a grand argumentative frame.
12
+
13
+ The test suite checks that the fixture pack remains present. It does not require a
14
+ numeric score, because these traits depend on purpose and context.
@@ -0,0 +1 @@
1
+ The modern environment continues to change in important ways. These changes create new considerations for people and organizations, making thoughtful approaches increasingly valuable across a range of situations.
@@ -0,0 +1 @@
1
+ You're completely right. Your observation is unusually perceptive, and the way you framed it shows a sophisticated understanding of the issue. Every part of your argument deserves support.
@@ -0,0 +1 @@
1
+ Changing this preference isn't just a small interface choice; it represents a fundamental shift in how people relate to technology. The toggle does more than hide the sidebar. It redefines what control means.
@@ -0,0 +1,49 @@
1
+ # must-not-flag — the false-positive floor
2
+
3
+ Every sample here is writing a human would recognise as human. No pattern in
4
+ `data/patterns.json` or `data/learned.json` may fire on any of them, and
5
+ `calibrate.py --selftest` fails the build if one does. `learn.py` consults the
6
+ same directory before minting anything from the reflect loop, so a pattern
7
+ learned from one writer's edit can never start flagging the writing below.
8
+
9
+ The corpus is the meter's conscience. Adding to it is the single most useful
10
+ contribution to this repo: when you find honest writing the scorer got wrong,
11
+ the fix is not to lower a weight, it is to add the sample here so the mistake
12
+ can never recur.
13
+
14
+ ## What each sample guards against
15
+
16
+ | Sample | The false positive it prevents |
17
+ |---|---|
18
+ | `gettysburg.txt` | Dash-heavy 19th-century oratory. An early build misclassified it at 88.9 on em-dash density alone. |
19
+ | `federalist.txt` | Long periodic sentences and formal abstraction that predate the machines by 240 years. |
20
+ | `ml-methods.txt` | Academic methods prose. Passive voice and nominalisation are correct register here, not tells. |
21
+ | `grant-abstract.txt` | Research proposal register — hypothesis framing and hedged claims that the general ladder would wrongly strip. |
22
+ | `sre-runbook.txt` | Terms of art. "Elevated write volume" is literal; it drove the rider-gating design. |
23
+ | `technical-postmortem.txt` | Structured incident writing, where headers and sequence are the correct form. |
24
+ | `terse-engineer-note.txt` | Very short, low-burstiness writing that has no room to vary rhythm. |
25
+ | `personal-essay.txt` | First-person reflection, which shares surface features with performed candor but is not it. |
26
+ | `exec-memo.txt` | Business register. Formal, declarative, and legitimately using the vocabulary marketing copy abuses. |
27
+ | `press-release.txt` | Human promotional writing. PR is *supposed* to sound like PR; the meter must not treat genre as guilt. |
28
+ | `recipe.txt` | Imperative instructional prose with deliberate second person and short commands. |
29
+ | `esl-engineer-email.txt` | **Non-native English.** Liang et al. found seven commercial detectors misclassified over half of non-native (TOEFL) samples as AI-generated while scoring native samples near-perfectly (arXiv:2304.02819). A tool that inherits that bias penalizes the writers who can least afford it, so this sample is a fairness guard, not just a coverage one. |
30
+
31
+ ## Provenance
32
+
33
+ `gettysburg.txt` and `federalist.txt` are public-domain historical texts,
34
+ excerpted. The rest are authored exemplars written to be representative of
35
+ their genre rather than harvested from real correspondence, which keeps
36
+ personal and proprietary text out of a public repository. They are held to the
37
+ same bar: if any of them ever fires a pattern, the pattern is wrong.
38
+
39
+ ## Adding a sample
40
+
41
+ 1. Drop a `.txt` file here with prose that is unambiguously human.
42
+ 2. Run `python3 scripts/calibrate.py --selftest`. If your sample fails, that is
43
+ a finding — fix the pattern, not the sample.
44
+ 3. Add a row to the table above naming the false positive it prevents. A sample
45
+ with no stated purpose gets deleted in the next cleanup.
46
+
47
+ See `../must-not-flag-shape/` for the parallel corpus that protects
48
+ legitimately fragmented forms (poems, lyrics, changelogs, transcripts) from the
49
+ shape channel.
@@ -0,0 +1,7 @@
1
+ Hi team, I checked the failing job from yesterday night. The root cause is in the retry logic. When the upstream service returns 503, we retry after 2 seconds, but we do not add jitter, so all the workers retry in the same moment and the service goes down again. This is why the incident repeated three times.
2
+
3
+ I propose we add jitter between 0 and 1000 ms. I already tested this on staging with 200 workers and the retry storm did not happen. The patch is small, about 15 lines in worker/retry.go.
4
+
5
+ One more thing. The alert did not fire for the second and third incident, because the alert has a 30 minute cooldown. I think 30 minutes is too long for this service. Maybe 5 minutes is better, but I want to hear your opinion before I change it.
6
+
7
+ I can send the pull request tomorrow morning if nobody disagrees.
@@ -0,0 +1,9 @@
1
+ To the leadership team:
2
+
3
+ We are going to miss the Q3 revenue target. The gap is roughly 8 percent, and it comes almost entirely from the mid-market segment, where our win rate fell from 31 percent to 22 percent after the pricing change in May.
4
+
5
+ I want to be direct about the cause. We raised the entry price without changing what a customer gets at that tier. Sales flagged this in June. We did not act on it, and I own that decision.
6
+
7
+ Three things change now. First, the mid-market tier gets the audit-log feature that enterprise customers already have, effective next release. Second, we are reverting the entry price to the prior level for new logos through the end of the year. Third, deal desk gets authority to approve discounts up to 15 percent without my sign-off, because the current approval chain is costing us deals we should win.
8
+
9
+ I am not asking for a plan to make up the gap this quarter. We will not make it up. I am asking that we do not repeat the pattern where field feedback sits for a month before it reaches this room.
@@ -0,0 +1,5 @@
1
+ It has been frequently remarked, that it seems to have been reserved to the people of this country, by their conduct and example, to decide the important question, whether societies of men are really capable or not, of establishing good government from reflection and choice, or whether they are forever destined to depend, for their political constitutions, on accident and force.
2
+
3
+ If there be any truth in the remark, the crisis at which we are arrived may with propriety be regarded as the era in which that decision is to be made; and a wrong election of the part we shall act, may, in this view, deserve to be considered as the general misfortune of mankind.
4
+
5
+ This idea will add the inducements of philanthropy to those of patriotism, to heighten the solicitude which all considerate and good men must feel for the event.
@@ -0,0 +1 @@
1
+ Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract.
@@ -0,0 +1,5 @@
1
+ This project investigates the mechanisms by which soil microbial communities mediate nitrogen retention in restored tallgrass prairie. Restoration efforts across the upper Midwest have achieved substantial gains in plant species richness, yet nitrogen leaching from restored sites remains elevated relative to remnant prairie for at least two decades following seeding.
2
+
3
+ We hypothesize that the lag reflects incomplete recovery of arbuscular mycorrhizal networks rather than plant community composition per se. To test this, we will establish twelve paired plots across a chronosequence of restoration ages, quantify hyphal length density and community composition by amplicon sequencing, and measure nitrogen flux using resin lysimeters at three depths.
4
+
5
+ The work addresses a gap in restoration ecology, where above-ground metrics dominate assessment despite evidence that below-ground function recovers on a different timescale. Results will inform whether mycorrhizal inoculation at seeding is justified by measurable improvement in nutrient retention.
@@ -0,0 +1 @@
1
+ We train with AdamW at a peak learning rate of 3e-4, cosine decay to 10 percent, and 2000 warmup steps. Gradient clipping at 1.0 was necessary; without it the loss landscape produced spikes around step 40k that never recovered. Batch size is 512 sequences of 2048 tokens, sharded across 64 accelerators with activation checkpointing on every third block. Ablations for the robust variance estimator are in Appendix C.
@@ -0,0 +1 @@
1
+ My grandmother kept her recipes on index cards, in handwriting that got shakier by the year. The last one she wrote me was for her lemon cake, and half the measurements are wrong. Two cups of flour where it should be three. No oven temperature at all. I have made it four times now and it comes out different every time, and I have stopped trying to correct it. The mistakes are the part I would lose.
@@ -0,0 +1,7 @@
1
+ Northfield Manufacturing announced today that it will open a second production facility in Rockford, Illinois, adding an estimated 240 jobs over the next 18 months.
2
+
3
+ The 190,000-square-foot plant will produce hydraulic components for agricultural equipment, a line the company currently makes only at its Waterloo site. Production is scheduled to begin in the third quarter of next year.
4
+
5
+ "Waterloo has been running at capacity since 2024, and we have been turning down orders," said Dale Brennan, the company's chief operating officer. "Rockford gives us room, and it puts us closer to three of our largest customers."
6
+
7
+ The company said it will invest 74 million dollars in the facility. Hiring for supervisory roles begins in January, with production staff to follow in the spring. Northfield employs 1,100 people across four states.
@@ -0,0 +1,11 @@
1
+ Braised short ribs, serves four.
2
+
3
+ Salt three pounds of bone-in short ribs the night before and leave them uncovered in the fridge. This dries the surface, which matters more than any searing technique you will read about.
4
+
5
+ Get a heavy pot very hot with a thin film of neutral oil. Sear the ribs on every side until they are properly brown, not tan. Do this in two batches. Crowding the pot steams the meat and you lose the whole point of the step.
6
+
7
+ Pull the ribs out. Cook one diced onion, two carrots, and two ribs of celery in the fat until the onion goes translucent. Add two tablespoons of tomato paste and let it darken for a minute. Deglaze with a cup of red wine and scrape the bottom hard.
8
+
9
+ Put the ribs back, add stock until they are two-thirds submerged, and get it to a bare simmer. Cover and put it in a 300-degree oven for three hours. They are done when a fork meets no resistance, not at any particular clock time.
10
+
11
+ Chill overnight if you can. The fat lifts off in a sheet and the meat is better the second day.
@@ -0,0 +1 @@
1
+ If the alert fires, check the replica lag dashboard first. Lag above 30 seconds with normal write volume usually means a long-running query is holding a snapshot open; find it with pg_stat_activity ordered by xact_start, and confirm before you kill anything. If lag is climbing with elevated writes, it is capacity, not a stuck query, and the fix is to shed read traffic rather than restart the replica. Restarting during high lag has caused two of our four longest outages.
@@ -0,0 +1 @@
1
+ Serializability is the strongest isolation level, and implementing it without crushing throughput is the hard part. Most databases approximate it with snapshot isolation, which permits write skew. Postgres added true serializable snapshot isolation in 9.1 by tracking read-write dependencies and aborting transactions that would form a dangerous cycle. The cost is retry pressure under contention, which is why we kept the hot path on repeatable read and reserved serializable for the two ledger tables where correctness beats latency.
@@ -0,0 +1 @@
1
+ Rolled back the deploy. The migration added a not-null column without a default on a 40M row table and took an ACCESS EXCLUSIVE lock for eleven minutes. My fault, I reviewed it. We are adding a lint rule for unqualified ALTER TABLE on tables over 1M rows. Timeline and the lock trace are in the incident doc.
@@ -0,0 +1,22 @@
1
+ # Shape regression corpus
2
+
3
+ Genres that are structurally indistinguishable from broetry: every sentence on
4
+ its own line, high fragment counts, no connective tissue. The shape channel
5
+ must stay silent on these, and `calibrate.py --selftest` runs them under
6
+ `--genre social` — the hostile setting, where the channel actually engages.
7
+
8
+ The guards that keep them silent (structural markers, dialogue openings, and
9
+ an eight-paragraph floor) run before the metric, not after.
10
+
11
+ ## Known boundary
12
+
13
+ `lyrics.txt` flags. Song verse and broetry are the same shape, and no
14
+ structural signal separates them; telling them apart needs semantics the
15
+ channel does not have. It is listed as a known boundary rather than suppressed
16
+ with a special case, because a metric that quietly excuses its failures is
17
+ worse than one that names them.
18
+
19
+ This costs little in practice. Shape is reported as its own axis and never
20
+ folded into the heuristic surface score, so a false positive costs the author one
21
+ advisory line rather than a wrong verdict — and lyrics declared as a social
22
+ post is a mis-declared genre to begin with.
@@ -0,0 +1,9 @@
1
+ A designer knows perfection is reached when there is nothing left to take away.
2
+
3
+ Premature optimization is the root of all evil.
4
+
5
+ There are two hard things in computer science.
6
+
7
+ Make it work, make it right, make it fast.
8
+
9
+ Everything should be as simple as possible, but no simpler.
@@ -0,0 +1,13 @@
1
+ ## 4.2.0
2
+
3
+ Added retry logic to the webhook dispatcher.
4
+
5
+ Fixed a race in the session cache that dropped writes under load.
6
+
7
+ Removed the deprecated v1 auth path.
8
+
9
+ ## 4.1.3
10
+
11
+ Patched a memory leak in the parser.
12
+
13
+ Bumped minimum Python to 3.9.
@@ -0,0 +1,19 @@
1
+ "You're late."
2
+
3
+ "The train was held at Clapham."
4
+
5
+ "It's always Clapham."
6
+
7
+ She put the kettle on without asking.
8
+
9
+ "Twenty minutes," he said.
10
+
11
+ "I know how long the train takes."
12
+
13
+ "Then you know I'm not late."
14
+
15
+ The kettle clicked off.
16
+
17
+ "Sit down, Michael."
18
+
19
+ He sat.
@@ -0,0 +1,15 @@
1
+ I have been a rover.
2
+
3
+ I have walked alone.
4
+
5
+ Hiked a hundred highways.
6
+
7
+ Never found a home.
8
+
9
+ Still and all I'm happy.
10
+
11
+ The reason is, you see.
12
+
13
+ Once in a while along the way.
14
+
15
+ Love's been good to me.
@@ -0,0 +1,8 @@
1
+ The fog comes
2
+ on little cat feet.
3
+
4
+ It sits looking
5
+ over harbor and city
6
+ on silent haunches
7
+
8
+ and then moves on.
@@ -0,0 +1,15 @@
1
+ running 10 late
2
+
3
+ no worries
4
+
5
+ parking is a nightmare
6
+
7
+ there's a lot behind the pharmacy
8
+
9
+ found it
10
+
11
+ order you anything?
12
+
13
+ flat white pls
14
+
15
+ on it
@@ -0,0 +1,38 @@
1
+ # performed-register — should-flag corpus
2
+
3
+ Thirty-five spans a human editor flagged as slop on sight while the scorer
4
+ passed every one clean (9.5–10.9, zero pattern hits). All come from
5
+ zero-slop.ai blog drafts written in August 2026 — first-party text, so no
6
+ external registry entry applies. They share one register: **performed-writer
7
+ prose**, an AI imitating a punchy human writer. The taxonomy rows live in
8
+ `references/tells.md` §3; the rewrite-side ban is `references/overcorrection.md`.
9
+
10
+ These are register labels from one human editor, not authorship labels and not
11
+ a benchmark. They exist so calibration and regression runs exercise the misses
12
+ that motivated v2.5.6.
13
+
14
+ ## Layout
15
+
16
+ - `mechanical/` — one span per file, each of which must draw at least one
17
+ pattern hit from `data/patterns.json`. The unit test
18
+ `Detector.test_performed_register_corpus_is_caught` fails if any goes
19
+ silent again, so a pattern cannot be weakened or deleted without noticing.
20
+ - `judgment/` — spans whose literal forms are legitimate in news, history,
21
+ crime, or science writing, so no regex gates them safely: staccato
22
+ antithesis pairs ("Not perfect. Honest."), extended conceits (forensics,
23
+ courtroom, billing, recipe), chiasmus, one-word drama beats ("Fine."),
24
+ jargon compression ("threshold cliff"), and campaign taglines ("the fight
25
+ against slop" — rider-gated, silent without a marketing trigger). The
26
+ judgment pass in SKILL.md's diagnose and read-aloud briefs owns these; a
27
+ regex that would catch them fires on the must-not-flag corpus, which wins
28
+ every conflict.
29
+
30
+ ## Rules
31
+
32
+ 1. `data/corpus/must-not-flag/` outranks this directory. A candidate pattern
33
+ that silences a file here but fires on any must-not-flag sample is
34
+ rejected; move the span to `judgment/` instead.
35
+ 2. Keep spans verbatim as the editor flagged them; they are evidence, not
36
+ templates.
37
+ 3. New performed-register misses get a file here plus a dated line in
38
+ `data/learned-log.md`.
@@ -0,0 +1 @@
1
+ Detection is fragile. Measuring the writing itself is not.
@@ -0,0 +1 @@
1
+ The draft was cheap. The signal it sent was not.
@@ -0,0 +1 @@
1
+ Your ear catches the even pulse your eye forgives.
@@ -0,0 +1 @@
1
+ Posts on the fight against slop.
@@ -0,0 +1 @@
1
+ The scorer calls it clean. Fine. The editor doesn't.
@@ -0,0 +1 @@
1
+ The glow of finishing early.
@@ -0,0 +1 @@
1
+ A stock puffery line fires once and is pinned high forever: the threshold cliff meets the length-blind floor, strict in the ambiguous middle where it matters and forgiving at the clean end where it should be.
@@ -0,0 +1 @@
1
+ Not perfect. Honest.
@@ -0,0 +1 @@
1
+ Punctuation alone is never allowed to convict.
@@ -0,0 +1 @@
1
+ The recipe has four ingredients.
@@ -0,0 +1 @@
1
+ The replay is where it all lands.
@@ -0,0 +1 @@
1
+ The replication run rhymes with it.
@@ -0,0 +1 @@
1
+ Rhythm leaves prints too. The even pulse will reliably catch the author.
@@ -0,0 +1 @@
1
+ We found the same leak at scale.
@@ -0,0 +1 @@
1
+ The tools work. Shipping their first draft is what fails.
@@ -0,0 +1 @@
1
+ Tuning happened against writing, not gradients.
@@ -0,0 +1 @@
1
+ Most AI-writing tools hand you a verdict. The slop score hands you arithmetic.
@@ -0,0 +1 @@
1
+ That 76.3 to 15.4 drop is the whole product.
@@ -0,0 +1 @@
1
+ The machines made words cheap. Attention still isn't. Spend it like it's the reader's money, because it is.
@@ -0,0 +1 @@
1
+ How we built a writing meter you can argue with.
@@ -0,0 +1 @@
1
+ The bill lands on reputation too.
@@ -0,0 +1 @@
1
+ Every minute a writer saves by not thinking gets billed to a reader who has to.
@@ -0,0 +1 @@
1
+ The economics are brutal.
@@ -0,0 +1 @@
1
+ That transfer is the slop tax, and by 2026 it has receipts.
@@ -0,0 +1 @@
1
+ Then we hired an adversary. This August we ran a hostile mathematical review against our own scorer.
@@ -0,0 +1 @@
1
+ Slop is relative, which is why nothing on earth scores a perfect zero.
@@ -0,0 +1 @@
1
+ The other half lands on the sender's name.
@@ -0,0 +1 @@
1
+ "Delve" is suddenly everywhere after decades of minding its own business.
@@ -0,0 +1 @@
1
+ The limits stay printed on the tin.
@@ -0,0 +1 @@
1
+ This post opens the hood.
@@ -0,0 +1 @@
1
+ A cheap draft turns out to carry an expensive signal: it tells the reader precisely how much of your own attention you thought they were worth.
@@ -0,0 +1 @@
1
+ It's a workflow, not a vibe check. You can't argue about AI writing with vibes.
@@ -0,0 +1 @@
1
+ Slop isn't a vibe. It's measurable.
@@ -0,0 +1 @@
1
+ A meter you cannot audit is just a vibe with a number attached.
@@ -0,0 +1 @@
1
+ That gap is where slop lives.