Skip to content

Add six discourse patterns for story shape (#36-41) - #244

Open
zarubinphil wants to merge 3 commits into
blader:mainfrom
zarubinphil:discourse-patterns
Open

Add six discourse patterns for story shape (#36-41)#244
zarubinphil wants to merge 3 commits into
blader:mainfrom
zarubinphil:discourse-patterns

Conversation

@zarubinphil

@zarubinphil zarubinphil commented Aug 24, 2026

Copy link
Copy Markdown

What this adds

A new "Discourse patterns" section (§36-41), with matching README table, version notes, source links, and validator updates.

# Shape tell Human AI
36 Stated theme 52% 77%
37 Portrait introduction 30% 52%
38 Embodied emotion dominant 38% 81%
39 Causal continuity (1-5) 3.92 4.20
40 Time jumps (1-5) 2.40 2.12
41 Direct reader address (ordinal) 0.28 0.07

Patterns 38 and 41 are offered to the writer rather than edited in.

Why this layer matters

Most current patterns work at the sentence or paragraph level. A few already reach document structure (sections 6, 29, 30). None cover narrative shape.

StoryScope (Russell et al., COLM 2026, arXiv:2604.03136) extracted 304 features from 61,608 human and LLM stories. Of the 304 features, 39 sit in the style dimension and 8 more were flagged style-related. The remaining 257 are discourse-level: how the story is shaped and when information is released.

To test whether that layer holds up on its own, the authors ran LAMP span-level rewriting (cliché, purple prose, redundant exposition) over 278 Gemini stories, rewritten by Gemini itself. Their narrative classifier scored 93.9% macro-F1 on the edited stories against 95.5% on the same stories unedited, a drop of 1.6 points. In their words, "editing out clichéd phrasing or purple prose does not alter the structural narrative choices (causal linearity, thematic explicitness, sensory over-description) that drive our classifier."

Narrative features alone reach 93.2% macro-F1, within 2.8 points of the 96.0% combined model. The paper is explicit that style stays the stronger cue; the point is that shape carries near-equivalent signal on its own and survives a style rewrite, so a shape pass catches what a style pass cannot.

Caveats, stated in the section too

  • The study measured short fiction, about 5,000 words per story. Applying the checks to posts, emails, or docs extends the mechanism to formats the paper did not test. The section and the README both say so.
  • Direct reader address scores 0.28 for humans vs. 0.07 for AI on the study's never/occasional/frequent scale.
  • The reason for holding back 38 and 41: they add something (a named feeling, an aside to the reader) instead of removing noise. Embedded mode has nowhere to put a suggestion, so it skips both.
  • SKILL.md grows from 456 to 513 lines, so the validator's cap moves from 500 to 520.

Checks

  • python3 scripts/validate-package.py passes (v2.12.0)
  • npx skills add . --list finds the skill
  • claude plugin validate . passes

The section is self-contained; renumbering it touches two validator lines.

Philipp Zarubin added 3 commits August 24, 2026 17:20
The section had the paper backwards. Style is the stronger raw cue: style
features alone reach 85.8% macro-F1, and the paper's own premise is that
style-based detectors are brittle to light editing. The result worth shipping
is the other one. Narrative features alone reach 93.2% macro-F1, within 2.8
points of the 96.0% combined model, and the narrative classifier still scores
93.9% after a full span-level style rewrite (95.5% before). A style pass alone
does not clear a text, because it leaves the shape layer untouched.

- Sources and section intro now state the measured result
- 38, 39 and 40 carry the real figures instead of categorical absolutes
- 38 drops the claim that AI routes almost every emotion through the body;
  the 81/38 and 8/29 splits measure which mode dominates a story
- 40's After keeps the chemistry detail its Before introduces
- 41's Before no longer contains the reader nod the pattern names
- Embedded mode skips 38 and 41, which have nowhere to put a suggestion
- Frontmatter and README credit both sources
- Validator cap tightened from 550 to 520 lines
The heading said the trait was categorical while the body states a 0.28
shift on a 1-5 scale. 'Chronology without jumps' names what the check
looks for in a text instead of asserting it of every AI draft.
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.

1 participant