This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+9 more
Summary
AI summaryAI‑ism reduction improved from 89.1% to 92.0% on the nine‑fixture benchmark.
Full changelog
[0.5.1] — 2026-04-21
Research sync release. Follows the April 2026 update to
docs/research/ (20 categories refreshed, 20 new synthesis files, 14
implementation-trace rows added) and ports the new findings into code,
rules, and documentation. No behavioral break: every previously working
CLI flag, hook, and skill still works identically. AI-ism reduction at
balanced moves from 89.1% to 92.0% on the nine-fixture benchmark.
Added
- Persona-drift reinforcement in
hooks/unslop-mode-tracker.js. A
per-session turn counter at$CLAUDE_CONFIG_DIR/.unslop-turn-count
(symlink-safe, size-capped, whitelist-validated) fires an expanded
drift-check banner at turns 8, 16, 24, 32, then every 16 turns
thereafter. Calibrated against RMTBench (>30% persona degradation at
turns 8–12) and HorizonBench (arXiv 2604.17283, Apr 2026).
hooks/unslop-activate.jsresets the counter on session start, and
"stop unslop" also clears it. Three new integration tests in
tests/test_hooks.pylock the turn-8 banner, the session-start reset,
and the stop-phrase reset. - AI-ism vocabulary expansion in
unslop/scripts/humanize.py
STOCK_VOCABandunslop/scripts/validate.pyAI_ISMS:meticulous(ly),
bustling,paradigm shift,game-changer/changing,
revolutionize(s/d/ing),transformative,unprecedentedin
connective-adjective contexts,a myriad of/myriad,
a plethora of,uncharted territory/waters/ground/area/domain,
nuancedas connective filler,synergy/synergies/synergize(s/d/ing).
Each has a corresponding validator pattern so a rewrite cannot silently
reintroduce them. Six new tests cover the rewrites, including the
factual-context guard forunprecedented(e.g. "unprecedented drought"
survives; "unprecedented opportunity" does not). - LLM-as-judge bias mitigations in
evals/perceived_humanness.py.
--judgesaccepts a comma-separated multi-model jury (Claude + OpenAI)
to counter self-enhancement bias;--counterbalance(default on)
runs each fixture in both A/B orientations to average out position bias
(~40% position inconsistency baseline per arXiv 2411.15594);
length_delta_charsis tracked and reported to surface verbosity
inflation (~15% per arXiv 2410.02736); per-judge win rates are broken
out in the summary. Four new tests cover counterbalancing, multi-judge
juries, all-judges-unavailable, and bias-note reporting. - Detector-feedback ladder exhaustion recommendation in
unslop/scripts/detector.py. When the escalation ladder (balanced →
full → full+structural+soul) can't reach the target AI probability,
reason_stoppednow prints a structured cross-model-paraphrase
recommendation, names TempParaphraser (EMNLP 2025) and Adversarial
Paraphrasing (NeurIPS 2025) as the research basis, and explicitly warns
against watermark removal (EU AI Act Article 50). - Style-memory security hardening in
unslop/scripts/style_memory.py.
File-size cap at 64 KB on load (StyleProfile JSON is ~1 KB; anything
larger is either corrupt or adversarial). Expanded module docstring
documents the OWASP Top 10 for Agentic Applications 2026 memory-risk
class (InjecMEM, memory control flow, semantic drift), and cites MIT /
Penn State CHI 2026 for the sycophancy × memory link that drives the
design constraint of persisting only numerically measured signals (no
free-text preferences). - Commercial humanizer tool coverage in README's detector section:
names Ryter Pro, Walter Writes AI, and GPTHuman.ai alongside the
existing list; cites Turnitin's August 2025 anti-humanizer update and
Chicago Booth 2026's audit of twelve services (median ~6-point drop
vs. claimed 40+). README also positions Anthropic Custom Styles (Nov
2025) and OpenAI's style-steering as the real first-party comparison,
and references Antislop (ICLR 2026) as the learned per-pattern framework
this repo implements. - SKILL anti-detector step 7: "re-anchor after long contexts". Cites
RMTBench and HorizonBench directly and lists the re-anchor checklist
so agents that miss the hook output still self-correct. - IMPLEMENTATION_TRACE.md rows for every change above, each linking
the research file, the code location, and (where applicable) the tests. - Benchmark baseline
benchmarks/results/baselines/post-v050-vocab-expansion-20260421.json
pinned at 92.0% reduction.
Fixed
- Type-check failures in
unslop/scripts/structural.py(_SplitCandidate
now usescollections.abc.Callableinstead of a string literal) and
unslop/scripts/detector.py(explicitstr()cast ontokenizer.decode()
results to satisfy mypy's inferredstr | list[str]union). - Lint failures (ruff) across
unslop/scriptsandbenchmarksfrom
earlier mixed-ordering imports and redundant__future__annotations.
ruff check unslop/scripts benchmarksandmypy --config-file unslop/pyproject.toml unslop/scriptsboth clean.
Changed
evals/perceived_humanness.py--judge-modelis deprecated in favor
of--judges. Backward compatibility is retained for the duration of
the 0.5.x line; a deprecation warning points to the new flag.tests/unslop/test_perceived_humanness.pymigrated to the new API;
tests that assert exact vote counts now passcounterbalance=False
to keep the prior one-vote-per-fixture accounting.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About unslop
CLI that strips AI writing patterns (sycophantic openers, filler phrases, em-dash overuse)
Related context
Beta — feedback welcome: [email protected]