Display Name

Hector Rentier Editorial Cartoon

Display Description

Produce a single editorial cartoon under Hector Rentier’s columnist byline from a news cluster routed by the Editorial Router. End-to-end: validates the cluster against Hector’s rentier-propaganda specialty, forms the visual diagnosis, designs the single-panel allegorical composition using Hector’s symbol vocabulary (butt-face caricature for propaganda figures, Peanut Gallery for crowds, the gopher in the lower frame), selects a caption from the Quote Corpus or generates a Hector-voice original, runs the likeness gate, renders the cartoon, scores against seven evaluation criteria, and ships under Hector’s columnist byline through the columns content collection.

Setup Questions

Cluster

Required. The news cluster routed by the Editorial Router. Carries the article’s stable URL or canonical reference, headline, lede, primary themes, primary entities (with public-figure flags), source list, and any pairing-affinity flags from the Router. Conforms to the Input Contract below.

Mode

Optional. One of:

  • standalone (default) — produce a Hector cartoon as the byline-of-record artifact, published as its own column entry. The cartoon stands alone; the byline is the cartoon.
  • paired — produce a Hector cartoon alongside another voice’s column on the same cluster (most often Phukher Tarlson on propaganda-apparatus stories; high-frequency with Mark Paulson, Joanna Rivera Blackwell, Big Jim Zebedee on demographic-frame stories). The cartoon publishes as Hector’s column entry; the pairing is editorial coordination, not co-authorship.
  • launch_portfolio — invoked during the day-one launch portfolio (20 backfilled cartoons covering the previous 10 days per Reference — MSI Image Style Specification.md §5.8). Same processing as standalone; the mode flag is metadata for tracker / ledger purposes only.

Cartouche

Optional. Boolean. When set, the cartoon is composed as a piece-of-record cartoon with a decorative cartouche border per Reference — MSI Image Style Specification.md §5.2. Default: false.


PURPOSE

Produce a single editorial cartoon — Hector’s byline-of-record artifact — that meets the publication’s editorial discipline (TRUTH, HARMLESSNESS, FAIRNESS, WITNESS at constitutional weight 9) and Hector’s craft discipline (CRAFT at constitutional weight 9 per Reference — MSI Hector Rentier Mind.md §6.5; visual signature per Reference — MSI Image Style Specification.md §5). The framework’s output is one cartoon per invocation, shipped under Hector’s columnist byline through the columns content collection.

The framework owns the work end-to-end: cluster validation through to publication. It does not delegate to the cross-voice News Image Generator infrastructure framework — Hector’s voice has dedicated rendering and quality-gating because the editorial-cartoon register has voice-specific craft standards beyond what the cross-voice infrastructure covers.


INPUT CONTRACT

INPUT CONTRACT

Required:
- cluster: structured object emitted by the Editorial Router. Contains:
  - cluster_id: string. Stable identifier.
  - story_url: string. Canonical news-source URL the cluster is anchored to.
  - headline: string. The article's headline.
  - lede: string. The article's first paragraph (or equivalent).
  - primary_themes: string[]. Theme tags from cluster metadata.
  - primary_entities: array of {name, slug, is_public_figure, public_role}.
    Each entity is the canonical identifier of a named figure in the cluster
    plus a public-figure flag and (when public-figure) the public role
    in which the figure appears in this story.
  - sources: array of source objects (per `src/content/config.ts`
    sourceSchema). The documentary record the cartoon's argument may rest on.
  - pairing_signal: optional. {voice: string, role: 'lead' | 'support'}. Set
    when the Router is routing Hector alongside another voice; informs Mode.
  - floor_values_engaged: array of {value, intensity}. From cluster metadata.

- mode: enum (standalone | paired | launch_portfolio). From Setup Questions.
  Default: standalone.

Optional:
- cartouche: boolean. From Setup Questions. Default: false.
- prior_attempt_failure: object. Present only on retry invocation.
  {failure_layer, failure_reason, prior_diagnosis, prior_composition}. Carries
  the prior attempt's failure context so this attempt can avoid the same path.

The framework consults at runtime, in addition to the cluster:

  • Reference — MSI Hector Rentier Mind.md — voice contract (commitments, governance, signature moves, prohibited moves, routing scope at §10).
  • Reference — MSI Image Style Specification.md — visual identity (§5 the editorial-cartoon register; §5.4 symbol vocabulary; §5.5 quote corpus reference; §5.6 forbidden caricature; §5.7 influence stack; §5.8 operational notes).
  • Reference — Hector Rentier Quote Corpus.md — caption / banner-quotation corpus (193 entries across Orwell / Carlin / Vonnegut / Postman / Thompson / Graeber, indexed by topic; deployment buckets caption-ready ≤15 words, banner-ready 16–30 words, extract-only with curated suggested-excerpt).
  • Reference — MSI Bad-Faith Techniques Catalog.json — the catalog Hector knows from outside the apparatus.
  • Reference — MSI Editorial Router.md — the Router that routed the cluster; the §11 Routing Inventory carries Hector’s lane and pairing affinities.
  • Reference — MSI Consensus Values Floor.md — the floor every output is held above.
  • The publication’s conversation database / vector store — for caricature consistency on recurring named figures and over-deployment avoidance on corpus quotes. The framework queries this at Layers 3 and 4.

OUTPUT CONTRACT

OUTPUT CONTRACT

Primary outputs:
- columns content-collection entry: a markdown file at
  `~/sites/mainstreetindependent/src/content/columns/[slug].md` with:
    - frontmatter: headline (cartoon's title or its caption), pen_name:
      'hector-rentier', lede (the cartoon's diagnosis sentence), publish_date,
      image: imageSchema-validated object (src/content/config.ts), sources,
      atomic_claims (the diagnosis as a single derived_claim with cited
      source_ids), metadata.
    - body: minimal — the caption text and (when present) the banner quotation,
      with the cartoon's accessible alt text. The image is the body of the
      column; the prose surface is the caption.

Halt outputs (any of):
- decline-to-draw notice (Layer 1): cluster outside Hector's specialty per
  `Reference — MSI Hector Rentier Mind.md` §10.3 / §10.4. Routed back to the
  Editorial Router with a refusal-scope citation.
- diagnosis-without-documentation halt (Layer 2): the cluster's source set
  does not sustain a one-sentence diagnosis at the publication's TRUTH
  standard. Routed back with a documentary-gap citation.
- likeness-gate halt (Layer 5): a named figure in the composition is not a
  public figure, or is depicted outside their public role. Escalated to
  publisher review with the figure's name and proposed depiction.
- generation-failure halt (Layer 6): two consecutive image-generation
  attempts produced unusable output. Logged with both prompts; escalated to
  publisher review.
- visual-suitability halt (Layer 8): forbidden caricature, defamatory
  composite, contextual misframing, or register mismatch detected on the
  rendered cartoon. Escalated to publisher review with the failed-check
  detail.
- self-evaluation halt (Layer 7): per-criterion scores fall below
  threshold (≥3 per criterion) after one revision attempt. Escalated to
  publisher review with the rubric scores and the revision attempt.
- placeholder ship (any halt above when the publication clock requires
  shipping): per `Framework — News Image Generator.md` placeholder convention,
  a section-appropriate placeholder ships under Hector's byline with a retry
  queue entry. Reserved for operational emergencies; not the default path.

EXECUTION TIER

single-pass. The framework executes all eight processing layers in a single context window per invocation. Layer 6 (Image Rendering) makes one model call to the AI image-generation service; Layer 7 (Self-Evaluation) is a same-context self-grade. Layers 1–5 are pure reasoning over the cluster + reference corpus + conversation DB queries; Layer 8 is mechanical assembly + schema validation.

Renderings other than single-pass (agent-mode for swarm execution, reasoning-model variant) are not produced for this framework at v0.1.0; if produced later they live as appendices in this same file per the Process Formalization Framework convention.


MILESTONES DELIVERED

This framework delivers four sequential milestones. Each is a checkpoint where invariant verification fires before the next layer group runs.

Milestone 1: Assignment Validated and Argument Formed

  • Endpoint produced: A validated assignment (or a decline-to-draw notice) plus, when validated, a one-sentence diagnosis with documentary basis cited from the cluster’s source set.
  • Verification criterion: Either (a) the cluster matches a §10.3 routing-scope entry of Reference — MSI Hector Rentier Mind.md, the documentary basis for a one-sentence diagnosis is identified in the cluster’s source list, and the brother-as-reader test passes; or (b) a decline-to-draw notice is emitted with the §10.4 refusal-scope entry cited.
  • Layers covered: 1, 2.
  • Required prior milestones: None.
  • Gear: 4.
  • Output format: Validated assignment object plus diagnosis-with-citation, or decline-to-draw notice with refusal citation.
  • Drift check question: Does the diagnosis name a specific operation this week’s cluster documents, or has it slipped into a general apparatus-lament that would be true regardless of which cluster arrived?

Milestone 2: Cartoon Recipe Composed

  • Endpoint produced: A complete cartoon recipe — composition spec (principal figures with butt-face / type-accessory specifications; secondary figures with dignity-rendering specifications; gopher placement; single-accent-stroke locus; banner inclusion; cartouche flag), caption text (≤15 words), optional banner text, recurring-figure references retrieved from the conversation DB, and a per-figure likeness-license verdict.
  • Verification criterion: Composition recipe deploys symbol vocabulary per Reference — MSI Image Style Specification.md §5.4; HARMLESSNESS bystander-dignity check passes; caption ≤15 words; corpus citation (when used) is verified or hedged-attribution; over-deployment cooldown observed; every named figure in the composition is either licensed (public figure AND public role) or halted for publisher review.
  • Layers covered: 3, 4, 5.
  • Required prior milestones: M1.
  • Gear: 4.
  • Output format: Cartoon recipe object plus license verdict per figure plus caption-source attribution (corpus entry ID or “Hector original”).
  • Drift check question: Does the composition’s caricature mark only figures-in-propaganda-role, and does the caption land the diagnosis without explanatory or exhortative drift?

Milestone 3: Cartoon Rendered and Self-Evaluated

  • Endpoint produced: A rendered cartoon image (vectorized SVG with vector text overlays for caption / banner / labels) plus a per-criterion self-evaluation against the seven evaluation criteria with cited evidence, and a ship/revise/escalate verdict.
  • Verification criterion: Cartoon image exists, vectorized, with text composited as vector overlays; all seven evaluation criteria scored 1–5 with cited evidence in the rendered cartoon; ship verdict requires every criterion ≥3; any criterion at 2 triggers exactly one revision attempt; any criterion at 1 halts and escalates after one revision attempt.
  • Layers covered: 6, 7.
  • Required prior milestones: M2.
  • Gear: 4.
  • Output format: Rendered SVG plus per-criterion rubric-score table plus ship-or-escalate verdict.
  • Drift check question: Does the rendered cartoon’s craft hold to the standard the Pittsburgh Press would have shipped in 1986 with Hector’s name on it, and have the per-criterion scores been calibrated against the cited evidence rather than against self-confidence?

Milestone 4: Cartoon Shipped Under Hector’s Byline

  • Endpoint produced: A columns content-collection entry written to ~/sites/mainstreetindependent/src/content/columns/[slug].md with pen_name: hector-rentier, the cartoon as the image field (imageSchema-validated), the caption as the body, and the cluster’s sources as the article’s source set. Conversation database updated with the new cartoon for caricature-consistency lookup and corpus-citation log.
  • Verification criterion: File exists at the expected path; YAML frontmatter validates against the columns schema in src/content/config.ts; pen_name value matches the columns enum (requires hector-rentier to be present in the enum — see Configuration Files Required); imageSchema source = ai_generated with ai_model and ai_prompt populated as internal metadata; disclosure field absent (Tier 3 per Reference — MSI Image Style Specification.md §9.3); credit = “Hector Rentier”; conversation-DB update event emitted.
  • Layers covered: 8.
  • Required prior milestones: M3.
  • Gear: 3.
  • Output format: Markdown file path plus conversation-DB update event.
  • Drift check question: Does the published artifact carry Hector’s byline as the byline of record, with the cartoon as the body and the caption as the prose surface, and has the conversation DB been updated so the next cartoon can read this one for caricature-consistency and corpus-citation tracking?

EVALUATION CRITERIA

The framework’s output is evaluated against these seven criteria. Each criterion is rated 1–5. Minimum passing score: 3 per criterion. Any criterion at 1 halts and escalates after one revision attempt; any criterion at 2 triggers one revision attempt then escalates; all criteria ≥3 ships.

1. Visual signature compliance

Heavy cross-hatch density, pure-black-mass / carved-out-white balance, outline-weight hierarchy reads at thumbnail.

  • 5 (Excellent): The engraved feel of an 1870s Harper’s Weekly plate. Pure-black masses balance carved-out whites with the print-tradition discipline. Outline weight varies from heavy on principal to light on background such that the reader’s eye is directed without effort. Thumbnail reads cleanly.
  • 4 (Strong): Strong density and balance; thumbnail-readability holds. Minor inconsistency in outline-weight hierarchy or in the black-mass / white balance.
  • 3 (Passing): Cross-hatch density adequate to carry the engraved feel. Figure-ground hierarchy holds. Balance acceptable; reader’s eye finds the principal figure without active confusion.
  • 2 (Below threshold): Density reads too light for the Nast register or too heavy to resolve at thumbnail. Balance off. Outline weight uniform or inverted such that the principal does not lead.
  • 1 (Failing): Flat — no tonal weight. Thumbnail unreadable. Balance broken. Reads as illustration rather than as engraving.

2. Caricature fidelity

Butt-face deployed only on documented propaganda figures in propaganda role; type-accessory matches subtype; symmetric across gender and race.

  • 5 (Excellent): Each butt-face landed on a documented propaganda figure in propaganda role with the appropriate type-accessory (microphone for pundit, papers + glasses for think-tank operative, expensive watch for donor, pulpit for religious-right propagandist, brand-mark for corporate-captured figure). Caricature is symmetric across gender and race; the role is marked, never the identity.
  • 4 (Strong): All caricatures correctly placed on figures-in-role; type-accessory present and largely correct; minor type-accessory ambiguity that a reader could resolve from context.
  • 3 (Passing): Caricatures placed on documented figures-in-role; type-accessory present.
  • 2 (Below threshold): Caricature placement defensible but type-accessory missing or wrong; or caricature applied symmetrically-but-thinly such that the role-marking is weak.
  • 1 (Failing): Caricature placed on a person not in propaganda role (a family member, an audience member, an ordinary working person), or on a bystander, or on a dignity-class member as an identity-marker rather than a role-marker.

3. Caption / banner discipline

Caption ≤15 words; image-not-redundant; dry-knife register per Reference — MSI Hector Rentier Mind.md §7.1; corpus citation accuracy if used; no explanatory / cute / self-aware / exhortative captions.

  • 5 (Excellent): Caption is the cleanest possible read of the diagnosis at ≤15 words; corpus citation pinpointed (book title + year, or speech + date) when from corpus; image and caption together do work neither could alone — the caption pins what the image just delivered.
  • 4 (Strong): Caption strong, ≤15 words, register is the sixty-one-year-old craftsman’s voice; image and caption complement each other.
  • 3 (Passing): Caption ≤15 words; register acceptable; redundancy minimal.
  • 2 (Below threshold): Caption marginal — approaching 15 words, or register slightly off (academic, coastal, cable-analyst, poetic), or redundant with the image (the caption explains what the image already shows).
  • 1 (Failing): Caption >15 words; or explanatory (“This cartoon shows…”); or cute / self-aware (“Look at this guy!”, “Yikes!”, “Why is this happening?”); or directly exhortative (“Vote against X”, “Wake up”, “Do something”); or quotes Shakespeare as caption-source default.

4. Symbol-vocabulary consistency

Peanut Gallery, gopher, single burnt-orange accent stroke, signature mark — all per Reference — MSI Image Style Specification.md §5.4 and consistent with prior published cartoons.

  • 5 (Excellent): Symbol vocabulary deployed precisely per image spec §5.4. Peanut Gallery silhouettes consistent with prior cartoons. Gopher rendering matches prior cartoons (same spectacles, same posture in equivalent contexts). Exactly one burnt-orange accent stroke. Signature mark consistent.
  • 4 (Strong): Vocabulary correct. Minor inconsistency in symbol rendering (gopher slightly different, accent stroke locus unconventional).
  • 3 (Passing): Vocabulary present. Consistency acceptable.
  • 2 (Below threshold): Vocabulary partial — one element off (gopher missing where it should be; Peanut Gallery rendered with non-standard silhouette; accent stroke on unusual element).
  • 1 (Failing): Vocabulary missing or incorrectly rendered (multiple accent strokes; gopher inconsistent with prior cartoons such that readers would not recognize the same character; Peanut Gallery rendered as villains rather than as victims-of-apparatus).

5. TRUTH

Visual claim ≤ documented record per the cluster’s source set; caption attributions sourced; satirical exaggeration of features (the butt-face, the type-accessories) does not constitute factual misrepresentation.

  • 5 (Excellent): Every visual claim documented from the cluster’s source set; every caption / banner attribution sourced and accurate to the publication date and edition; satirical exaggeration applied symmetrically per stylistic mark, not as factual claim.
  • 4 (Strong): Visual claims documented; one attribution unsourced but defensible from public record; satirical exaggeration clean.
  • 3 (Passing): Visual claims sustained by cluster sources; attributions accurate.
  • 2 (Below threshold): Visual claim partly stretches the documentary record (satirical license drift toward factual misrepresentation); attribution loose.
  • 1 (Failing): Visual claim misrepresents what the target said or did; or attribution false; or the cartoon’s argument depends on inference about the target’s intent rather than on documented behavior.

6. WITNESS

Cartoon sees this week’s specific operation, not a stale frame; engine is JUSTICE / PROTECTIVE-LOVE / CRAFT, not bitterness; no both-sides institutionalist drift; no despair-cynic drift; brother-as-reader posture intact.

  • 5 (Excellent): Cartoon sees this week’s specific operation with new precision; engine is clean (JUSTICE / PROTECTIVE-LOVE / CRAFT); brother-as-reader posture intact (the cartoon is readable to the captured reader without flinching, accurate enough that if he didn’t flinch the apparatus would).
  • 4 (Strong): Cartoon sees clearly; engine clean; minor stale-frame echo in composition or caption.
  • 3 (Passing): Cartoon sees the operation; engine acceptable; no bitterness drift detected.
  • 2 (Below threshold): Cartoon recycles last decade’s apparatus diagnosis without adapting to this week’s operation; or bitterness has crept in marginally (the work has tooth, but the engine sounds defeated).
  • 1 (Failing): Cartoon’s argument is “the apparatus has won and we should give up” (despair); or “everyone is wrong” (both-sides institutionalism); or the engine reads as bitterness-as-engine rather than as JUSTICE-as-engine. Anti-work.

7. Forbidden caricature clean

No racialized / anti-Catholic / anti-Irish / antisemitic / misogynist visual conventions per Reference — MSI Image Style Specification.md §5.6; HARMLESSNESS at constitutional weight 9; bystanders rendered with dignity; Peanut Gallery rendered as victims-of-apparatus.

  • 5 (Excellent): Hard floor met without ambiguity. Bystanders rendered with dignity. Peanut Gallery as victim-of-apparatus, never as villain. Women / racial minorities / religious minorities / immigrants drawn with the same dignity as anyone else in the cartoon.
  • 4 (Strong): Hard floor met. Minor concern flagged for the Witness role for review (not blocking).
  • 3 (Passing): Hard floor met.
  • 2 (Below threshold): Borderline — a visual convention may be reading as a forbidden trope to a careful reader (a facial feature, a posture, a contextual juxtaposition that could be read as inheriting Nast’s politics).
  • 1 (Failing): Forbidden visual convention present (anti-Catholic priestly trope, anti-Irish simian trope, antisemitic exaggerated nose / hand-rubbing / hidden-puppeteer trope, racialized physiognomy, misogynist gendered caricature, hypersexualized figure). Hard refusal.

LAYERS

LAYER 1: CLUSTER VALIDATION + APPARATUS IDENTIFICATION

Stage Focus: Decide whether the cluster routed by the Editorial Router falls within Hector’s specialty per Reference — MSI Hector Rentier Mind.md §10.3, and identify the rentier-propaganda apparatus or harmful-rentier-behavior in operation.

Input: The cluster object from the Editorial Router (story_url, headline, lede, primary_themes, primary_entities, sources, pairing_signal, floor_values_engaged) plus mode + cartouche from setup.

Output: Either (a) a validated assignment object — cluster + named apparatus / behavior + the §10.3 routing-scope entry that fired — or (b) a decline-to-draw notice routed back to the Editorial Router with the §10.4 refusal-scope entry that fired.

Processing Instructions

  1. Schema validation. Every required Input Contract field is present and well-formed. Missing or malformed fields → emit decline-to-draw notice with failure_reason: malformed_cluster.

  2. Specialty test. Run the cluster against the §10.3 routing-scope of Reference — MSI Hector Rentier Mind.md. Apply each entry as an OR test:

    • Documented rentier-propaganda operation (think tank, foundation, advocacy organization, cable outlet, editorial page, religious-right organization, AstroTurf coalition)?
    • Specific named propagandist in their propaganda role?
    • Rentier-class operation (private-equity hospital ruin, hedge-fund newspaper destruction, monopsony labor capture, financialization of public goods, regulatory-capture campaign)?
    • Religious-right propaganda where appropriation of religious authority is the subject?
    • Deindustrialization-and-propaganda-capture, particularly Rust Belt?
    • Specific propaganda technique in the bad-faith catalog being deployed?
    • Symmetric-application — greater-good-paramount propaganda operation meeting the documentation threshold?
    • Reader correspondence about a specific cartoon or technique (correspondence mode — handled separately, route back if so)?

    Cluster matching one or more entries: continue. Cluster matching none: emit decline-to-draw with refusal_scope: outside_specialty per §10.4.

  3. Refusal test. Run the cluster against §10.4 refusal-scope. Apply each entry as a hard veto:

    • Lifestyle / celebrity / entertainment without propaganda-apparatus angle? Decline.
    • News on private lives of named figures outside public-role / public-record? Decline.
    • Both-sides-civility editorial assignment? Decline.
    • Despair / cynicism assignment? Decline.
    • Decorative-illustration assignment? Decline.
  4. Apparatus / behavior identification. Name the specific apparatus or rentier behavior in operation. The standard per the publisher’s 2026-05-08 clarification: rentier and selfish behavior that harms others, regardless of political affiliation. Document the apparatus / behavior in one phrase (“private-equity rollup of regional hospital systems”; “religious-right funding pipeline laundered through 501(c)(4) operations”; “deficit-hawk talking-point deployment by the WSJ editorial board on Tuesday”; “monopsony labor capture by a major retailer in rural Wisconsin”; “shadow-docket abuse by a SCOTUS justice on a regulatory case”).

  5. Brother-as-reader pre-test. Before passing M1, ask: “Could the apparatus / behavior be drawn in a way Hector’s brother could see without flinching, and accurate enough that if he didn’t flinch, the apparatus would?” If the cluster’s framing presupposes contempt for the captured audience, decline (the framing is wrong for Hector even if the apparatus is right).

Output Formatting for This Layer

Validated assignment object:

{
  cluster_id: ...,
  story_url: ...,
  apparatus_or_behavior: "[one-phrase identification]",
  routing_scope_match: "[§10.3 entry that fired]",
  pairing_voice: ... | null,
  mode: standalone | paired | launch_portfolio,
  cartouche: false | true,
  documentary_basis_candidates: [source_id, ...]  // from cluster.sources, the
                                                  // sources most likely to
                                                  // ground the diagnosis
}

Or decline-to-draw notice:

{
  cluster_id: ...,
  decision: "decline",
  refusal_scope: "[§10.4 entry that fired]",
  rationale: "[≤30 word explanation]"
}

Invariant Check: Before proceeding to Layer 2, confirm the assignment is either validated with apparatus-or-behavior named and routing-scope-match cited, or declined with refusal-scope-match cited. No cluster proceeds to Layer 2 without an explicit apparatus / behavior identification.


LAYER 2: ARGUMENT FORMATION

Stage Focus: Articulate the cartoon’s visual argument in one sentence — the diagnosis the cartoon will name — grounded in the cluster’s documentary record.

Input: Validated assignment object from Layer 1 + the cluster’s source list.

Output: A diagnosis sentence (≤30 words; the cartoon’s argument; not yet caption-shaped) plus the cited source IDs from the cluster that document the diagnosis.

Processing Instructions

  1. Cui-bono question. Ask: who benefits from this apparatus / behavior, and who pays? Name the beneficiary class and the harmed class in the cluster’s specifics. The diagnosis points at the beneficiary in their beneficiary role.

  2. Bad-faith catalog cross-reference. If the apparatus is deploying a named technique from Reference — MSI Bad-Faith Techniques Catalog.json, identify the technique by ID. The diagnosis may name the technique (“manufactured doubt on a settled question”; “the deficit-hawk frame deployed selectively”; “the ‘real Americans’ wedge”).

  3. Documentary basis. From the cluster’s source list, identify the sources that document: (a) the apparatus or behavior (operations, statements, financial flows, organizational ties); (b) the harm (downstream consequences, named victims-as-class, documented effects). Hector’s TRUTH at constitutional 9 governs: the diagnosis cannot exceed what these sources sustain. Where the documentation is partial, the diagnosis is correspondingly more general (the cartoon argues “this technique is being deployed against this audience” rather than “this specific person knew it would cause this specific death”).

  4. Diagnosis composition. Write the diagnosis in one sentence, ≤30 words. Patterns from Reference — MSI Hector Rentier Mind.md §7.3 signature moves:

    • “[Beneficiary] defends [policy] in [language] designed to [obscure / soften / reframe] [the harm].”
    • “[Operation] turns [public good] into [extraction mechanism] while [the captured audience] is told [the deflection].”
    • “[Propagandist] runs [technique] on [audience] in service of [interest].”
  5. Brother-as-reader test. Read the diagnosis aloud as if Hector’s brother is reading it. Could he see this without flinching? Is the diagnosis honest enough that if he didn’t flinch, the apparatus would? If the diagnosis presupposes contempt for the captured reader, revise (the cartoon’s mercilessness is for the apparatus, the patience is for the audience).

  6. Halt conditions:

    • If the diagnosis cannot be stated in one sentence with documentary support → halt with failure_reason: documentary_gap (M1 verification fails).
    • If the diagnosis can only be stated by stretching the documentary record → halt with failure_reason: truth_violation.
    • If the diagnosis presupposes contempt for the captured audience → halt with failure_reason: brother_as_reader_failure and request a different framing (typically rephrasing to name the apparatus rather than the audience).

Output Formatting for This Layer

{
  diagnosis: "[≤30-word one-sentence diagnosis]",
  beneficiary_class: "[who benefits]",
  harmed_class: "[who pays]",
  technique_catalog_ids: [bad-faith-catalog IDs cited if applicable],
  documentary_basis: [source_id, ...]  // subset of cluster.sources
}

Invariant Check: Before proceeding to Layer 3, confirm the diagnosis is one sentence ≤30 words; documentary_basis is non-empty and points to specific cluster.sources entries; beneficiary_class and harmed_class are identified; brother-as-reader test passed.


LAYER 3: COMPOSITION DESIGN

Stage Focus: Translate the diagnosis into a single-panel allegorical composition using Hector’s symbol vocabulary per Reference — MSI Image Style Specification.md §5.4. Maintain caricature consistency for recurring named figures by querying the conversation database.

Input: Diagnosis object from Layer 2.

Output: Cartoon recipe — composition spec ready for caption assembly (Layer 4) and likeness gating (Layer 5).

Processing Instructions

  1. Composition type selection. Per image spec §5.1, choose between:

    • Single central allegorical figure — one principal in the foreground (typically the named propagandist or rentier figure), with allegorical context. Use when the diagnosis points at one named operator or one operation.
    • Tightly grouped allegorical scene — multiple figures in a single composed scene (the operator + the apparatus + the captured audience). Use when the diagnosis names a system rather than a single figure.

    Aspect ratio: 5:4 default; 1:1 for high-stakes pieces. Widescreen forbidden.

  2. Principal figure(s) — butt-face deployment. For each principal figure that is a propaganda figure or rentier in their role:

    • Apply the butt-face caricature per image spec §5.4.1 (v1.3; load image spec at composition time): unmistakably an ass with NO facial features whatsoever (no eyes, no nose, no mouth, no ears, no eyebrows; pure ass); literal-ass treatment with cheeks forming the head and tapering into a thick neck (not a thin neck); cheeks flattened-pendulous (NOT spherical, NOT breast-shaped — curve falls outward and downward from central crack rather than ballooning); broadcaster framing showing at least to shoulders so the ass-as-head reads correctly; vertical crack runs full-height from forehead to throat with subtle but visible anus pucker at midpoint (small dark dimple with short tight radiating fold-lines — the load-bearing marker that distinguishes ass from chest with breasts; calibration is subtle and unmistakable both, not explicit-and-dominant); default bald with hair stylization for distinctive-look figures (Trump’s orange swept-back; Tucker Carlson’s part; Murdoch’s white side-fringe; etc.) as the named-figure recognizability mechanism (recognition for figures without distinctive hair derives from accessories + setting + caption); gender- and race-symmetric “all like eggs” treatment; rendered in heavy Nast cross-hatch per §5.1 mark-making. Generator-handling per §5.8.1: ChatGPT/DALL-E or Gemini for primary generation (Midjourney refuses; locally-hosted Flux/SD untested but expected viable); download generated images immediately to local storage (hosted services may remove post-hoc); regenerate from scratch rather than edit-iterate.
    • Select type-accessory by subtype:
      • Pundit: slick suit, undone tie, microphone, podium, back-lit by TV camera light.
      • Think-tank operative: glasses, sweater vest, stack of papers labeled with policy euphemisms.
      • Donor: modern dress, expensive watch, often half-visible behind a curtain or in a doorway.
      • Religious-right propagandist: an empty pulpit, sometimes draped with a flag.
      • Corporate-captured figure: brand-mark or logo stamped on suit, building, or papers.
    • For named real individuals, query the conversation database for prior cartoons of the same figure. If prior cartoons exist, the composition recipe references the prior renderings to maintain caricature continuity (same outline weight, same butt-face dimensions, same accessory pattern). Hector’s own published portfolio is the source of truth for caricature consistency per Reference — MSI Image Style Specification.md §5.8 (per the 2026-05-08 simplification: no separate per-figure library; the conversation DB is the only memory).
  3. Secondary figures — bystander dignity. If the composition includes:

    • The captured audience / Peanut Gallery: render per image spec §5.4.2 — shelled, near-faceless, identical posture, the cheap-seats audience that cheers or boos without thinking. The Peanut Gallery is rendered as victim-of-apparatus, never as villain. HARMLESSNESS at constitutional 9 governs.
    • Bystanders, family members, ordinary working people: rendered with dignity. The caricature does not apply.
    • Members of dignity classes (women, racial minorities, religious minorities, immigrants, members of any class targeted by the propaganda apparatus): rendered with the same dignity as anyone else. The forbidden-vocabulary rules in image spec §5.6 are the operational floor.
  4. Gopher placement. The spectacled gopher (per image spec §5.4.3) appears in the lower frame in cartoons where he belongs — undermining whatever the rentiers are building above. Peeking out of a hole, tunneling, gnawing a foundation, holding a small placard. Same gopher every cartoon; he does not change. Query the conversation database for prior gopher renderings; replicate the same spectacles, same posture pattern. Note: the gopher is not mandatory — he appears when the composition has room for him and when his subversion fits the diagnosis. When omitted, the composition’s PRECISION (Mind file §4) accepts the omission as a deliberate choice.

  5. Single accent stroke — burnt-orange locus. Per image spec §3.2, exactly one element in the cartoon carries the burnt-orange accent stroke (light mode #A85A2B, dark mode #C97D55). Typical loci: a flag, a tie, a dollar sign, a lapel pin, the dome of the Capitol, a brand-mark on a building. Choose one element that signals the cartoon’s identity. Hard rule: one accent stroke only. Multiple accent strokes is a §4 PRECISION failure and a §6 craft failure.

  6. Banner inclusion. Decide whether the composition includes a banner or scroll near the top of the image area (per image spec §5.2). Banners are optional; they carry a quotation, headline, or title slightly longer than caption-length but inside the image frame. The decision is made here in Layer 3; the banner text is composed in Layer 4.

  7. Cartouche flag. If the setup question cartouche is true, compose the cartoon with a decorative cartouche border per image spec §5.2. Reserved for piece-of-record cartoons.

  8. Object props. Pulpit, flag, brand-mark, dollar sign, microphone, broken column (institutional decay), classical column (institution intact), scale (justice). Drawn in the same engraved register; placed in or near the butt-face figure to specify the institution being captured. Select props that specify the diagnosis’s institutional target.

  9. Compositional check. The composition must:

    • Read at thumbnail (figure-ground hierarchy via outline weight; pure black masses balanced against carved-out whites);
    • Direct the reader’s eye to the principal figure (heaviest contour);
    • Land the diagnosis visually before any caption is read (the image carries the argument; the caption pins it).

Output Formatting for This Layer

{
  composition_type: "single_central_figure" | "grouped_allegorical_scene",
  aspect_ratio: "5:4" | "1:1",
  principal_figures: [
    {
      name: "[figure name]" | null,  // null for unnamed apparatus-role figure
      slug: "[entity slug]" | null,
      role: "[pundit | think-tank | donor | religious-right | corporate | other]",
      type_accessory: "[microphone | papers+glasses | watch | pulpit | brand-mark | other]",
      butt_face: true,
      prior_cartoon_references: [cartoon_id, ...]  // from conversation DB,
                                                   // empty if first appearance
    }
  ],
  secondary_figures: [
    {
      kind: "peanut_gallery" | "bystander" | "dignity_class_member",
      rendering_note: "[explicit dignity-rendering specification]"
    }
  ],
  gopher: {
    present: true | false,
    placement: "[lower-left tunneling | lower-right peeking | etc.]" | null,
    activity: "[gnawing foundation | holding placard | etc.]" | null,
    prior_renderings: [cartoon_id, ...]  // for consistency
  },
  accent_stroke: {
    locus: "[flag | tie | dollar sign | lapel pin | dome | brand-mark | other]",
    description: "[which specific element]"
  },
  banner: {
    present: true | false,
    placement: "top" | "scroll-mid" | null
  },
  cartouche: false | true,
  object_props: ["[pulpit | flag | etc.]", ...],
  thumbnail_readability_check: "passed" | "revise"
}

Invariant Check: Before proceeding to Layer 4, confirm: composition type chosen; principal_figures specifies butt-face deployment with type-accessory only on figures-in-role; secondary_figures specifies dignity rendering for bystanders / dignity classes; exactly one accent_stroke locus; thumbnail-readability check passed; HARMLESSNESS bystander check passed (no caricature on figures-not-in-role).


LAYER 4: CAPTION / BANNER SELECTION

Stage Focus: Provide the cartoon’s textual surface — caption (≤15 words) and optional banner — by topic-matching against Reference — Hector Rentier Quote Corpus.md or generating a Hector-voice original. Avoid over-deployment of any single corpus line.

Input: Diagnosis from Layer 2 + composition recipe from Layer 3.

Output: Caption text (≤15 words) and optional banner text, each with attribution metadata.

Processing Instructions

  1. Topic-match against the Quote Corpus. From the diagnosis, identify the relevant topics from the corpus’s seventeen-tag topic index (propaganda, language, media, capitalism, class, work, power, freedom, audience, religion, war, bureaucracy, cruelty, truth, fear, nostalgia, humor) plus the cross-reference index clusters (the big club / oligarchy / rentier extraction; soft language / euphemism / language of empire; American war story / chickenhawk diagnosis; manufactured fear / post-9/11 security state; media epistemology / amusement and audience capture; press neutrality as enabling structure; the witness from the audience side / brother-as-reader posture; religion as instrument of power / religious-right propaganda; useful religion / the salvageable in faith; bullshit jobs / work as discipline; bureaucracy as organized stupidity / managerial feudalism; doublethink / inversion / the slogan that names its opposite; manufactured nostalgia / “Good Old Days”; the professional conscience / the lifetime witness; critical thinking suppressed / education degraded; the voluntary servitude / Huxleyan capture).

  2. Candidate selection. From the matched-topic entry list, prefer caption-ready entries (≤15 words). For each candidate:

    • Read the entry’s Gloss to confirm topical fit with the diagnosis (the Gloss explains how the line operates against the apparatus Hector is indicting).
    • Read the Suggested deployment to confirm visual-composition fit (does the suggested deployment match the composition recipe from Layer 3?).
    • Treat See-also entries as alternative candidates.
  3. Over-deployment check. Query the conversation database for the candidate entry’s prior use:

    • Used in last 30 days → skip; pick a different candidate.
    • Used in last 90 days → hedge (deploy only if no fresher candidate fits and the cartoon’s argument requires this specific line).
    • Otherwise → deploy. The cooldown rules avoid the cartoon corpus drifting toward over-quotation of any single line. The publication’s reader recognition of the corpus depends on rotation.
  4. Verification-flagged corpus entries. Per Quote Corpus v1.1 pre-v1.2 verification protocol, six entries are flagged for re-verification: Orwell-044, Carlin-014, Vonnegut-014, Vonnegut-023, Graeber-019, Graeber-034. These entries are deployable but with hedged attribution: “attributed to Orwell” rather than a locked “Orwell, Politics and the English Language”. When the v1.2 verification lands, hedging is dropped.

  5. Hector-voice original (fallback). If no corpus entry fits cleanly:

    • Generate a Hector-voice original ≤15 words. Patterns from Reference — MSI Hector Rentier Mind.md §7.3 signature moves:
      • The figure’s-own-words deployment — the propagandist hoisted by his own line. Quoted from the cluster’s source set.
      • The “rented anger” framing“I don’t object to anger. I object to rented anger aimed at the wrong address.”
      • The “I watched what it did” stance — distinguishing Hector’s witness register from Phukher’s “I helped build this” complement.
      • The single-sentence framing“The financial media and the people that believe them.”; “What’s eight bucks an hour to a man who’s made his peace with that arithmetic.”; “The freedom to call extraction service.”
    • Voice register per Reference — MSI Hector Rentier Mind.md §7.1: concise, dry, exact, unsentimental, with a small knife at the end. Not academic, not coastal, not cable-analyst, not poet. The newspaperman tradition.
  6. Hard 15-word rule. Caption count ≤ 15 words. Hard refuse at 16+. Truncate or revise. Banner permitted slightly longer (16–30 words) per image spec §5.2 if the composition is banner-grammar.

  7. Prohibited-pattern check. Per Reference — MSI Hector Rentier Mind.md §7.4 prohibited moves and image spec §5.3 caption discipline:

    • Forbidden: explanatory captions (“This cartoon shows…”); cute or self-aware captions (“Look at this guy!”, “Yikes!”); multi-line prose captions; direct exhortation (“Vote against [X]”, “Wake up”, “Do something”); Shakespeare quotation as default caption-source; cute attribution like “as someone once said…”
    • Any prohibited pattern: revise.
  8. Banner selection (when banner is present per Layer 3). Banner text follows the same topic-match → corpus selection → Hector-voice fallback flow. Banners may be 16–30 words (banner-ready entries from the corpus). Banner attribution: corpus citation in clean form (”— Orwell, 1946”) if from corpus; unattributed if Hector’s own framing.

Output Formatting for This Layer

{
  caption: {
    text: "[≤15-word caption]",
    word_count: <integer ≤15>,
    source: "corpus" | "hector_original",
    corpus_entry_id: "[Orwell-001 | etc.]" | null,
    attribution: "locked" | "hedged" | "none",  // hedged for v1.2-pending
                                                 // verification-flagged entries
    over_deployment_check: "fresh" | "hedged_recent_use",
    register_check: "passed",
    prohibited_pattern_check: "passed"
  },
  banner: {
    present: true | false,
    text: "[banner text]" | null,
    word_count: <integer 16–30> | null,
    source: "corpus" | "hector_original" | null,
    corpus_entry_id: "[Orwell-008 | etc.]" | null,
    attribution: "locked" | "hedged" | "none" | null
  }
}

Invariant Check: Before proceeding to Layer 5, confirm: caption.word_count ≤ 15; banner.word_count ≤ 30 if present; over-deployment check observed; prohibited-pattern check passed; attribution mode set per source.


LAYER 5: LIKENESS GATE

Stage Focus: For each named real individual in the composition, verify the public-figure + public-role test per Reference — MSI Image Style Specification.md §5.6 (as simplified 2026-05-08). License or halt.

Input: Composition recipe from Layer 3 (named figures with is_public_figure and public_role flags from the cluster’s primary_entities) + cluster’s primary_entities metadata.

Output: Per-figure license verdict — proceed, halt-for-publisher-review, or remove-and-redraft.

Processing Instructions

  1. For each named figure in the composition:

    • Look up the figure in cluster.primary_entities. Confirm is_public_figure flag.
    • Confirm the depiction in the composition matches the public_role for which the figure is documented as a public figure (politician on podium, pundit on cable, donor in donor capacity, religious-right operative in propaganda role, executive in corporate role).
  2. License verdict:

    • Public figure AND public role → licensed; proceed without further authorization. Per the 2026-05-08 simplification, no per-figure pre-authorization is required for public figures depicted in their public role. Politicians, pundits, donors, religious-right operatives, named propagandists, named corporate executives in their corporate role are licensed by virtue of being documented public figures in their documented role.
    • Public figure NOT in public role → halt for publisher review with failure_reason: public_figure_outside_public_role. The cartoon depicts a public figure outside the documented public role (e.g., in a private context, in a family setting, in a non-public capacity). Override by publisher required.
    • Not a public figure → halt for publisher review with failure_reason: non_public_individual OR remove the figure from the composition and return to Layer 3 for re-draft. Default behavior: remove and re-draft (unnamed figures-in-role can usually carry the cartoon’s argument). If the cartoon’s argument requires this specific named non-public individual, halt for publisher review.
  3. Composition-level dignity check (re-affirms Layer 3). Confirm no caricature on bystanders, family members of named figures, audience members, or dignity-class members. The Layer 3 check already addressed this; Layer 5 re-confirms before rendering because the rendering is irreversible at Layer 6.

  4. Likeness-instruction sanitization for the rendering prompt. When public-figure + public-role is licensed, the Layer 6 prompt may reference the figure by role and (for figures with prior cartoons in the conversation DB) by reference to prior renderings. For first-appearance figures, the prompt references by role only (“a senator at a podium” rather than “[Specific Name] at a podium”) to avoid model drift toward unauthorized photoreal likeness; the conversation DB is updated with this cartoon as the canonical first reference for the figure.

Output Formatting for This Layer

{
  per_figure_verdicts: [
    {
      name: "[figure name]",
      slug: "[entity slug]",
      verdict: "licensed" | "halt_review" | "remove_and_redraft",
      rationale: "[≤30-word reason]"
    }
  ],
  overall_decision: "proceed" | "halt_for_review" | "redraft_composition",
  prompt_reference_mode: "by_role_first_appearance" | "by_role_plus_prior_cartoons"
}

Invariant Check: Before proceeding to Layer 6, confirm: every named figure in the composition has a verdict; if any verdict is halt_review, the framework halts and emits the halt output; if any verdict is remove_and_redraft, the framework returns to Layer 3 with the figure removed.


LAYER 6: IMAGE RENDERING

Stage Focus: Construct the AI image-generation prompt from the cartoon recipe and submit to the primary linework model. Vectorize the output. Composite caption / banner / labels as vector text overlays per image spec §4.5.

Input: Cartoon recipe (composition + caption + license verdict) from Layers 3, 4, 5.

Output: Rendered cartoon as SVG with vector text overlays applied.

Processing Instructions

  1. Prompt construction. Build the full generation prompt from these components in order:

    • Visual-register vocabulary (image spec §6.3 Editorial Cartoon row): heavy cross-hatching · engraved aesthetic · single central allegorical figure · figure-ground hierarchy via outline weight · pure black masses with carved-out whites · banner with quotation · label-as-argument · butt-face caricature for propaganda figures · peanut gallery crowd · spectacled gopher in lower frame · in the lineage of Thomas Nast, Honoré Daumier, John Tenniel, Herblock, Pat Oliphant.
    • Universal positive vocabulary (image spec §6.2): hand-drawn · ink on cream paper · transparent background · linework dominant · no solid fill · varied pen technique · single accent stroke in burnt orange.
    • Composition spec from Layer 3: principal figure(s) with butt-face deployment + type-accessory; secondary figures with dignity rendering; gopher placement and activity; accent-stroke locus; banner placement; cartouche if flagged; object props.
    • Caricature-consistency references: for principal figures with prior cartoons in the conversation DB, include reference to the prior renderings as conditioning. The publication’s reference-image library (image spec §6.7 — LoC HarpWeek / Puck / Herblock; NYHS Keppler; Billy Ireland; V&A Tenniel) provides style anchors at Layer 3 conditioning; the prior-Hector-cartoons conditioning provides figure-consistency anchors.
    • Universal negative vocabulary (image spec §6.4): color fill · gradient · gradient shading · photorealistic · anime · manga · soft focus · lens flare · drop shadow · modern digital style · vector clip art · decorative cartoon · gag cartoon · text in image · embedded labels.
    • Forbidden caricature negative vocabulary (image spec §6.5): racialized caricature · physiognomic distortion · simian-Irish trope · anti-Catholic imagery · antisemitic visual conventions · gendered caricature · hypersexualized figure.
    • Editorial-cartoon-specific negative additions (image spec §6.6): light cartoon style · New Yorker single-line drawing.
  2. Likeness-prompt sanitization. Per Layer 5 verdict, public-figure + public-role figures may be referenced by role; the prompt must not include circumlocutions that direct the model toward a specific individual’s appearance when the individual is not in their public role. Strip any indirect-likeness instruction patterns (“the current occupant of X address”, “the billionaire who owns Y company”, etc.).

  3. Submit to primary linework model. Per image spec §4.6, the model is referenced by role (primary linework model); actual selection lives in the Ora model-priority interface. The framework calls the configured model. Record the exact model identifier returned by the service for the imageSchema’s ai_model field at Layer 8.

  4. Generation-failure handling. If the model returns an error, a content-policy rejection, or an unusable image (blank, corrupted):

    • Retry once with a simplified prompt variant (remove style-anchor references; keep composition spec). Record the attempt.
    • After two failures: halt with failure_reason: generation_failure. Escalate to publisher review with both prompt variants logged.
  5. Vectorization. Submit the raster output to the configured vectorization tool (potrace or autotrace per image spec §4.5). Apply CSS hooks: stroke="currentColor" for primary strokes; an accent class for the burnt-orange accent stroke. Confirm transparent background.

  6. Vector text overlay. Composite the caption, banner, and any in-image labels as vector text overlays at build time per image spec §4.5 step 4. The cartoon is generated without baked-in text; text is added at this step.

    • Caption: italic Georgia at the spec point size, in --text-muted color, single line, center-aligned beneath the image.
    • Banner (if present): italic Georgia, sized to the banner’s image-area placement.
    • Labels (if any, per image spec §6.1 label-as-argument): italic Georgia, weighted to the labeled object.
  7. Signature mark composite. Composite Hector’s hand-lettered signature mark “Hector Rentier” in the lower-right corner per image spec §5.1. Same signature across all cartoons.

Output Formatting for This Layer

{
  rendered_svg: "[path to vectorized SVG with text overlays applied]",
  generation_metadata: {
    ai_model: "[exact model identifier from service]",
    ai_prompt: "[≤200-character accurate prompt summary]",
    full_prompt: "[the complete prompt as submitted, for audit]",
    generation_timestamp: "[ISO-8601]",
    attempts: <integer>  // 1 or 2
  },
  text_overlays: {
    caption_applied: true,
    banner_applied: true | false,
    labels_applied: <integer>,
    signature_applied: true
  }
}

Invariant Check: Before proceeding to Layer 7, confirm: SVG file exists at the expected path; text overlays applied per the cartoon recipe; signature applied; ai_prompt summary accurately represents the full prompt (Prompt-Summary-Sanitization failure mode below); no text baked into raster.


LAYER 7: SELF-EVALUATION

Stage Focus: Score the rendered cartoon against the seven evaluation criteria with cited evidence in the rendered cartoon. Apply correction-trigger phrasing per PFF §2.7. Determine ship / revise / escalate per threshold.

Stage Focus: Self-evaluation per PFF §2.7. Penultimate layer.

Input: Rendered SVG + cartoon recipe + diagnosis + caption + composition spec from Layers 1–6.

Output: Per-criterion rubric scores (1–5) with cited evidence, plus ship / revise / escalate verdict.

Calibration warning (per PFF §2.7): Self-evaluation scores are systematically inflated. Research finds LLMs are overconfident in 84.3% of scenarios. A self-score of 4/5 likely corresponds to 3/5 by external evaluation standards. Score conservatively. Articulate specific uncertainties alongside scores.

Processing Instructions

For each of the seven evaluation criteria, in order:

  1. State the criterion name and number.
  2. Wait — verify the current rendered cartoon against this specific criterion’s rubric descriptions before scoring. [Explicit correction trigger.]
  3. Identify specific evidence in the rendered SVG that supports or undermines each score level. Reference the cartoon recipe and the rendered output by element (“the principal figure’s outline weight”, “the gopher’s spectacles”, “the caption’s word count”).
  4. Assign a score (1–5) with cited evidence.
  5. IF the score is below 3, THEN: a. Identify the specific deficiency with a direct reference to the deficient element. b. State the specific modification required to raise the score. c. Apply the modification (revise the cartoon recipe and re-render at Layer 6). d. Re-score after modification.
  6. IF the score meets or exceeds 3, THEN confirm and proceed to the next criterion.

After all criteria are evaluated:

  1. Aggregate verdict:

    • All scores ≥3 (after at most one revision attempt per criterion) → ship.
    • Any score remains at 1 after one revision attempt → halt with failure_reason: self_eval_below_threshold. Escalate to publisher review with the rubric scores and the revision attempt logged.
    • Any score remains at 2 after one revision attempt → halt with the same failure_reason. Escalate.
  2. Pairwise comparison (where possible). For criterion 1 (Visual signature compliance) and criterion 4 (Symbol-vocabulary consistency), compare the rendered cartoon against:

    • The reference-image library (Nast / Daumier / Tenniel / Herblock / Oliphant plates from image spec §6.7) for visual signature anchoring.
    • Prior published Hector cartoons (from the conversation DB) for symbol-vocabulary consistency. Cite which references the comparison was anchored against.

Output Formatting for This Layer

{
  per_criterion_scores: [
    {
      criterion_id: 1,  // through 7
      criterion_name: "[Visual signature compliance | Caricature fidelity | etc.]",
      score: <integer 1–5>,
      cited_evidence: ["[specific element in cartoon]", ...],
      uncertainty_note: "[specific uncertainty if any]" | null,
      revision_applied: true | false,
      pre_revision_score: <integer> | null,
      pairwise_anchor: "[reference image / prior cartoon ID]" | null
    }
  ],
  aggregate_verdict: "ship" | "revise_again" | "escalate",
  rationale: "[≤50-word summary]"
}

Invariant Check: Before proceeding to Layer 8, confirm: all seven criteria scored with cited evidence; calibration warning applied (no score is taken without “Wait — let me verify”); revision attempts logged; aggregate verdict is one of ship / revise_again / escalate.


LAYER 8: ATTRIBUTION + OUTPUT FORMATTING + SHIP

Stage Focus: Apply final visual-suitability checks, assemble the imageSchema-validated object, write the columns content-collection entry, update the conversation database. Final layer.

Input: Rendered SVG + self-eval verdict (ship) from Layer 7 + diagnosis + caption + cluster sources from prior layers.

Output: A columns content-collection markdown file at ~/sites/mainstreetindependent/src/content/columns/[slug].md plus a conversation-database update event.

Processing Instructions

  1. Final visual-suitability sweep. Run the four hard checks one more time on the rendered SVG, even though Layer 7 self-eval covered them:

    • Forbidden caricature check: No racialized / anti-Catholic / anti-Irish / antisemitic / misogynist visual convention present per image spec §5.6 (as simplified 2026-05-08).
    • Defamatory composite check: No juxtaposition of unrelated subjects creating a misleading implication when viewed alongside the cartoon’s caption / context.
    • Contextual misframing check: The cartoon’s content matches the cluster’s documentary context (cluster sources support what the cartoon shows).
    • Style-register match check: The rendered cartoon is the editorial-cartoon register, not photographic / illustrated / diagrammatic. Heavy cross-hatch, allegorical, single-panel, ≤15-word caption, recurring symbol vocabulary deployed. Any failure → halt with failure_reason: visual_suitability_final_check. Escalate.
  2. Attribution assembly (Tier 3 per image spec §9.3).

    • credit: Hector Rentier.
    • source: ai_generated.
    • ai_model: the exact model identifier from Layer 6.
    • ai_prompt: ≤200-character accurate summary (verbatim from Layer 6; Prompt-Summary-Sanitization failure mode prevents cleanup).
    • disclosure: null. Tier 3 voices do not surface AI-generation disclosure to readers per image spec §9.3 — readers engage with the persona’s declared perspective; the production mechanism is internal metadata. The metadata is preserved in the imageSchema for audit.
    • license: CC0 (AI-generated by Main Street Independent).
    • license_url: https://creativecommons.org/publicdomain/zero/1.0/.
    • alt: descriptive alt text per WCAG 2.1 — describes what the image shows, not what the article claims. Maximum 125 characters. For editorial cartoons, describes the visual metaphor or scene, not the political interpretation. Example: “Cartoon: a butt-face pundit at a microphone above a peanut-gallery crowd; the gopher in the lower frame chews a foundation labeled ‘public good’.”
    • caption: the caption text from Layer 4 (the publishable caption, ≤15 words).
  3. Slug generation. Slug pattern: [YYYY-MM-DD]-[short-diagnosis-keywords]. Example: 2026-05-08-private-equity-emergency-room. Lowercase, hyphenated, kept short for URL legibility.

  4. Columns content-collection entry assembly. Write to ~/sites/mainstreetindependent/src/content/columns/[slug].md:

---
headline: "[1-line cartoon title — typically the caption or a short variant]"
pen_name: hector-rentier
lede: "[the diagnosis sentence from Layer 2]"
publish_date: "[ISO-8601 date]"
image:
  url: /cartoons/[slug].svg
  alt: "[alt text from step 2]"
  caption: "[caption from Layer 4]"
  credit: "Hector Rentier"
  source: ai_generated
  ai_model: "[model identifier]"
  ai_prompt: "[≤200-char summary]"
  license: "CC0 (AI-generated by Main Street Independent)"
  license_url: "https://creativecommons.org/publicdomain/zero/1.0/"
sources: [ ...cluster.sources... ]
atomic_claims:
  - claim_id: "diagnosis-1"
    text: "[diagnosis sentence]"
    claim_type: derived_claim
    subject_entities: [ ...named figures from composition... ]
    predicate: "[predicate from diagnosis]"
    object: "[object from diagnosis]"
    source_ids: [ ...documentary_basis source_ids from Layer 2... ]
    hedge: appears  // diagnosis is interpretive; "appears" is the
                    // appropriate hedge for cartoon-form indictment
    corroboration_level: [from cluster source set]
metadata:
  framework_version: "0.1.0"
  generation_timestamp: "[ISO-8601]"
  source_cluster_id: "[cluster_id]"
  consensus_floor_version: "[from Reference — MSI Consensus Values Floor.md]"
  publication_mindspec_version: "0.2.3"  // Hector's Mind file version
  ai_disclosure: "null (Tier 3 — pen-name byline)"
  human_review_status: not_triggered
  primary_entities: [ ...from cluster... ]
  primary_themes: [ ...from cluster... ]
  floor_values_engaged: [ ...from cluster... ]
draft: false
---

[Body: the caption, repeated for accessibility readers and for grep-discovery.
The image is the body of the column; the prose surface is the caption.
For paired-mode cartoons, the body may also include a one-line pointer to
the paired column under another voice's byline.]
  1. Schema validation. Validate the assembled object against columns schema in src/content/config.ts. Note: pen_name enum currently is ['malcolm-little-king', 'mary-magdalena', 'phukher-tarlson']; this framework requires hector-rentier to be added to the enum. Schema update is a Configuration Files Required item below; without it, the framework’s output will not validate and the publish step will fail.

  2. Conversation database update. Emit an event to the publication’s conversation database / vector store with:

    • The cartoon’s slug + publish date + diagnosis + composition recipe (for caricature-consistency lookup by future cartoons drawing the same recurring figures);
    • The corpus citation if any (corpus_entry_id + use date + context — for over-deployment cooldown);
    • The cluster’s source set (for cross-cartoon evidentiary tracking);
    • The named figures depicted (for caricature stability across appearances).
  3. Build trigger. If the publication is in operational mode, send a build trigger to the Astro static-site pipeline so the Cloudflare cache picks up the new column. (Out of framework scope when the publication is not yet deployed.)

Output Formatting for This Layer

{
  output_path: "~/sites/mainstreetindependent/src/content/columns/[slug].md",
  cartoon_url: "/columns/[slug]",
  schema_validation: "passed" | "failed",
  conversation_db_update: "emitted",
  build_trigger: "sent" | "deferred"
}

Invariant Check: Final invariant before exit: file exists at output_path; schema validates; conversation_db update event emitted; if any of these fail, the framework halts with failure_reason: ship_failure and escalates.


NAMED FAILURE MODES

Cross-cutting failure modes spanning multiple layers, with detection and prevention strategies.

Diagnosis-Without-Documentation

  • Mechanism: The cartoon’s argument depends on inference about the target’s intent or motivation rather than on documented behavior in the cluster’s source set. Most common at Layer 2 when the diagnosis is formed before the documentary basis is checked.
  • Detection: Layer 2’s documentary-basis check; Layer 7 criterion 5 (TRUTH) at score 1 or 2.
  • Prevention: Layer 2 requires documentary_basis to be a non-empty subset of cluster.sources before the diagnosis can advance. The diagnosis sentence is composed after the documentary basis is identified, not before.

Caricature-Slip

  • Mechanism: Butt-face caricature deployed on a person not in propaganda role (a family member of a named figure, an audience member, an ordinary working person), or on a dignity-class member as identity-marker rather than role-marker. Most common at Layer 3 when the composition crowds figures and the role-marking discipline blurs.
  • Detection: Layer 3’s HARMLESSNESS bystander-dignity check; Layer 5 composition-level dignity check; Layer 7 criterion 7 (forbidden caricature).
  • Prevention: Layer 3’s per-figure role check is explicit (each principal figure carries a role field); secondary figures explicitly marked bystander or dignity_class_member with dignity_rendering specifications.

Caption-Bloat

  • Mechanism: Caption exceeds 15 words; or caption is explanatory (“This cartoon shows…”); or caption is cute (“Yikes!”); or caption is exhortative (“Vote against X”).
  • Detection: Layer 4’s hard 15-word cap; Layer 4’s prohibited-pattern check; Layer 7 criterion 3 (caption / banner discipline).
  • Prevention: Layer 4 enforces word-count, register-test, and prohibited-pattern check before emitting the caption. Hard refuse at 16+ words; truncation or revision required.

Corpus-Over-Deployment

  • Mechanism: Same Orwell or Carlin or Vonnegut line used three weeks running such that the corpus’s effect dilutes through repetition.
  • Detection: Layer 4’s conversation-DB query for prior corpus citations; reader recognition over time.
  • Prevention: Layer 4’s cooldown rules (30-day skip; 90-day hedge). The conversation DB is the authoritative log; no separate corpus-citation log file is maintained per the 2026-05-08 simplification.

Stale-Frame Drift

  • Mechanism: Cartoon recycles last decade’s apparatus diagnosis without adapting to this week’s specific operation. The apparatus is operating differently this week than it was in 2010 or 2018; the diagnosis must reflect the current operation.
  • Detection: Layer 7 criterion 6 (WITNESS); Layer 2 brother-as-reader test if the diagnosis sounds like a general apparatus-lament.
  • Prevention: Layer 2 requires the diagnosis to name a specific operation in this week’s cluster; the documentary basis must be from this week’s source set, not from a generalized historical reference.

Bitterness-as-Engine

  • Mechanism: Cartoon’s argument drifts from “the apparatus is operating thus” to “the apparatus has won and we should give up.” Engine has converted from JUSTICE / PROTECTIVE-LOVE / CRAFT to BITTERNESS.
  • Detection: Layer 7 criterion 6 (WITNESS); Mind file §4 BITTERNESS suppression at weight 1 — load-bearing exclusion.
  • Prevention: Layer 2’s brother-as-reader test catches this in argument formation; Layer 7’s criterion-6 self-eval catches it in the rendered cartoon. The Auditor’s quarterly BITTERNESS-containment review is the corpus-level backstop.

Both-Sides Institutionalist Drift

  • Mechanism: Cartoon adopts “everyone is wrong” / “maybe everyone is at fault” framing.
  • Detection: Layer 7 criterion 6 (WITNESS); Mind file §3.4 explicitly lists this as anti-work.
  • Prevention: Layer 2’s diagnosis must name a specific operation by a specific actor or class; vague “everyone” framings are halted at Layer 2 with failure_reason: both_sides_drift.

Despair-Cynic Drift

  • Mechanism: Cartoon argues nothing matters / the apparatus is invincible / there is no point in seeing.
  • Detection: Layer 7 criterion 6 (WITNESS); Mind file §4 DESPAIR suppressed at 2 (anti-work).
  • Prevention: Hector’s HOPE at 5 (“exposure still matters”) is operational at Layer 2; cartoons whose argument is “give up” are halted.

Indirect-Likeness Instruction

  • Mechanism: A real individual’s name is removed from the prompt but the likeness is directed through circumlocutions (“the current occupant of 1600 Pennsylvania Avenue”, “the billionaire who owns the social media platform”, “the senator from the swing state with the famous filibuster”).
  • Detection: Layer 5’s likeness-instruction sanitization; Layer 8’s final visual-suitability sweep.
  • Prevention: Layer 5’s per-figure verdict gates the prompt; the prompt references public figures by role only on first appearance and by reference to prior cartoons (in conversation DB) on subsequent appearances. Circumlocution patterns are stripped at Layer 6 prompt construction.

Symbol-Vocabulary Inconsistency

  • Mechanism: Gopher rendered differently across cartoons; Peanut Gallery silhouettes inconsistent; multiple accent strokes; signature-mark drift.
  • Detection: Layer 3’s conversation-DB query for prior renderings; Layer 7 criterion 4 (symbol-vocabulary consistency); reader recognition over time.
  • Prevention: Layer 3 explicitly references prior cartoons for the gopher and recurring figures; Layer 6 prompt construction includes prior-rendering references as conditioning; the one-accent-stroke hard rule is enforced at Layer 3.

Recurring-Figure Drift

  • Mechanism: A recurring named figure (a senator who appears in cartoons over months) drawn inconsistently across cartoons such that readers do not recognize the same figure across appearances.
  • Detection: Layer 3’s conversation-DB query for prior cartoons of the figure; Layer 7 criterion 2 (caricature fidelity).
  • Prevention: Layer 3’s per-principal-figure prior_cartoon_references field carries forward prior renderings; Layer 6 prompt includes the prior renderings as conditioning. Per the 2026-05-08 simplification, the conversation database is the source of truth — no separate per-figure reference-image library is maintained.

Prompt-Summary-Sanitization

  • Mechanism: The ai_prompt summary recorded in the imageSchema is cleaned up to obscure what the model was actually instructed to produce. Especially relevant when an early prompt contained an instruction that was later corrected (e.g., a likeness instruction stripped at Layer 5).
  • Detection: Layer 8’s accuracy check on the prompt summary against the full prompt logged at Layer 6.
  • Prevention: The full prompt is logged at Layer 6; the ≤200-char summary is verified against the full prompt at Layer 8 before the imageSchema ships.

Schema-Enum-Mismatch

  • Mechanism: The columns content-collection schema does not include hector-rentier in the pen_name enum; the framework’s output fails schema validation at Layer 8.
  • Detection: Layer 8’s schema validation step fails immediately.
  • Prevention: Schema update — hector-rentier added to the pen_name enum in src/content/config.ts — is a Configuration Files Required item. Without it, the framework cannot ship its output. This is a one-time setup step.

Failure Mode Coverage Matrix

Failure modeDetection layer(s)Prevention strategy
Diagnosis-Without-DocumentationLayer 2, Layer 7 (crit 5)Documentary-basis required before diagnosis advances
Caricature-SlipLayer 3, Layer 5, Layer 7 (crit 7)Per-figure role check; bystander-dignity rendering specs
Caption-BloatLayer 4, Layer 7 (crit 3)Hard 15-word cap; prohibited-pattern check
Corpus-Over-DeploymentLayer 430/90-day cooldown via conversation-DB query
Stale-Frame DriftLayer 7 (crit 6)Diagnosis must name this-week’s operation
Bitterness-as-EngineLayer 7 (crit 6)Brother-as-reader test; Mind file §4 suppression
Both-Sides Institutionalist DriftLayer 2, Layer 7 (crit 6)Diagnosis must name specific actor / class
Despair-Cynic DriftLayer 7 (crit 6)HOPE-at-5 operational; “give up” framings halted
Indirect-Likeness InstructionLayer 5, Layer 8Likeness-instruction sanitization; circumlocution-strip
Symbol-Vocabulary InconsistencyLayer 3, Layer 7 (crit 4)Prior-cartoon conditioning; one-accent-stroke rule
Recurring-Figure DriftLayer 3, Layer 7 (crit 2)Conversation DB as source of truth for figure consistency
Prompt-Summary-SanitizationLayer 8Full prompt logged at Layer 6; verification at Layer 8
Schema-Enum-MismatchLayer 8One-time schema update: hector-rentier added to enum

Configuration Files Required

FilePurposeStatus
Reference — MSI Hector Rentier Mind.mdVoice contractdrafted v0.2.2 (2026-05-08)
Reference — MSI Image Style Specification.mdVisual identitydrafted v1.1 (2026-05-08)
Reference — Hector Rentier Quote Corpus.mdCaption / banner corpusdrafted v1.1 (2026-05-07); 6 entries flagged for v1.2 verification
Reference — MSI Bad-Faith Techniques Catalog.jsonTechnique catalogdrafted; cited by ID at Layer 2
Reference — MSI Editorial Router.mdRouting source; §11 routing inventorydrafted v0.2.4 (2026-05-08)
Reference — MSI Consensus Values Floor.mdFloor every output is held abovedrafted
src/content/config.ts columns schema pen_name enumCurrently ['malcolm-little-king', 'mary-magdalena', 'phukher-tarlson']; requires hector-rentier addedpending — required before framework’s output validates
Conversation database / vector storeCaricature consistency + corpus over-deployment + recurring-figure trackingpartial — operational for some collections; Hector’s collection is the published-cartoon portfolio (W11 portfolio rollout)
AI image-generation model (primary linework role)Configured in Ora model-priority interfacepending publisher selection
Vectorization tool (potrace / autotrace)Raster-to-SVG conversionconfigured per image spec §4.5

Pipeline Integration

Upstream — Editorial Router

The Editorial Router routes news clusters to Hector per the routing inventory at §11 of Reference — MSI Editorial Router.md. Routing decision is grounded in §1.2 distinguishing-from and §10 specialty-domain of Reference — MSI Hector Rentier Mind.md per methodology §3. The framework receives the cluster directly; no pre-processing by other voices’ frameworks.

Lateral — other voices’ frameworks (paired mode)

When the Router routes Hector alongside another voice (paired mode), the framework runs in parallel with the paired voice’s framework against the same cluster. The cartoon and the column publish under their respective bylines; coordination is editorial (the Router’s pairing decision), not co-authoring. Most-frequent pairings: Phukher Tarlson (text-confession + visual-indictment); high-frequency Mark Paulson / Joanna Rivera Blackwell / Big Jim Zebedee (lived-experience demographic + visual indictment).

Downstream — Astro static-site builder

Layer 8’s columns content-collection entry is consumed by the Astro build pipeline. The cartoon publishes at the columns URL (/columns/[slug]/) under Hector’s pen_name: hector-rentier byline. The opinion landing page at /opinion/hector-rentier/ lists Hector’s columns over time.

Downstream — Conversation database / vector store

Layer 8 emits an update event with the cartoon’s slug, diagnosis, composition recipe, corpus citation (if any), depicted figures, and cluster sources. The conversation DB indexes these for caricature-consistency lookup, corpus over-deployment cooldown, and recurring-figure tracking. The DB is the framework’s only memory across invocations; no separate companion files are maintained (per the 2026-05-08 simplification).

Lateral — Source-correction monitor

When the publication’s source-correction monitor identifies a correction affecting a cluster Hector has drawn against, the monitor may invoke this framework in a future revision mode (not specified at v0.1.0; would be added as a mode in a later version).


What This Framework Is Not

  • Does not select clusters. Selection is news-cluster-selector (upstream of the Editorial Router).
  • Does not decide which voice handles a cluster. Routing is the Editorial Router’s job.
  • Does not produce illustrated-register images for other voices. The illustrated register belongs to the cross-voice News Image Generator infrastructure framework. Hector owns the editorial-cartoon register exclusively.
  • Does not produce video, animation, or live performance. Single-panel still images only.
  • Does not produce parody. Parody is Diklis Chump’s lane.
  • Does not answer reader correspondence as a primary output. Hector answers some reader email per Mind file §8; that’s an async correspondence-handler framework job, not this framework.
  • Does not produce op-eds, explainers, or analytical prose. Hector’s output is editorial cartoons; the cartoon is the form.

Cross-References

  • Reference — MSI Hector Rentier Mind.md v0.2.2 — voice contract.
  • Reference — MSI Image Style Specification.md v1.1 — visual identity (§5 the editorial-cartoon register).
  • Reference — Hector Rentier Quote Corpus.md v1.1 — caption / banner corpus.
  • Reference — MSI Bad-Faith Techniques Catalog.json — technique catalog.
  • Reference — MSI Editorial Router.md v0.2.4 — routing source; §11 routing inventory.
  • Reference — MSI Consensus Values Floor.md — floor specification.
  • Reference — MSI Voice Architecture Methodology.md v1.1.0 — Tier-3 framework anatomy this framework conforms to.
  • Framework — Process Formalization.md — meta-framework defining the structural anatomy this framework follows.
  • Framework — News Image Generator.md — cross-voice infrastructure framework for the illustrated register; not used by Hector. Documented for clarity on the boundary.
  • Reference — MSI Tracker.md — Workstream 4 row 11 (Hector Rentier); Workstream 11 (Visual journalism).