feat(prose-redaction): native AI-writing-tell inventory for generated prose - #167
Merged
Conversation
… prose (#166) - core/prose_redaction.py: mechanical inventory (em dash, banned vocabulary, weasel attribution, -ing tack-ons) with per-pattern sources (Wikipedia Signs of AI writing; house rules); scan_prose() skips code fences, scans frontmatter; summarize_findings() advisory shape. REDACTION_CONVENTIONS block for authoring prompts. - auto_curator: all three wiki authoring prompts (authoring, coverage, re-author) carry the redaction conventions at generation time. - wiki_write: advisory redaction_findings report on written pages, never blocking; omitted when clean. - 13 tests incl. the false-positive guard (plain participle clauses stay silent) and the prompts-carry-conventions integration check. The eval also caught an em dash inside the conventions block itself, which is the gate working as intended. Independent implementation of the mechanism shipped on the agent surface in zetetic-team-subagents v2.32.x, per issue #166 non-goals (no cross-repo dependency). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Expands the initial 4 classes to the complete mechanically-safe set from the sources (Wikipedia Signs of AI writing sections; no-ai-slop and humanizer pattern names, cited per class): binary contrasts, negative listing, throat-clearing, faux insight, importance puffery, promotional language, fake-strong verbs (copula avoidance), AI conversation artifacts (knowledge cutoff, 'I hope this helps', sycophancy), signposting/recap, rhetorical setups and stock colon reveals, dramatic fragmentation, filler split from weasel. REDACTION_CONVENTIONS extended with the judgment-level rules (synonym cycling, rule of three, colon reveals) for prompt-time avoidance. 27 tests: every class + an FP-guard corpus asserting ordinary technical prose that brushes against pattern shapes stays silent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
cdeust
added a commit
to cdeust/zetetic-team-subagents
that referenced
this pull request
Jul 24, 2026
Mirrors the Cortex-side expansion (cdeust/Cortex#167): CONTRAST, SETUP, and PUFFERY check groups over reader-facing copy, each mapped to redaction.md sections. Suite 9 -> 13 cases incl. FP guard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pull Bot
pushed a commit
to asleekgeek/Cortex
that referenced
this pull request
Jul 24, 2026
pyproject, package.json, manifest.json, plugin.json, server.json (mcpb identifier -> v4.16.0, sha placeholder pinned post-release per convention), marketplace metadata + hypermnesia-mcp entry (deprecated cortex shim stays 4.15.0). CHANGELOG records the prose-redaction feature (cdeust#166/cdeust#167). Pre-tag benchmark results land in a follow-up commit on this branch when benchmarks/reproduce.sh --no-ablation completes (running). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements #166 — the redaction mechanism as a native Cortex capability, no cross-repo dependency (the agent-surface implementation lives independently in zetetic-team-subagents).
What
mcp_server/core/prose_redaction.py(pure core, stdlib-only) — the mechanical inventory with per-pattern# source:annotations (Wikipedia "Signs of AI writing" / WikiProject AI Cleanup; house rules): em dashes (zero-tolerance policy for generated copy), banned vocabulary, weasel attribution (escalated to a violation by the project's own zetetic standard), and trailing-ingtack-on analyses (narrow verb set, near-zero false positives on technical prose).scan_prose()skips fenced code, scans frontmatter (titles are reader-facing).REDACTION_CONVENTIONSis the prompt-time block.wiki_write— advisoryredaction_findingssummary (count, by-category, first 10 with line + excerpt) on every written page; never blocks; omitted when clean. Generated prose gets measured at the exact point it becomes durable.Tests
13 new tests: every pattern class, the false-positive guard (ordinary participle clauses stay silent), fence/frontmatter behavior, summary shape, and an integration check that all three prompts carry the conventions. One meta-result worth recording: the eval initially failed because the conventions block itself contained an em dash — caught by its own test.
Affected suites green locally: prose_redaction 13/13, wiki_write 16/16, auto_curator/curate_wiki 9/9.
ruff check+formatclean.Done criteria from #166
redaction_findings).Closes #166 (code half).
🤖 Generated with Claude Code