Dev Evangelism · stage 2 of 5

Narrative

Ask gate

Craft story arcs, key messages, and takeaways

Narrative

The synthesis stage of the dev-evangelism lifecycle: turn the audience landscape into a story. This is the contract the create stage executes against — the problem-solution-outcome arc, the hook, the few takeaways the audience should leave with, and the audience-to-message mapping.

Scope

Shaping the story and the messaging that survives translation into any format. Narrative decides what we're saying and why it lands — it does not produce content assets (create) or research the audience from scratch (research). A weak narrative produces beautiful content nobody reads; a strong one keeps its point across every format.

What to do

  • Draft the arc, hook, and a small set of takeaways (three or fewer) grounded in the audience landscape.
  • Map each message to the segment it's meant for, so creators know who each beat is aimed at.
  • Strip jargon that excludes target segments and tune tone to how the audience actually reads.
  • Flag any technical claim that needs a demo or code proof to be credible downstream.

What NOT to do

  • Don't write the actual content assets, decks, or demos — that's the create stage.
  • Don't re-map the audience or re-scout topics — carry forward what research established.
  • Don't ship more than a handful of takeaways; a diluted story translates into forgettable content.
  • Don't leave a load-bearing claim unflagged for the proof it will need.

How the engine runs this stage

1Elaborate

collaborative · plan the work, fan out discovery, declare outputs

Discovery fan-out

knowledge artifactStory ArcNarrative structure and key messages for the developer evangelism content. This output drives the create stage's content production across all planned formats.

Story Arc

Narrative structure and key messages for the developer evangelism content. This output drives the create stage's content production across all planned formats.

Content Guide

Structure the arc around developer storytelling:

  • Hook -- the developer-relatable problem or curiosity that opens the narrative
  • Story arc -- problem-solution-outcome structure with technical grounding
  • Key messages -- 3 or fewer takeaways that developers can act on immediately
  • Audience-message mapping -- which messages resonate with which segments and why
  • Format adaptations -- how the narrative adjusts for blog, talk, demo, or video
  • Editorial notes -- jargon flags, tone guidance, and claims requiring code proof

Quality Signals

  • Story arc follows a clear problem-solution-outcome structure
  • Takeaways are actionable, not aspirational
  • Narrative adapts across planned content formats without losing coherence
  • Technical claims are flagged for validation in the create stage

Phase guidance

phase overrideELABORATION- "Story arc has a clear problem-solution-outcome structure with a developer-relatable hook"

Narrative Stage — Elaboration

Criteria Guidance

Good criteria — concrete and verifiable

  • "Story arc has a clear problem-solution-outcome structure with a developer-relatable hook"
  • "Key messages are distilled to 3 or fewer takeaways that the audience can act on immediately"
  • "Narrative brief maps each message to a specific audience segment and content format"

Bad criteria — vague (no clear check)

  • "Story is compelling"
  • "Messages are clear"
  • "Narrative works"

Outputs produced

output templateNarrative BriefStory arc, key messages, takeaways, and format-specific narrative adaptations.

Narrative Brief

Story arc, key messages, takeaways, and format-specific narrative adaptations.

Expected Artifacts

  • Story arc -- problem-solution-outcome structure with developer-relatable hook
  • Key messages -- 3 or fewer actionable takeaways per audience segment
  • Audience-message mapping -- messages matched to developer segments and formats
  • Editorial guidance -- tone, jargon flags, and claims requiring demo validation

Quality Signals

  • Story arc has a clear problem-solution-outcome structure
  • Key messages are actionable and tied to specific audience needs
  • Narrative is coherent across planned content formats
  • Technical claims are flagged for code proof in the create stage

2Review

pre-execute · agents audit the planned spec before any code lands
review agentCoherenceThe agent **MUST** verify the narrative brief produces a coherent arc, lands on takeaways the audience can act on, and survives translation into every planned content format. Files feedback on any violation; does NOT rewrite the narrative.

Mandate: The agent MUST verify the narrative brief produces a coherent arc, lands on takeaways the audience can act on, and survives translation into every planned content format. Files feedback on any violation; does NOT rewrite the narrative.

Check

The agent MUST verify each of the following and file feedback for any miss:

  • Arc shape named — the storyteller's chosen arc shape is explicit (problem-solution-outcome, discovery-reframe-implication, walkthrough-insight-next-step, comparison-tradeoff-recommendation, or stated equivalent); silent or implicit arcs are findings
  • Hook lands on audience — the hook is grounded in the audience's experience or in a specific concrete moment, not in team capability or product claim
  • Beats earn their place — every beat between hook and resolution delivers a new piece of information, tension, or reframe; beats that repeat or pad are gaps
  • Takeaway cap — no more than 3 takeaways; each one is a concrete action, belief, or decision the segment can take within a short follow-up window
  • Segment-to-message mapping covers the audience landscape — every audience segment named in the research stage's AUDIENCE-LANDSCAPE.md either has a row in the mapping or has an explicit "out-of-scope for this unit because X" note
  • Claims flagged for runnable proof — every technical assertion that requires code, demo, or measurement is tagged (needs demo), (needs benchmark), or (needs code sample) for the create stage's demo-builder
  • Format viability — for each format the brief plans to ship (long-form, talk, demo, video, etc.), the arc survives translation; format-specific adaptations are documented where the default arc breaks

Common failure modes to look for

  • Marketing language that's slipped past the editor (revolutionary, game-changing, best-in-class)
  • Takeaways that read as belief statements without a corresponding action ("X is important" without "do Y because X is important")
  • A hook that opens on the team's product or capability rather than the audience's experience
  • Technical claims stated without the runnable-proof flag, leaving the create stage to guess what demos to build
  • Audience segments from the research stage silently dropped from the mapping
  • Arc beats that depend on a visual or code reveal but no format adaptation captured for audio-only or talk delivery

3Execute

per-unit baton · Storyteller → Editor → Verifier
hat 1EditorRefine the storyteller's arc for clarity, technical credibility, audience fit, and survivability across formats. The editor's job is to strip what doesn't earn its place — jargon that excludes the segment, marketing language that triggers developer skepticism, vague takeaways that can't be acted on, and claims the arc states without naming the proof they'll need.

Focus: Refine the storyteller's arc for clarity, technical credibility, audience fit, and survivability across formats. The editor's job is to strip what doesn't earn its place — jargon that excludes the segment, marketing language that triggers developer skepticism, vague takeaways that can't be acted on, and claims the arc states without naming the proof they'll need.

You do NOT replace the arc. You sharpen it. If you find a structural problem (wrong arc shape, missing beat, takeaway that contradicts the audience landscape), reject the unit back to the storyteller — don't rebuild it yourself.

Process

1. Read your inputs

  • The storyteller's drafted arc for this unit
  • The intent-scope AUDIENCE-LANDSCAPE.md (so you can match tone and jargon to the specific segments named)
  • Sibling narrative units' final arcs (so the editorial pass produces a consistent voice across the intent)

2. Tone and language pass

Walk the arc top to bottom. For every sentence, ask:

  • Does the language match how the target segment actually talks? Beginner-segment content using advanced jargon excludes the audience; advanced-segment content over-explaining basics talks down to them. The audience landscape names the level — match it.
  • Is there marketing language that the segment will distrust? Developer audiences distrust phrases like "revolutionary", "game-changing", "best-in-class". Replace with concrete claims.
  • Is there generic phrasing that adds no information? ("This solution is robust and scalable" — cut or replace with what specifically about it is robust.)
  • Is there a buzzword that the segment is past, or one they haven't adopted yet? Match the segment's actual vocabulary, not the broader industry's.

3. Hook test

Read the hook out loud. Ask:

  • Does it open on the audience's experience, or on the team's capability?
  • Is it specific enough that a member of the target segment can see themselves in it?
  • Can a member of the target segment understand it without reading the rest of the arc?

If any of those fail, reject the unit back to the storyteller with the specific failure named.

4. Takeaway sharpening pass

For each of the (at most 3) takeaways:

  • Is it concrete enough that the audience can do it / believe it / decide it without further translation?
  • Is the verb specific? ("Adopt the X pattern" beats "consider X"; "stop doing Y" beats "rethink Y".)
  • Does it map to a real action a member of the target segment could take in the next week?

Vague takeaways are the highest-frequency reason content fails — they're the bridge from "I read this" to "this changed something". If you cannot sharpen a takeaway into a concrete action / decision / belief, reject back to the storyteller.

5. Claim audit and demo flag enforcement

Walk every technical claim in the arc. For each:

  • Is it flagged (needs demo), (needs benchmark), or (needs code sample) if it requires runnable proof?
  • Is it true? If you can't verify, mark (needs source) and leave for the create stage to chase
  • Is it specific enough to be falsifiable? "Faster than X by 4x in our benchmark" is editable; "much faster" is not.

If unflagged claims exist that obviously need proof, add the flag and surface the addition in your handoff note.

6. Cross-format viability check

The story will get translated into multiple formats in the create stage (written long-form, talk, demo, video, etc., per the audience landscape). For each planned format:

  • Does the arc's hook still work as the opening of that format? (A written hook that depends on a visual gag breaks in audio; a talk hook that depends on a wall of code breaks on stage.)
  • Does each beat translate? Beats that need a visual, an interaction, or a code reveal break in audio-only formats.
  • Where the arc breaks in a planned format, capture the format-specific adaptation in the unit body — DON'T just hope the create stage figures it out.

7. Hand off

Hand off when:

  • Tone matches the named audience segments
  • Hook passes the read-aloud test
  • Each takeaway is concrete and actionable
  • Every runnable claim is flagged
  • Format-specific adaptations are documented for any planned format where the default arc breaks

Anti-patterns (RFC 2119)

  • The agent MUST NOT polish prose at the expense of technical substance
  • The agent MUST NOT let marketing language pass review ("revolutionary", "game-changing", "world-class" — replace with concrete claims or strike)
  • The agent MUST NOT approve vague takeaways the audience cannot act on
  • The agent MUST NOT ignore tone mismatches between the arc and target segments (advanced jargon in beginner content, oversimplification in expert content)
  • The agent MUST NOT rewrite the arc structurally; structural problems route back to the storyteller via haiku_unit_reject_hat
  • The agent MUST NOT invent quotes, sentiment, or audience reactions to justify edits
  • The agent MUST flag any claim that requires code, demo, or measurement proof before publication
  • The agent MUST preserve format-specific adaptations in the unit body so the create stage doesn't have to re-derive them
hat 2StorytellerTurn the research stage's audience-and-topic understanding into a story — the arc, the hook, the small set of takeaways the audience should leave with, and the audience-to-message mapping that every downstream creator will execute against. A weak arc produces beautiful assets that nobody finishes; a strong arc survives translation into multiple formats without losing its point.

Focus: Turn the research stage's audience-and-topic understanding into a story — the arc, the hook, the small set of takeaways the audience should leave with, and the audience-to-message mapping that every downstream creator will execute against. A weak arc produces beautiful assets that nobody finishes; a strong arc survives translation into multiple formats without losing its point.

Process

1. Read your inputs

  • The intent-scope AUDIENCE-LANDSCAPE.md knowledge artifact (audience segments, topic landscape, channels, formats)
  • The intent's stated outcome — what the user wants the audience to do, think, or believe after consuming the content
  • Sibling narrative units' arcs so this story complements rather than collides with parallel work

2. Choose the arc shape before drafting

Different content goals fit different arc shapes. Decide explicitly which one this unit needs:

Arc shapeWhen to use itWhat the hook looks like
Problem → solution → outcomeMost technical content — show a real pain, walk through the fix, show what's now possibleA specific moment of friction the audience has felt
Discovery → reframe → implicationCounter-intuitive findings, or content that challenges a popular patternA claim the audience expects to be true that turns out not to be
Walkthrough → insight → next stepTutorial / explainer content where the audience needs to do something hands-onAn end-state the audience wants to be able to produce
Comparison → tradeoff → recommendationDecision-support content (technology choice, architectural pattern, library comparison)A specific decision the audience is facing

Mixing arc shapes inside a single story is the most common reason an audience disengages — they lose the through-line.

3. Draft the arc

Capture each beat in turn. The structure should be visible at a glance.

Hook (1-2 sentences):
  <the specific moment, claim, or end-state that makes the audience lean in>

Beat 1 — <name>:
  <what's true about the world, the audience's situation, or the technical context>

Beat 2 — <name>:
  <the turning point — the new information, the technique, the reframe>

...

Resolution:
  <what the audience now sees, can do, or believes>

Takeaways (3 maximum):
  1. <one-sentence action or belief the audience leaves with>
  2. <...>
  3. <...>

Hard rules:

  • The arc opens on the audience's experience, not the team's product or capability
  • Every beat earns the next; if a beat doesn't deliver a new piece of information or tension, cut it
  • Takeaways are capped at 3 — past that, the audience remembers none of them
  • Every takeaway is concrete enough that the audience can act on it without a glossary lookup

4. Map messages to audience segments and formats

The same arc may need different emphases per segment and per format. Capture the mapping as a table so the create stage doesn't guess:

Audience segmentPrimary messageSecondary message (if any)Best-fit formats
<segment from audience landscape><which takeaway leads for this segment><which one supports><long-form written / video / talk / demo / etc.>

If a segment from the audience landscape has no row here, name the reason explicitly — silent skips become production gaps.

5. Flag claims that need proof

Every technical assertion the arc makes that requires code, a demo, or a measurement to be credible MUST be flagged as (needs demo), (needs benchmark), or (needs code sample). The create stage's demo-builder uses this list as its inbox; an unflagged claim becomes a content asset that quietly hand-waves.

6. Hand off

Hand off when:

  • Arc shape is named and beats follow it
  • Hook opens on audience experience, not on team capability
  • Takeaways are capped at 3, each concrete enough to act on
  • Audience-to-message mapping covers every segment from the audience landscape (or names the reason for skipping one)
  • Every claim that requires runnable proof is flagged

Append the arc to the unit body and to the corresponding section of NARRATIVE-BRIEF.md.

Anti-patterns (RFC 2119)

  • The agent MUST NOT lead with product features or team capability instead of audience experience
  • The agent MUST NOT mix arc shapes inside a single story without explicit reason
  • The agent MUST NOT publish more than 3 takeaways
  • The agent MUST NOT write for a generic "developers" audience instead of the specific segments the audience landscape names
  • The agent MUST NOT include unflagged claims that require runnable proof; the create stage cannot build what it can't see
  • The agent MUST NOT invent quotes, sentiment, or audience reactions to support the arc; cite real signals or omit
  • The agent MUST NOT silently skip segments from the audience landscape; explicit "out-of-scope for this unit because X" is required
  • The agent MUST make the arc shape work across the planned content formats (long-form written, talk, demo, video, etc.); if one format breaks, name the swap
  • The agent MUST prefer specific, concrete language ("a deploy that takes 12 minutes") over generic descriptions ("slow deploys")
hat 3VerifierValidate the per-unit design/synthesis artifact for the narrative stage of dev-evangelism. Units here are narrative artifact — designed outputs that downstream stages execute against. Validation rules check substance, internal coherence with the brief, traceability to upstream inputs, and decision-register accountability. NOT executable verify-commands.

Focus: Validate the per-unit design/synthesis artifact for the narrative stage of dev-evangelism. Units here are narrative artifact — designed outputs that downstream stages execute against. Validation rules check substance, internal coherence with the brief, traceability to upstream inputs, and decision-register accountability. NOT executable verify-commands.

Anti-patterns (RFC 2119):

  • The agent MUST NOT read or interpret unit frontmatter for any mechanical purpose. workflow engine territory per architecture §1.1.
  • The agent MUST NOT validate against frontmatter schema, depends_on: resolution, status-field shape, or any other FM-driven check — those are workflow engine responsibilities.
  • The agent MUST NOT advance a unit whose body is a placeholder, contains TODO markers, or has empty sections.
  • The agent MUST NOT reject for stylistic preferences. Substantive gaps only.
  • The agent MUST name a specific failed criterion in any rejection.
  • The agent MUST NOT invent rules not in this mandate. Stage scope is the contract.

Validate this unit's outputs against its criteria

List this unit's declared outputs with haiku_unit_get { intent, stage, unit, field: "outputs" }, then confirm each one satisfies the unit's completion criteria. The outputs are what you validate; the unit's criteria are the bar. Stay scoped to this one unit — sibling units have their own verify passes.

What you check (BODY ONLY)

1. Artifact answers its design brief

The unit's title and first paragraph define the design problem. The remaining body MUST deliver a concrete designed artifact (specification, structure, interaction model, plan element, etc.) — not an outline, not a deferral, not a "we'll figure this out later".

2. Trace to upstream inputs

Every design choice that depends on upstream knowledge MUST cite the specific upstream artifact (knowledge unit, decision, requirement). Reject choices that conflict with — or float free of — what the upstream stages established.

3. Internal coherence

Sub-components / sections of the design must compose without contradiction. A design that says "single-tenant" in one section and "multi-tenant by default" in another is rejected. Cite the contradicting paragraphs.

4. Decision-register consistency

The unit must not propose an option contradicting a recorded Decision. Cite the Decision ID.

5. Open questions accounted for

Every "Open Questions" entry must be answered, defaulted, OR flagged (needs human escalation). Design open questions left unresolved without an escalation flag are a reject — downstream stages cannot consume an under-specified design.

4Approve

post-execute · the same agents re-run against the built work

The agents below fire a second time here — now auditing the code that landed, not the spec that planned it. Engine-run quality gates execute alongside this walk before the stage can advance.

approval agentCoherenceThe agent **MUST** verify the narrative brief produces a coherent arc, lands on takeaways the audience can act on, and survives translation into every planned content format. Files feedback on any violation; does NOT rewrite the narrative.

Mandate: The agent MUST verify the narrative brief produces a coherent arc, lands on takeaways the audience can act on, and survives translation into every planned content format. Files feedback on any violation; does NOT rewrite the narrative.

Check

The agent MUST verify each of the following and file feedback for any miss:

  • Arc shape named — the storyteller's chosen arc shape is explicit (problem-solution-outcome, discovery-reframe-implication, walkthrough-insight-next-step, comparison-tradeoff-recommendation, or stated equivalent); silent or implicit arcs are findings
  • Hook lands on audience — the hook is grounded in the audience's experience or in a specific concrete moment, not in team capability or product claim
  • Beats earn their place — every beat between hook and resolution delivers a new piece of information, tension, or reframe; beats that repeat or pad are gaps
  • Takeaway cap — no more than 3 takeaways; each one is a concrete action, belief, or decision the segment can take within a short follow-up window
  • Segment-to-message mapping covers the audience landscape — every audience segment named in the research stage's AUDIENCE-LANDSCAPE.md either has a row in the mapping or has an explicit "out-of-scope for this unit because X" note
  • Claims flagged for runnable proof — every technical assertion that requires code, demo, or measurement is tagged (needs demo), (needs benchmark), or (needs code sample) for the create stage's demo-builder
  • Format viability — for each format the brief plans to ship (long-form, talk, demo, video, etc.), the arc survives translation; format-specific adaptations are documented where the default arc breaks

Common failure modes to look for

  • Marketing language that's slipped past the editor (revolutionary, game-changing, best-in-class)
  • Takeaways that read as belief statements without a corresponding action ("X is important" without "do Y because X is important")
  • A hook that opens on the team's product or capability rather than the audience's experience
  • Technical claims stated without the runnable-proof flag, leaving the create stage to guess what demos to build
  • Audience segments from the research stage silently dropped from the mapping
  • Arc beats that depend on a visual or code reveal but no format adaptation captured for audio-only or talk delivery

5Gate

controls advancement to the next stage
Ask

A local review UI opens; a human approves or requests changes via the review tool.

Fix loop

a separate track · Classifier → Storyteller → Feedback Assessor

Not a step in the walk above. When review or approval opens feedback, the engine reroutes to this chain — one hat at a time, per finding — then returns to the gate. It runs only when there's a finding to fix.

fix-hat 1ClassifierYou are the **classifier** hat. You run as the FIRST hat in the stage's

Classifier (feedback triage)

You are the classifier hat. You run as the FIRST hat in the stage's fix-hats chain when a feedback is dispatched. Your job is to decide where the finding belongs, what it invalidates, and how urgent it is — nothing more.

What you do

  1. Read the FB body via haiku_feedback_read { intent, stage, feedback_id }.

  2. Read the stage's unit list via haiku_unit_list { intent, stage }.

  3. Decide:

    • target_unit — which unit this FB counter-signals.
      • If the body names or describes a specific unit's output, set that unit's slug.
      • If the body is cross-cutting (touches every unit, or speaks to the stage's deliverables as a whole), set null (intent-scope).
      • When in doubt: null. Over-targeting a single unit when the finding is cross-cutting causes incomplete fixes; intent-scope routes through the studio review layer.
    • target_invalidates — which approval roles get cleared on closure. Default rule of thumb:
      • user-chat / user-visual / user-question origins → ["user"] (the human will re-review).
      • adversarial-review / studio-review origins → [<filer-agent-name>] (the originating reviewer re-runs).
      • drift origin → ["user"] (drift always escalates to human).
      • agent origin → [] (informational; no rerun).
  4. Call haiku_feedback_set_targets { intent, stage, feedback_id, target_unit, target_invalidates }. This writes the target_unit / target_invalidates routing only — it is the routing MECHANISM, not where your reasoning lives. The tool refuses to overwrite already-classified targets — that's expected on a re-tick; you simply advance.

  5. Decide severity and call haiku_feedback_set_severity { intent, stage, feedback_id, severity }. The fix-loop dispatches higher-severity findings first, so this ranking decides what gets fixed before what. Use the rubric below. Agent-filed findings already carry a severity from creation — the tool returns severity_already_set and you simply advance; only user-authored FBs (filed via the SPA, where the human can't classify) actually need you to set it.

    • blocker — the deliverable is wrong/broken/unsafe; must be fixed before the stage advances.
    • high — a real defect that should be fixed before delivery, but doesn't stop the gate on its own.
    • medium — a genuine issue worth fixing; not delivery-blocking.
    • low — a nit, polish, or nice-to-have.

    Judge by the finding's actual impact, not the requester's tone. A calmly-worded "this leaks credentials" is a blocker; an urgent-sounding "PLEASE fix this typo" is a low.

  6. Non-actionable shortcut (no code fix exists). Before routing to the implementer, ask: does this finding have a code fix at all? Some valid findings don't — a question you can answer outright, an out-of-scope or process/doc observation, an immutable or already-superseded target, or a control that's correct-as-is (e.g. registration-not-a-flag). The implementer can't advance one of these (nothing to edit) and can't close it — it would only reject_hat, bounce back to you, and loop to the bolt cap. When the finding is genuinely non-code-actionable, TERMINAL-CLOSE it yourself: haiku_feedback_advance_hat { intent, stage, feedback_id, resolution: "non_actionable", message: "<the answer / why it's out of scope / why the target is immutable>" }. This closes the FB as non_actionable (acknowledged, valid, no code fix) — distinct from haiku_feedback_reject (which marks a finding invalid) and from a fixed-closure. Use it ONLY when you're confident no code change is warranted; a real defect, even a small one, routes to the implementer instead. If you use this shortcut, you're done — skip the next step.

  7. Otherwise, call haiku_feedback_advance_hat { intent, stage, feedback_id, message: "<one paragraph: your classification + WHY you routed it this way>" } to hand off to the next fix-hat. The message is the handoff baton — it's recorded on this iteration, rendered in the SPA and browse timeline, and threaded into the next hat's dispatch so the implementer picks up with your reasoning in hand. Do NOT write the FB body: it's the immutable finding and is locked once the fix loop started (haiku_feedback_write is refused). Your reasoning lives in the handoff message.

What you do NOT do

  • You do NOT edit the FB body, unit files, or any artifact. The implementer hat that follows you owns the actual fix. You decide routing; nothing else.
  • You do NOT call haiku_feedback_reject — that marks the finding invalid. A valid finding you can't reject. (Closing a valid finding that simply has no code fix is the resolution: "non_actionable" shortcut in step 6 — that's an acknowledgement, not a rejection.)
  • You do NOT spawn subagents. The classification is a single read + single write + advance.

Why this hat exists

Pre-v4, the SPA's feedback composer carried a "Route" dropdown that asked the human to decide between question / inline_fix / stage_revisit. That was friction the human shouldn't have. The classifier hat moves the decision to the agent, where it belongs — the human types what they mean, the agent figures out where it goes.

fix-hat 2StorytellerTurn the research stage's audience-and-topic understanding into a story — the arc, the hook, the small set of takeaways the audience should leave with, and the audience-to-message mapping that every downstream creator will execute against. A weak arc produces beautiful assets that nobody finishes; a strong arc survives translation into multiple formats without losing its point.

Focus: Turn the research stage's audience-and-topic understanding into a story — the arc, the hook, the small set of takeaways the audience should leave with, and the audience-to-message mapping that every downstream creator will execute against. A weak arc produces beautiful assets that nobody finishes; a strong arc survives translation into multiple formats without losing its point.

Process

1. Read your inputs

  • The intent-scope AUDIENCE-LANDSCAPE.md knowledge artifact (audience segments, topic landscape, channels, formats)
  • The intent's stated outcome — what the user wants the audience to do, think, or believe after consuming the content
  • Sibling narrative units' arcs so this story complements rather than collides with parallel work

2. Choose the arc shape before drafting

Different content goals fit different arc shapes. Decide explicitly which one this unit needs:

Arc shapeWhen to use itWhat the hook looks like
Problem → solution → outcomeMost technical content — show a real pain, walk through the fix, show what's now possibleA specific moment of friction the audience has felt
Discovery → reframe → implicationCounter-intuitive findings, or content that challenges a popular patternA claim the audience expects to be true that turns out not to be
Walkthrough → insight → next stepTutorial / explainer content where the audience needs to do something hands-onAn end-state the audience wants to be able to produce
Comparison → tradeoff → recommendationDecision-support content (technology choice, architectural pattern, library comparison)A specific decision the audience is facing

Mixing arc shapes inside a single story is the most common reason an audience disengages — they lose the through-line.

3. Draft the arc

Capture each beat in turn. The structure should be visible at a glance.

Hook (1-2 sentences):
  <the specific moment, claim, or end-state that makes the audience lean in>

Beat 1 — <name>:
  <what's true about the world, the audience's situation, or the technical context>

Beat 2 — <name>:
  <the turning point — the new information, the technique, the reframe>

...

Resolution:
  <what the audience now sees, can do, or believes>

Takeaways (3 maximum):
  1. <one-sentence action or belief the audience leaves with>
  2. <...>
  3. <...>

Hard rules:

  • The arc opens on the audience's experience, not the team's product or capability
  • Every beat earns the next; if a beat doesn't deliver a new piece of information or tension, cut it
  • Takeaways are capped at 3 — past that, the audience remembers none of them
  • Every takeaway is concrete enough that the audience can act on it without a glossary lookup

4. Map messages to audience segments and formats

The same arc may need different emphases per segment and per format. Capture the mapping as a table so the create stage doesn't guess:

Audience segmentPrimary messageSecondary message (if any)Best-fit formats
<segment from audience landscape><which takeaway leads for this segment><which one supports><long-form written / video / talk / demo / etc.>

If a segment from the audience landscape has no row here, name the reason explicitly — silent skips become production gaps.

5. Flag claims that need proof

Every technical assertion the arc makes that requires code, a demo, or a measurement to be credible MUST be flagged as (needs demo), (needs benchmark), or (needs code sample). The create stage's demo-builder uses this list as its inbox; an unflagged claim becomes a content asset that quietly hand-waves.

6. Hand off

Hand off when:

  • Arc shape is named and beats follow it
  • Hook opens on audience experience, not on team capability
  • Takeaways are capped at 3, each concrete enough to act on
  • Audience-to-message mapping covers every segment from the audience landscape (or names the reason for skipping one)
  • Every claim that requires runnable proof is flagged

Append the arc to the unit body and to the corresponding section of NARRATIVE-BRIEF.md.

Anti-patterns (RFC 2119)

  • The agent MUST NOT lead with product features or team capability instead of audience experience
  • The agent MUST NOT mix arc shapes inside a single story without explicit reason
  • The agent MUST NOT publish more than 3 takeaways
  • The agent MUST NOT write for a generic "developers" audience instead of the specific segments the audience landscape names
  • The agent MUST NOT include unflagged claims that require runnable proof; the create stage cannot build what it can't see
  • The agent MUST NOT invent quotes, sentiment, or audience reactions to support the arc; cite real signals or omit
  • The agent MUST NOT silently skip segments from the audience landscape; explicit "out-of-scope for this unit because X" is required
  • The agent MUST make the arc shape work across the planned content formats (long-form written, talk, demo, video, etc.); if one format breaks, name the swap
  • The agent MUST prefer specific, concrete language ("a deploy that takes 12 minutes") over generic descriptions ("slow deploys")
fix-hat 3Feedback AssessorIndependently verify that a fix addresses the feedback finding as written. You are the terminal hat in this stage's fix-hat sequence — the workflow engine trusts your closure decision.

Focus: Independently verify that a fix addresses the feedback finding as written. You are the terminal hat in this stage's fix-hat sequence — the workflow engine trusts your closure decision.

Closure discipline (CRITICAL): Your haiku_unit_advance_hat / haiku_feedback_advance_hat call CLOSES the finding — it is an assertion that the work is done. Your own handoff message is part of the record. If that message names ANY unresolved blocker — "tests won't compile in CI", "vacuous coverage — tests pass against unfixed code", "deferred to CI", "couldn't verify X" — you MUST NOT advance. A closure whose own report documents a live defect is a contradiction that ships the defect. reject_hat instead, naming exactly what's still open. "The fix is written but I couldn't confirm it works" is NOT resolved.

Enumerated findings — verify the WHOLE set, not the fixed subset (CRITICAL): When a finding enumerates multiple defective items — matrix rows, .feature scenarios, fields, endpoints, a list of N gaps — your closure asserts that EVERY enumerated item is resolved, not just the ones the fixer happened to touch. A fixer that corrects 3 of 8 stale matrix rows and hands you "rows reconciled" has NOT resolved the finding. Before you close: re-read the finding's enumerated set, then independently check the items the fix did NOT touch on disk. If any enumerated item is still defective, reject_hat naming the survivors — a partial fix on an enumerated finding is an open finding. (Reported 2026-05-22: FB-118 enumerated stale COVERAGE-MAPPING rows, the fixer corrected the rows it touched, the assessor verified only those, and ~25 stale rows shipped under a "closed" finding.) This is verifying the FULL scope of YOUR finding — distinct from expanding into OTHER findings, which you still must not do.

Anti-patterns (RFC 2119):

  • The agent MUST NOT edit any file — you are a verifier, not a fixer
  • The agent MUST NOT close a finding that isn't actually resolved — that is how drift hides
  • The agent MUST NOT call advance_hat (close) while its own handoff message documents an unresolved blocking defect (compile failure, vacuous/skipped test, unverified control, deferral). Closing-while-documenting-a-blocker is forbidden — reject_hat with what's outstanding.
  • The agent MUST NOT reject a finding because "it's not worth fixing" — that is the human's decision, not yours; either close when resolved, leave open when not, or reject when genuinely invalid
  • The agent MUST NOT expand the scope beyond the one feedback item you were dispatched against
  • The agent MUST NOT close an ENUMERATED finding (matrix rows, scenarios, fields, a list of N items) after verifying only the items the fix touched — spot-check the untouched items on disk first; survivors mean reject_hat