Skip to content

Latest commit

 

History

History
592 lines (383 loc) · 47.8 KB

File metadata and controls

592 lines (383 loc) · 47.8 KB
description Interactive chapter workshop. Finds mechanical issues, structural break opportunities, trust violations, architecture problems, resonance gaps, dialogue tells, and insertion points where only the author can write. Presents them one at a time. The author decides.

The Workshop

Point it at a chapter. It finds what needs fixing - a misspelled compound, a paragraph that needs a break, a sentence that tells after showing, a B-plus line that could be A-plus. It presents each one with a diagnosis, a gap assessment, and a shape sentence. You decide what changes. Every change is yours.

Seven groups: mechanical, structural, trust, architecture, resonance, dialogue, vitality. Thirty-five patterns total. Seven preservation rules that protect formal devices AI editors habitually damage. Five serial analysis passes - each a sub-agent with its own pattern scope - merged into one flags file. One interactive session for flags, one for vitality insertions, ordered by line number, top to bottom through the chapter.

The Workshop

flowchart LR
    S0["0 discover"] --> S1["1 analyze"]
    S1 --> flags["flags file"]
    flags --> S2["2 session"]
    S2 --> S3["3 vitality"]
    S3 --> S4["4 change log"]
    S4 --> apply["apply"]
    S2 -.->|"lookahead"| S1
Loading

Invocation

"Workshop chapter N."
"Workshop chapter N of [book]."
"Workshop chapter N at [path]."
"Workshop chapters 5-12."
"Workshop all."
"Workshop analyze N."
"Workshop analyze all."
"Workshop resume."

Step 0: Discovery

Spawn a read-only sub-agent to inventory the book directory. The sub-agent MUST use the same model as the main context. NEVER delegate to a lighter or faster model. The main context NEVER sees raw file listings or search output. The sub-agent returns only a structured summary.

Flag File Scan

  • RULE: WHEN STEP 0 RUNS - scan the book directory for existing workshop-flags-{stem}.tmp.md files before doing anything else.
  • RULE: WHEN FLAG FILES EXIST AND SESSION INVOCATION - report which chapters have pre-computed flags, which have partial session state (some flags resolved), and which have no flags. Ask: resume, re-analyze, or skip?
  • RULE: WHEN FLAG FILES EXIST AND RESUME INVOCATION - load the flag files directly, skip analysis, begin session from the first unresolved flag.
  • RULE: WHEN ANALYZE INVOCATION - run analysis sub-agents, write flag files, report count per chapter, stop. No session.
  • RULE: WHEN ANALYZE ALL OR ANALYZE RANGE - run analysis sub-agents in sequence (one at a time), writing each flag file as it completes. Report progress per chapter.
  • NEVER overwrite a flag file that contains partial session state (resolved/skipped/kept flags) unless the author explicitly says re-analyze.

What to Find

  • RULE: WHEN LOOKING FOR CHAPTERS - look for a chapters/ folder first. Inside it, confirm a numbered pattern (ch-01.md, ch-02.md, chapter-1.md, or similar) with at least three files matching. Individual chapter files are always preferred over a single manuscript. If no chapters/ folder exists, fall back to manuscript.md or similar.
  • RULE: WHEN LOOKING FOR BIBLE - look for story-bible.md. If not found, look for any file with "bible" in its name.
  • RULE: WHEN LOOKING FOR PEN - if a story bible exists, read its Pen files: metadata field. Resolve bare filenames against tools/novelist/pen/ first, then the book directory. Resolve paths with separators against the book directory.
  • RULE: WHEN LOOKING FOR PER-BOOK RULES - look for pen-*.md files in the book directory that are NOT shared pen files.
  • RULE: WHEN LOOKING FOR REFERENCE - look for a reference/ folder or notes.md. Report existence only. NEVER read contents.

What to Ignore

NEVER read or inventory: draft/, temp/, tmp/, orig/, bak/, *.bak.*, *.tmp.*.

Exception: workshop-flags-*.tmp.md and workshop-*.tmp.md files are this tool's own temp files. Do not ignore them.

  • RULE: WHEN ORPHANED PASS FILES EXIST scan for workshop-memo-*.tmp.md, workshop-surface-*.tmp.md, workshop-trust-*.tmp.md, workshop-resonance-*.tmp.md, workshop-vitality-*.tmp.md without a corresponding workshop-flags-*.tmp.md. Delete any found. They indicate an interrupted analysis.

Sub-Agent Returns

  • Chapter file path(s), or NOT FOUND
  • All chapter file paths when range or "all" is invoked
  • Existing flag file paths with status (fresh / partial / none) per chapter
  • Story bible path, or NOT FOUND
  • Pen file paths, or NONE
  • Per-book rules path, or NONE
  • Reference material exists: yes / no

RULE: WHEN CHAPTER NOT FOUND - stop and tell the author. NEVER guess.

RULE: WHEN BIBLE NOT FOUND - proceed without it. The voice memo MUST note that no bible was available.

RULE: WHEN PEN NOT FOUND - proceed without it. The voice memo MUST note that no pen file was available.

Temp File Naming

{stem} is the chapter filename without extension. Example: chapter ch-05.md uses stem ch-05.

Final flags file (persists until session completes):

  • workshop-flags-{stem}.tmp.md

Intermediate pass files (deleted after merge):

  • workshop-memo-{stem}.tmp.md
  • workshop-surface-{stem}.tmp.md
  • workshop-trust-{stem}.tmp.md
  • workshop-resonance-{stem}.tmp.md
  • workshop-vitality-{stem}.tmp.md

NEVER preserve pass files after merge. If pass files exist without a corresponding flags file, the analysis was interrupted.


Step 1: Analysis

The main context NEVER reads the chapter prose. The main context orchestrates passes, reads pass files, and merges. Nothing else.

Analysis runs as a five-pass serial pipeline. Each pass is a sub-agent. NEVER run two passes at the same time. NEVER run any pass in the main context.

flowchart LR
    P0["Pass 0: Memo"] --> PA["Pass A: Surface"]
    PA --> PB["Pass B: Trust"]
    PB --> PC["Pass C: Resonance"]
    PC --> PD["Pass D: Vitality"]
    PD --> merge["Merge"]
Loading
  • RULE: WHEN RUNNING ANALYSIS spawn five sub-agents in sequence: Pass 0, then Pass A, then Pass B, then Pass C, then Pass D. Each sub-agent completes and writes its file before the next is spawned. NEVER run passes concurrently. NEVER overlap.
  • RULE: WHEN SPAWNING A PASS the sub-agent MUST use the same model as the main context. NEVER delegate to a lighter or faster model.
  • NEVER run two analysis sub-agents at the same time. One pass. One sub-agent. One file. Then the next.

Inputs

Assemble inputs from Step 0 paths. Omit any input not found. Each pass receives whatever is available.

  1. Register baseline and POV-specific register from book metadata
  2. Pen file
  3. Per-book rules if present
  4. This chapter's bible entry - summary and log
  5. Character registry entries for characters in this chapter's log

Sub-Agent Directive

Every pass sub-agent receives this directive:

If at any point you must deviate from the standing instructions - flagging a passage without citing a specific pattern, skipping the preservation-rule check, omitting a mandatory field, or emitting a flag that cannot cite a binary test - emit a deviation note: what you did, why, and rate its significance low, medium, or high.

Pass 0: Voice Memo

Reads the chapter prose and all available inputs. Writes ONLY the voice memo. No flags. No pattern checks. Output: workshop-memo-{stem}.tmp.md.

One paragraph describing how the chapter's prose sounds - register, vocabulary, physical-sensory commitments, avoidances, deliberate patterns. NEVER summarize what happens. Describe how it reads.

MUST also describe the chapter's formal devices: polysyndeton patterns (where "and...and...and" chains appear and what they enact), tense system (where past continuous and past perfect carry temporal information), named-noun repetition (where nouns repeat for rhetorical weight), specificity patterns (where detail does character work). This information is needed for preservation-rule evaluation in all subsequent passes.

RULE: WHEN WRITING THE VOICE MEMO - ALWAYS classify the chapter's dominant mode as exactly one of:

  • somatic - body-in-space, physical action, sensation
  • material - objects, environment, accumulated detail
  • cognitive - interiority, reasoning, reflection
  • dialogic - conversation-driven, multiple voices

After the formal-devices paragraph, before the closing sentence. One line: Dominant mode: <mode>. NEVER omit dominant mode.

The voice memo is the main context's sole source of register and formal-device understanding. It MUST be rich enough to evaluate proposals without reading the chapter.

  • RULE: WHEN PASS 0 COMPLETES read the memo file. Feed it as input to Pass A. NEVER spawn Pass A before the memo file exists.

Pass A: Surface

Scans for Mechanical (4 patterns), Structural (3 patterns), and Dialogue (2 patterns) only. Receives voice memo + chapter prose + all available inputs. Output: workshop-surface-{stem}.tmp.md.

  • RULE: WHEN PASS A COMPLETES feed the memo to Pass B. NEVER spawn Pass B before the surface file exists.

Pass B: Trust + Architecture

Scans for Trust (7 patterns) and Architecture (4 patterns) only. Receives voice memo + chapter prose + all available inputs. Applies the evaluation filter to its Trust flags. Output: workshop-trust-{stem}.tmp.md.

  • RULE: WHEN PASS B COMPLETES feed the memo to Pass C. NEVER spawn Pass C before the trust file exists.

Pass C: Resonance

Scans for Resonance (11 patterns) only. Receives voice memo + chapter prose + all available inputs. Applies the evaluation filter to its Resonance flags. Output: workshop-resonance-{stem}.tmp.md.

  • RULE: WHEN PASS C COMPLETES feed the memo to Pass D. NEVER spawn Pass D before the resonance file exists.

Pass D: Vitality

Scans for Vitality (7 patterns) only. Receives voice memo + chapter prose + all available inputs. Computes the budget. Output: workshop-vitality-{stem}.tmp.md.

RULE: WHEN A VITALITY POINT IS WITHIN THREE LINES OF A FLAG IN ANY PRIOR PASS FILE - tag the vitality point with [adjacent: #N] where N is the flag number from that pass file. During Step 3, if the adjacent flag was RESOLVED with a CUT or REWRITE, the session MUST warn: "Flag #N changed nearby text. Context may have shifted." The author decides.

  • RULE: WHEN PASS D COMPLETES the main context reads all five files and runs the merge. NEVER delegate the merge to a sub-agent.

Preservation Rules

ALWAYS check preservation rules before emitting any flag. If a passage is protected, it is NEVER flagged.

Each rule names the AI editing habit it blocks and provides a binary test.

  • RULE: WHEN POLYSYNDETON - AI editors break "and...and...and" chains into separate sentences, treating them as run-ons. Test: does the chain contain three or more coordinating conjunctions linking clauses that build on each other (each clause depends on or extends the previous)? If building: protected. If merely listing independent items: not protected.

  • RULE: WHEN TENSE CARRIES INFORMATION - AI editors simplify past continuous and past perfect to simple past. Test: would changing the tense change the temporal relationship between events, lose the distinction between foreground and background, or collapse a retrospective reconstruction into real-time narration? If yes: protected. NEVER flag a tense as simplifiable.

  • RULE: WHEN NOUN IS REPEATED FOR WEIGHT - AI editors replace repeated nouns with pronouns. Test: would a pronoun dissolve irony, break a rhetorical pattern (incantation, accumulation), or hide a structural relationship (circularity, self-reference)? If yes: protected. NEVER flag as echo.

  • RULE: WHEN DETAIL REVEALS PERCEIVER - AI editors trim detail they deem redundant. Test: does the detail tell you something about the perceiver's attention, knowledge, or relationship to the thing described that would be lost without it? If yes: protected. NEVER flag as trimmable.

  • RULE: WHEN LENGTH IS THE MEANING - AI editors break long sentences into shorter ones. Test: is the sentence's duration part of its effect - does the content concern accumulation, refusal to pause, continuous motion, or a thought arriving all at once? If yes: protected.

  • RULE: WHEN ONE SENTENCE MUST STAY ONE - AI editors split compound sentences at coordinating conjunctions. Test: does a later clause in the sentence interrupt, redirect, or complete an earlier clause, such that a period between them would break the interruption or completion? If yes: protected. NEVER break.

  • RULE: WHEN METHOD IS DELIBERATE - deliberate flatness, length, or cataloging that serves the chapter's method. Test: does the pen file or register baseline describe the flagged quality as part of the chapter's method? If yes: protected. If no pen file: the voice memo serves as the reference.

Patterns

Scan for exactly these thirty-five patterns across seven groups. Each check is binary: violation or not. Checks that pass are not reported.

Before applying patterns, scan the chapter for passages that carry irreplaceable load:

  • Sole carrier - the only instance of a specific physical detail, named object, or sensory element in the chapter.
  • Juxtaposition half - one side of a paired contrast where both halves are rendered at comparable resolution. Cutting one half collapses the pair into a statement.

If a pattern fires on a sole-carrier or juxtaposition-half passage, the finding carries a bracketed tag - [sole-carrier] or [juxtaposition-half] - after the type label. The tag is informational; the author makes the final call.

Mechanical

  • RULE: COMPOUND WORD - a hyphenated compound that standard usage writes closed. Test: does a dictionary or style guide list the word as one word? If yes: flag.
  • RULE: AWKWARD SYNTAX - syntax that genuinely tangles such that a reader trips. Test: does the construction require re-reading to parse? If yes: flag. NEVER flag intentional complexity (polysyndeton, long accretive clauses, periodic sentences).
  • RULE: ACCIDENTAL ECHO - the same noun appears twice in a clause where it reads as a typo, not a device. Test: does the second occurrence serve a different grammatical role or rhetorical purpose than the first? If no: flag. If the repetition is protected by NAMED NOUN preservation: do not flag.
  • RULE: HOUSE STYLE - mechanical style-guide violations (em dashes where house style requires en dashes or spaced hyphens, etc.). Test: does the usage violate a stated house-style rule? If yes: flag.

Structural

  • RULE: MODE SHIFT - a paragraph that switches from one mode to another (description to action, surface to revelation, establishing shot to close-up) at an identifiable point, where a paragraph break would create pacing relief. Test: can you identify a sentence where the paragraph's mode changes? Does the paragraph run more than eight sentences with both modes present? If yes to both: flag with the proposed break point.
  • RULE: REVEAL TOP - a reveal or turn that currently sits mid-paragraph and would land harder as the first sentence of a new paragraph. Test: does the sentence introduce new information that reframes what came before? Is it currently buried after three or more sentences of different content? If yes to both: flag.
  • RULE: ISOLATION - a single sentence at the end of a chapter or section that would gain weight from standing alone as its own paragraph. Test: does the sentence shift register, mode, or direction from the paragraph it currently belongs to? Would isolation create emphasis the current placement denies? If yes to both: flag.

Trust

  • RULE: SHOW-THEN-TELL - a concrete scene demonstrates a fact, feeling, or dynamic. A subsequent sentence restates that fact in abstract terms. The restating sentence is the tell. Test: cover the suspect sentence with your hand. Does the scene still land? If yes: the sentence is fat. Recommend: CUT.
  • RULE: DECLARATIVE FRAME - a sentence explains what an action or scene will mean before the action or scene occurs. Test: does the sentence contain a claim about significance, meaning, or purpose, and does a scene within the next three paragraphs demonstrate that same claim? If yes: the sentence is a frame. Recommend: CUT.
  • RULE: EXPLICIT BRIDGE - a simile or comparison whose vehicle is a pattern already established three or more times in the chapter through repetition, juxtaposition, or parallel construction. Test: count prior occurrences of the vehicle's referent. Three or more means the connection is already built. Recommend: CUT.
  • RULE: RECURSIVE RESTATEMENT - a sentence states an insight. The next sentence restates it with the key word repeated or a synonym substituted. Test: do adjacent sentences share a content word or its synonym while making the same claim? If yes: the second is restatement. Recommend: CUT.
  • RULE: REDUNDANT INTERIORITY - a character's internal state is narrated after the prose already showed it through action, object, or dialogue within the preceding two paragraphs. Test: remove the interiority sentence. Is the character's state still legible from the surrounding action? If yes: the interiority is redundant. Recommend: CUT.
  • RULE: OVER-ATTRIBUTION - the narrator explains why a character performed an action when the action's motive is already visible from context, dialogue, or established character behavior in this chapter. Test: does the sentence contain "because," "since," "in order to," "so that," or a purpose clause following a character action? If the preceding scene already supplied the reason: the attribution is redundant. Recommend: CUT.
  • RULE: EDITORIAL INTRUSION - the narrator leaves the POV character's sensory or experiential frame to make a general claim about systems, institutions, human nature, or the world. Test: could the sentence appear in an essay without modification? If yes: it is editorial. Recommend: CUT.

Architecture

  • RULE: TRIPLE RENDERING - the same thesis or argument appears in three or more locations across different modes (narration, dialogue, interiority, exposition). Test: state the thesis in one sentence. Search the chapter for every passage that makes this claim. Count the locations. Three or more: flag the weakest rendering. Recommend: CUT.
  • RULE: ATMOSPHERIC INVENTORY - a paragraph or block of sensory detail where the POV character is not acting in, moving through, or perceiving-in-response-to the described space during that paragraph. Test: is the POV character's body doing something in this space during this paragraph - walking, looking, reaching, reacting? If the character is stationary and the paragraph is pure description: it is inventory. Recommend: CUT or REDISTRIBUTE.
  • RULE: FRONT-LOADED ESTABLISHMENT - three or more consecutive paragraphs at the start of a chapter or scene in which the POV character does not perform a volitional action, speak, or move through the space. Static perception does not count as action. Test: count consecutive opening paragraphs where the character's only role is static presence or passive intake. Three or more: flag. Recommend: REDISTRIBUTE.
  • RULE: UNIFORM ALTITUDE - sentence-length variance falls below 20% of mean sentence length for five or more consecutive paragraphs. Test: measure the variance. Below threshold: flag with location and the measured variance. Detection only - the fix requires authorial judgment.

Resonance

  • RULE: EXPLAINED IMAGE - a concrete image followed by a clause restating what the image already conveyed. Test: does the clause add information the image did not contain? If no: the clause is restatement. Flag the restating clause.
  • RULE: UNPACKED COMPRESSION - a compressed phrase that works on its own, followed by a clause translating it back into narrative logic. Test: does the compressed phrase convey its meaning without the translating clause? If yes: flag the translating clause.
  • RULE: AUTHORIAL COMMENTARY - the narrator naming a building's attitude, a room's mood, or a system's indifference instead of letting the scene demonstrate it. Test: is the narrator attributing an emotional or attitudinal quality to a non-sentient thing in abstract terms? If yes: flag the naming.
  • RULE: EXHAUSTIVE INVENTORY - a catalog sentence listing every object when selectivity would hit harder. Test: does the sentence list four or more items where removing one or two would sharpen the effect? If yes: flag.
  • RULE: PARENTHETICAL EXPLANATION - an insight interrupted by a clause explaining how the insight feels or what kind of understanding it is. Test: does the interrupting clause describe the cognitive experience of having the insight rather than extending the insight itself? If yes: flag.
  • RULE: REGISTER BREAK - a word from a different vocabulary (Latinate, technical, poetic) landing in a passage whose register is plain. Test: does the word's register differ from the surrounding five sentences? If yes: flag.
  • RULE: THESIS AS ADJECTIVE - the novel's thematic argument stated as a descriptor when the prose has already built the argument through objects and surfaces. Test: does the adjective name a theme that the preceding scene already demonstrates through concrete detail? If yes: flag.
  • RULE: CAMERA PULLBACK - close-third-person narration breaking to describe the POV character from outside at a moment when the reader should be inside the character's body. Test: does the sentence describe the POV character's appearance or posture from an external vantage that the character could not perceive? If yes: flag.
  • RULE: SUMMARY VERBS AT CLOSURE - a chapter or passage ending on verbs that narrate what the reader just watched instead of ending on an image. Test: do the final one to three sentences summarize action the preceding paragraphs already rendered? If yes: flag.
  • RULE: REACHING FOR POETRY - a phrase straining toward a poetic register the surrounding passage hasn't earned. Test: does the phrase use elevated diction, meter, or figurative density that exceeds the surrounding prose by two or more registers? If yes: flag.

Dialogue

  • RULE: ESSAYISTIC SPEECH - dialogue that contains a complete argument structure: claim, supporting evidence or reasoning, and conclusion, delivered in sequence without interruption. Test: does the speech contain all three elements (claim, evidence, conclusion) in order? If yes: flag. Recommend: REWRITE using at least two of: (a) remove one premise, (b) break with interruption or action beat, (c) compress the middle, (d) end on a question or trail off.
  • RULE: UNIFORM VOICE - two or more characters whose dialogue is interchangeable. Test: swap the attribution tags on two lines of dialogue. If neither line sounds wrong in the other character's mouth: flag with the characters involved and one sample line from each.

Vitality

Vitality patterns identify structural POSITIONS where a human-written sentence would break the prose band. They flag locations, not problems. The author writes the sentence. The workshop attacks it. NEVER suggest what to write. NEVER generate a shape sentence for a vitality flag.

  • RULE: FLAT BAND - five or more consecutive paragraphs where ALL THREE of the following hold: (1) sentence-length variance below 20% of mean, (2) no content word appears that is absent from the chapter's fifty most frequent content words, (3) no simile or metaphor crosses semantic domains. All three met = flag the midpoint paragraph. Test is mechanical. Count, measure, classify domains.

  • RULE: NEGATION DENSITY - more than one did not / had not / could not + verb construction per 300 words across a passage of 600+ words. Flag the center of the densest cluster. Test is mechanical. Count constructions, compute density, locate peak.

  • RULE: SAFE SIMILE ONLY - every simile and metaphor in the chapter uses a vehicle from the same semantic domain as its tenor. Tech-to-tech, domestic-to-domestic, body-to-body. If ALL similes are same-domain: flag the simile at the highest-leverage structural position (chapter close, character entrance, or reveal adjacency, in that priority order). If any simile already crosses domains: pattern does not fire.

  • RULE: OBSERVATION CEILING - six or more consecutive paragraphs of character POV containing ONLY perception verbs (sees, hears, watches, notices, registers, looks, felt, heard) with no thought that is not a sensory report. Flag the midpoint. Test: classify each interiority sentence as perception-report or non-perception. Six consecutive perception-only paragraphs = fires.

  • RULE: DIALOGUE COMPOSURE - all dialogue lines in a scene are syntactically complete sentences with no fragments, no interruptions, no false starts, no trailing off, and consistent clause structure across speakers. Flag the longest unbroken dialogue exchange in the scene. Test: scan each dialogue line for fragments (no verb), interruptions (dash-terminated), trailing off (ellipsis-terminated), false starts (self-correction mid-sentence). Zero instances across all speakers = fires.

  • RULE: CLOSING LINE - if the chapter's final sentence does not cross registers, domains, or expectations relative to the preceding three sentences, flag it. Test: does the final sentence use vocabulary, syntax, or domain material absent from the three sentences before it? If no: flag.

  • RULE: CHARACTER ENTRANCE - the first sentence or paragraph where a major character appears in this chapter. If the introduction is purely descriptive and contains no detail that could ONLY apply to this specific character in this specific story, flag it. Test: could the description apply to a different character without changing a word? If yes: flag.

Budget Calculation

RULE: BUDGET CALCULATION - the sub-agent computes the budget and writes it into the flags file header, on the line after the voice memo.

base = round(word_count / 750)
base = max(base, 2)
if dominant_mode in (cognitive, dialogic):
    base += 1
budget = base

Format in flags file: Budget: N vitality insertions required (M word chapter, dominant mode: <mode>)

The budget is a FLOOR. The author can fill more points than the budget requires. The author CANNOT close the session with fewer than budget filled unless they say budget override.

Evaluation Filter

RULE: WHEN A TRUST OR RESONANCE PATTERN FIRES - apply three checks before emitting the flag. If ALL THREE pass, suppress the flag.

  • RULE: BODY TEST - does the flagged sentence land in the body (physical action, sensation, spatial experience) or in the intellect (naming, explaining, abstracting)? Body-landing: passes.
  • RULE: COMPRESSION TEST - does the sentence compress or expand what's already rendered? Compression: passes. Expansion: fails.
  • RULE: REGISTER TEST - does the sentence stay in the chapter's register per the voice memo? In-register: passes.

All three MUST pass to suppress. Any single failure emits the flag.

RULE: WHEN FILTERING - applies ONLY to Trust and Resonance groups. Mechanical, Structural, Architecture, Dialogue, and Vitality flags bypass the filter.

RULE: WHEN SUPPRESSED - write a suppression note in the flags file after the last flag: Suppressed: [pattern] at line N - body-landing, compressed, in-register. NEVER present suppression notes during the session.

Deduplication

ONE flag per passage. When two patterns fire on the same passage, the narrower scope wins. Deduplication applies both within a single pass and across passes at merge time.

  • RULE: WHEN EXPLAINED IMAGE AND SHOW-THEN-TELL OVERLAP - EXPLAINED IMAGE fires on clause-level restatement adjacent to an image. SHOW-THEN-TELL fires on sentence-level restatement following a multi-sentence scene. Clause-level wins.
  • RULE: WHEN AUTHORIAL COMMENTARY AND EDITORIAL INTRUSION OVERLAP - AUTHORIAL COMMENTARY flags local mood-naming. EDITORIAL INTRUSION flags general essay-grade claims. General wins: use EDITORIAL INTRUSION.
  • RULE: WHEN EXHAUSTIVE INVENTORY AND ATMOSPHERIC INVENTORY OVERLAP - EXHAUSTIVE INVENTORY flags a sentence. ATMOSPHERIC INVENTORY flags a paragraph. Paragraph wins: use ATMOSPHERIC INVENTORY.
  • RULE: WHEN UNPACKED COMPRESSION AND RECURSIVE RESTATEMENT OVERLAP - UNPACKED COMPRESSION flags a compressed phrase being expanded. RECURSIVE RESTATEMENT flags two same-level statements making the same claim. Check: is the first version compressed and the second expanded? Use UNPACKED COMPRESSION. Are both at the same level? Use RECURSIVE RESTATEMENT.
  • RULE: WHEN REDUNDANT INTERIORITY AND EXPLAINED IMAGE OVERLAP - is the restatement internal narration (character's feelings/thoughts)? Use REDUNDANT INTERIORITY. Is it a narrator clause that doesn't enter the character's head? Use EXPLAINED IMAGE.

Cleared Format

Every pass (A-D) documents passages it examined and cleared, not just what it flagged. This section follows the flags in each pass file.

### Cleared
- Line N: [pattern] - protected by [preservation rule]. [one sentence reason].
- Line M: [pattern] - not a violation. [one sentence reason].

RULE: WHEN A PASS CHECKS A PASSAGE AND DOES NOT FLAG IT write a cleared entry with the pattern tested, the preservation rule that protected it or the reason it is not a violation. NEVER omit the cleared section. A pass with zero cleared entries means the pass did not examine enough passages.

Merge

RULE: WHEN ALL PASSES COMPLETE the main context merges the results. NEVER delegate the merge to a sub-agent. No chapter prose is involved.

  1. Read the voice memo from workshop-memo-{stem}.tmp.md
  2. Read all flags from workshop-surface-{stem}.tmp.md, workshop-trust-{stem}.tmp.md, workshop-resonance-{stem}.tmp.md
  3. Read all vitality flags from workshop-vitality-{stem}.tmp.md
  4. Sort regular flags by line number
  5. Apply deduplication rules across passes (two passes may flag the same passage under different patterns)
  6. Renumber regular flags sequentially (1, 2, 3...)
  7. Renumber vitality flags sequentially (V1, V2, V3...)
  8. Compute budget from voice memo's dominant mode and chapter word count
  9. Write workshop-flags-{stem}.tmp.md with: voice memo, budget line, regular flags, vitality flags, suppression notes
  10. Delete workshop-memo-{stem}.tmp.md, workshop-surface-{stem}.tmp.md, workshop-trust-{stem}.tmp.md, workshop-resonance-{stem}.tmp.md, workshop-vitality-{stem}.tmp.md

NEVER preserve pass files after merge. Only workshop-flags-{stem}.tmp.md persists.

Flag Output Format

Write to workshop-flags-{stem}.tmp.md in the book directory.

First item: the voice memo.

Then: numbered flags, ordered by line number. Each flag carries exactly these fields:

  • Number - integer, sequential
  • Line - line number or range in the chapter file
  • Type - Mechanical / Structural / Trust / Architecture / Resonance / Dialogue
  • Pattern - one of the thirty labels above
  • Sentence - quoted verbatim
  • Context - two sentences before and two sentences after the flagged sentence, quoted verbatim. If at paragraph boundary, include whatever is available. ALWAYS mandatory. Without this, the main context cannot evaluate proposals, check seams, or judge register fit.
  • Diagnosis - two to three sentences: what the passage is doing, why it is flagged, what direction the fix is in
  • Action - FIX / BREAK / CUT / REDISTRIBUTE / REWRITE
  • Gap - ALWAYS mandatory. What the surrounding prose needs if this flag is resolved. "Clean seam" when nothing is needed. If the passage is a sole carrier or juxtaposition half, state what would be lost.
  • Shape - one sentence in the chapter's register showing what belongs in the gap. Omitted only when Gap says "Clean seam." The author can take it, modify it, or ignore it.

RULE: WHEN WRITING VITALITY FLAGS - vitality flags follow all regular flags in the file. Each carries exactly these fields:

  • Number - V1, V2, V3, etc. V-prefixed. Separate sequence from regular flags.
  • Line - line number or range in the chapter file
  • Pattern - FLAT BAND / NEGATION DENSITY / SAFE SIMILE ONLY / OBSERVATION CEILING / DIALOGUE COMPOSURE / CLOSING LINE / CHARACTER ENTRANCE
  • Adjacent - [adjacent: #N] if within three lines of a regular flag. Omit if none.
  • Context - three sentences before and three sentences after the insertion point, quoted verbatim. ALWAYS mandatory.
  • Position - one sentence: why this structural position is high-leverage for a human insertion
  • Need - one sentence: what the insertion must add that the surrounding prose does not already provide. Frame as "The sentence needs..." followed by the gap between what the observations compose and what remains invisible without the insertion.

NEVER include diagnosis, action, gap, or shape. Vitality flags are positions, not problems.


Step 2: The Session

Read the flags file. Read the voice memo first and hold it for the duration of the session.

Opening

Display this instruction block exactly once, before the first flag:

N flags found (M mechanical, S structural, T trust/architecture, R resonance, D dialogue). For each one I'll show the sentence, why it's flagged, and what the gap needs.

  • Say your alternative and I'll evaluate it against the current best
  • yes - accept proposed fix or break
  • cut it - accept recommended cut
  • that's the one - lock your current best, resolve the flag
  • skip or next - take current best and advance
  • keep it - mark as intentional, move on
  • done - end this chapter, show change log
  • stop - end the whole run

Immediately present flag #1. NEVER pause. NEVER ask for confirmation.

Presenting a Flag

  • RULE: WHEN MECHANICAL - show flag number and total (format: 3 / 15), the flagged word/phrase in context, the diagnosis, the proposed fix, the gap, and the shape (if any). Stop. NEVER add a question.
  • RULE: WHEN STRUCTURAL - show flag number and total, the proposed break point (last sentence of paragraph one, first sentence of paragraph two), the gap. Stop.
  • RULE: WHEN TRUST OR ARCHITECTURE - show flag number and total, the flagged passage in context (flagged sentence in italics, surrounding context in plain text - do not use blockquotes, which render everything italic), the diagnosis, Recommend: CUT or Recommend: REDISTRIBUTE, the gap, and the shape. If the passage carries a [sole-carrier] or [juxtaposition-half] tag, state what would be lost. Stop.
  • RULE: WHEN RESONANCE - show flag number and total, the flagged sentence in context (flagged sentence in italics, surrounding context in plain text - do not use blockquotes), the diagnosis, the gap, and the shape. Stop.
  • RULE: WHEN DIALOGUE - show flag number and total, the flagged speech in context, the diagnosis, the recommended operation (from the four-operation menu for ESSAYISTIC SPEECH, or the diagnostic for UNIFORM VOICE), the gap, and the shape. Stop.

Iterative Evaluation

  • RULE: TRACK CURRENT BEST. Each flag starts with the original as the current best. Every proposal is evaluated against the current best, not against the original.

  • RULE: WHEN AUTHOR PROPOSES ALTERNATIVE - state BETTER, WORSE, or CLOSE as the first word, followed by a magnitude qualifier in parentheses: (S) small, (M) medium, (L) large. The verdict (BETTER/WORSE/CLOSE) is evaluated against the current best. The magnitude (S/M/L) is ALWAYS evaluated against the ORIGINAL sentence. Then two to three sentences explaining why. ALWAYS explain why. NEVER a bare verdict. Maximum three sentences.

  • RULE: WHEN BETTER - update current best to the new proposal. Say what it gained. Format: "BETTER (M). [explanation]. This is the new current best." WHEN BETTER (L) - auto-resolve the flag. Lock the proposal as the accepted sentence, mark RESOLVED, and move on. The author does not need to confirm a large improvement. The (L) auto-resolve applies to author proposals AND to tool-generated shapes produced during iterative feedback from the author (the author's input drove the improvement). It does NOT apply to initial shapes presented as part of a flag — those are starting points and always need author confirmation.

  • RULE: WHEN WORSE - keep current best. Say what the alternative lost. Show the current best. Format: "WORSE (S). [explanation]. Current best is still: [sentence]"

  • RULE: WHEN CLOSE - keep current best. Say what shifted and what didn't. Show the current best. Format: "CLOSE. [explanation]. Current best is still: [sentence]"

  • NEVER presume the author is done iterating. The author says that's the one or next. The tool waits.

Responding to the Author

  • RULE: WHEN AUTHOR SAYS YES - accept the proposed fix (mechanical) or break (structural). Mark RESOLVED. Move on.

  • RULE: WHEN AUTHOR SAYS CUT IT - assess whether removing the passage leaves a clean seam using the context field and the gap field. If clean: confirm, mark RESOLVED, move on. If not clean: say what breaks and wait.

  • RULE: WHEN AUTHOR SAYS THAT'S THE ONE - lock the current best. Display the context sentences leading up to and including the resolved sentence in a blockquote, with all prior accepted changes applied. Mark RESOLVED. Move on.

  • RULE: WHEN AUTHOR SAYS NEXT - if any proposal scored BETTER: take the current best, mark RESOLVED. If no proposals were made: mark SKIPPED. NEVER discard a BETTER alternative because the author moved on.

  • RULE: WHEN AUTHOR SAYS KEEP IT - mark KEPT. Move on. No commentary.

  • RULE: WHEN AUTHOR SAYS DONE - go to Step 3 immediately.

  • RULE: WHEN AUTHOR SAYS STOP - go to Step 4 immediately. Skip Step 3. Show change log, apply, end the run. Delete any unused lookahead flag file.

  • RULE: WHEN ALL FLAGS ARE EXHAUSTED - proceed to Step 3. NEVER pause. NEVER ask for confirmation.

  • RULE: WHEN AUTHOR ASKS A QUESTION - answer from the voice memo and the diagnosis only. NEVER read the chapter prose.

Evaluation Criteria

Check all seven silently. NEVER list them in the output.

  1. Does it resolve the pattern from the diagnosis?
  2. Does it stay in the chapter's register per the voice memo?
  3. Does it compress or expand? Compression is usually correct.
  4. Does it explain itself or trust the reader? Trust is usually correct.
  5. Does it land in the body or the intellect? Body is usually stronger.
  6. Does it introduce tense flattening, pronoun substitution, polysyndeton breaking, or specificity loss? If yes: WORSE.
  7. Does it introduce any pattern from the detection checklist (show-then-tell, editorial intrusion, etc.)? If yes: WORSE.

State

Track each flag as: CURRENT, RESOLVED (with accepted sentence, verdict, and current-best history), SKIPPED, or KEPT.

RULE: WHEN A FLAG RESOLVES - write the change to the flags file immediately. The temp file reflects the current session state at all times. If the session is interrupted, progress is preserved.

NEVER resolve a flag without a recorded evaluation. Every resolved sentence MUST have been evaluated BETTER or confirmed via that's the one. If the author says next after multiple proposals, the resolution comes from the current best, not the last proposal.

Edge Cases

  • RULE: WHEN ZERO FLAGS - tell the author the chapter is clean and stop. NEVER write a temp file.
  • RULE: WHEN RESUMING - load the existing flags file. Present the first flag with status CURRENT. Skip all RESOLVED, SKIPPED, and KEPT flags.

Step 3: Vitality

RULE: WHEN STEP 2 COMPLETES - display the opening block and immediately present V1. NEVER pause. NEVER ask for confirmation.

Opening block, displayed exactly once:

Vitality. N insertion points. Budget: M required. Write a sentence for each point. I'll attack it.

  • Type your sentence and I'll attack it
  • that's the one - lock current SURVIVED sentence, fill the point
  • pass - skip this point (does NOT count toward budget)
  • done - end if budget is met
  • budget override - end even if budget is not met
  • stop - end the whole run

RULE: WHEN PRESENTING A VITALITY POINT - show V-number and total (format: V2 / 7), the context (insertion point marked with >>> on an empty line between context-before and context-after), the pattern that flagged it, the position sentence, and the need sentence. If the point has an adjacency tag AND the adjacent flag was RESOLVED with CUT or REWRITE, show: "Flag #N changed nearby text. Context may have shifted." Stop. NEVER add a question.

RULE: WHEN ZERO VITALITY FLAGS - skip Step 3 entirely. Proceed to Step 4.

Attack Protocol

RULE: WHEN AUTHOR PROPOSES A SENTENCE - run three attacks in sequence. Report the FIRST that kills the sentence. If none kill it: SURVIVED.

  • DEAD - empty construct. Test: does the sentence draw meaning from the specific scene, character, object, or action in the surrounding context? Does it contain at least two meanings that are simultaneously true in THIS moment in THIS chapter? If the sentence would work equally well dropped into any chapter of any book: DEAD. Report what is missing. Format: "DEAD. [what is missing]. Write another."

  • FLAT - does not break the band. Test THREE conditions. (1) Does the sentence use any content word absent from the surrounding five sentences' vocabulary? (2) Does its syntactic structure differ from the dominant sentence pattern in the surrounding paragraph? (3) Does it cross a semantic domain boundary, shift register, or introduce a rhythm the surrounding prose does not have? If NONE of the three: FLAT. Report what it matches. Format: "FLAT. [what it matches]. Write another."

  • DAMAGED - introduces a detected pattern. Test: run the sentence through all thirty checks from groups 1-6 (Mechanical through Dialogue). If ANY fires: DAMAGED. Report which pattern. Format: "DAMAGED - [pattern name]. [one sentence explanation]. Write another."

  • SURVIVED - passed all three attacks. Mark the vitality point as FILLED. Update budget counter. Format: "SURVIVED. V2 of 5 filled." Move to next vitality point.

RULE: ATTACK LOOP IS AUTHOR-BOUNDED - only the author generates candidate sentences. The workshop NEVER proposes an insertion. The workshop NEVER generates alternatives. There is NO autonomous iteration and NO token spend without author action.

RULE: WHEN AUTHOR SAYS THAT'S THE ONE - lock the SURVIVED sentence. Mark FILLED. Move on. If no sentence has SURVIVED yet, say "No sentence has survived yet. Write another or say pass."

RULE: WHEN AUTHOR SAYS PASS - mark the vitality point as PASSED. Does NOT count toward budget. Move to next point.

RULE: WHEN AUTHOR SAYS DONE - check budget. If filled >= budget: go to Step 4. If filled < budget AND unfilled vitality points remain: "Budget requires M, you have N. Say budget override to end, or continue." If filled < budget AND no unfilled vitality points remain: emit warning "Budget requires M, only N positions identified. Proceeding." and go to Step 4.

RULE: WHEN AUTHOR SAYS BUDGET OVERRIDE - go to Step 4 regardless of budget count.

RULE: WHEN AUTHOR SAYS STOP - go to Step 4 immediately. Skip remaining vitality points. End the run after change log.

Vitality Evaluation Criteria

Check all six silently during each attack. NEVER list them in the output.

  1. Is there a scene under it? A body, an object, an action in the context that the sentence draws from?
  2. Does it carry double meaning - two things simultaneously true in this moment?
  3. Does it use vocabulary, syntax, or rhythm absent from the surrounding prose?
  4. Does it avoid all thirty detection patterns?
  5. Does it cross a semantic domain boundary (comparison, register, association)?
  6. Would it work equally well in a different chapter? If yes: suspect.

Criteria 1-2 feed the DEAD attack. Criterion 3 feeds the FLAT attack. Criterion 4 feeds the DAMAGED attack. Criteria 5-6 feed both DEAD and FLAT.


Step 4: Change Log

When the author says done or stop, or when Step 3 completes, produce the change log grouped by type:

Mechanical (N)

  • 1. "original" -> "accepted" (line NNN)

Structural (N)

  • 4. Paragraph break after line NNN

Trust / Architecture (N)

  • 7. "original sentence" -- cut (line NNN)

Resonance (N)

  • 10. "original sentence" -> "accepted sentence" (line NNN)

Dialogue (N)

  • 12. "original speech" -> "accepted speech" (line NNN)

Skipped (N)

  • 5. "original sentence" -- skipped

Kept (N)

  • 3. "original sentence" -- author kept original

Vitality (N of M budget)

  • V1. Inserted at line NNN: "author's sentence"
  • V3. Inserted at line NNN: "author's sentence"

Vitality passed (N)

  • V2. Passed - no insertion

Omit any group with zero entries.

After the change log, ask: Apply changes?

RULE: WHEN AUTHOR CONFIRMS - write every resolved change to the chapter file using exact string replacement. NEVER modify any line that was not flagged. NEVER reformat surrounding prose. Insert each FILLED vitality sentence at the flagged line number as a new line; do NOT replace existing text. After all changes are applied, delete the chapter's flag file.

RULE: WHEN DONE IN RANGE/ALL MODE - apply changes, delete this chapter's flag file, check if the next chapter's flag file is ready. If ready: display flag count, begin session. If not ready: report analysis is still running, wait.

RULE: WHEN STOP - apply changes, delete this chapter's flag file, delete any unused lookahead flag file. End the run.


Step 5: Lookahead

  • RULE: WHEN RANGE OR ALL - while the author is in session for chapter N, spawn the full multi-pass pipeline for chapter N+1 in the background. The pipeline runs serially within the background sub-agent (Pass 0, then A, then B, then C, then D, then merge). Each pass sub-agent MUST use the same model as the main context. NEVER delegate to a lighter or faster model. NEVER run passes concurrently even in lookahead. ONE chapter lookahead maximum.
  • RULE: WHEN CHAPTER N FINISHES - apply changes to chapter N. If chapter N+1's workshop-flags-{stem}.tmp.md exists: begin session immediately. Spawn lookahead for N+2. If not complete: tell the author, wait.
  • RULE: WHEN SINGLE CHAPTER INVOCATION - no lookahead. Step 5 does not apply.
  • NEVER run more than one lookahead pipeline at a time.

Limitation

This tool detects structural positions where the prose needs a human sentence. It can reject insertions that are DEAD (empty construct), FLAT (does not break the band), or DAMAGED (introduces a detected pattern). It CANNOT confirm that a surviving insertion is great. The difference between good and great is outside its capability.

A surviving insertion is guaranteed not to be dead, flat, or damaged. Whether it is alive is a judgment only a human reader can make.

The DEAD test is the strongest attack: it reliably rejects sentences with no scene under them. The FLAT test is medium confidence: it catches insertions that match the surrounding prose on all measured dimensions, but some genuinely good insertions are quiet and would score FLAT. The author may override FLAT with that's the one if they believe a quiet insertion is correct. The DAMAGED test is reliable: it uses the same thirty binary checks as the regular analysis.

The attack protocol's accuracy can be self-assessed on the rejection side. After several chapters, review DEAD and FLAT verdicts: were the rejected sentences actually empty constructs or band-matching? Were any DAMAGED verdicts false positives? These are mechanical checks with right/wrong answers. SURVIVED quality CANNOT be self-assessed. Whether surviving insertions elevate the chapter is a question only a human reader can answer - someone who reads the chapter without knowing which sentences are insertions and reports which ones stopped them. The tool's ceiling is the rejection boundary. Everything above that boundary is the author's.

All content in this file is dedicated to the public domain under CC0 1.0 Universal.