Skip to content

feat(prose-redaction): native AI-writing-tell inventory for generated prose - #167

Merged
cdeust merged 2 commits into
mainfrom
feat/prose-redaction-166
Jul 24, 2026
Merged

feat(prose-redaction): native AI-writing-tell inventory for generated prose#167
cdeust merged 2 commits into
mainfrom
feat/prose-redaction-166

Conversation

@cdeust

@cdeust cdeust commented Jul 24, 2026

Copy link
Copy Markdown
Owner

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

  1. 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 -ing tack-on analyses (narrow verb set, near-zero false positives on technical prose). scan_prose() skips fenced code, scans frontmatter (titles are reader-facing). REDACTION_CONVENTIONS is the prompt-time block.
  2. Authoring prompts — all three auto-curator templates (authoring, coverage, re-author) now carry the redaction conventions, so pages avoid the tells at generation time.
  3. wiki_write — advisory redaction_findings summary (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 + format clean.

Done criteria from #166

  • Inventory carries per-pattern sources: done.
  • Conventions in wiki authoring paths: done (all three prompt templates).
  • Write-time measurement: done (redaction_findings).
  • Remaining (follow-up): regenerated before/after anchor page, and the week-of-autonomous-cycle zero-hits observation — both need live wiki cycles, not code.

Closes #166 (code half).

🤖 Generated with Claude Code

cdeust and others added 2 commits July 24, 2026 12:05
… 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>
@cdeust
cdeust merged commit 380665f into main Jul 24, 2026
14 checks passed
@cdeust
cdeust deleted the feat/prose-redaction-166 branch July 24, 2026 10:27
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Native redaction pass for generated prose: wiki authoring, narrative, briefings

1 participant