{
  "code": "S31",
  "name": "Two stories",
  "shape": "story-pair",
  "family": "Lists and comparisons",
  "fits": "Two related story angles under one title, each in an equal card: number, headline, premise, angle, and where it runs.",
  "use_when": "Two distinct angles that serve one theme and must read as equals. Do not let one card balloon.",
  "slots": [
    {
      "name": "eyebrow",
      "holds": "what the pair is",
      "budget": "1-3 words"
    },
    {
      "name": "title",
      "holds": "the shared theme, one italic mint word",
      "budget": "under 8 words"
    },
    {
      "name": "stories",
      "holds": "2 x (mono story number, Noto emoji at right (decks only), headline, premise, angle, ruled \"runs in\" line at the foot)",
      "budget": "headline under 8 words, premise and angle under 30 words each"
    }
  ],
  "columns": 2,
  "density": "standard",
  "surface": "berry",
  "works_on": [
    "deck",
    "page"
  ],
  "library": "Hoffman",
  "dir": "S31-two-story",
  "semantic": {
    "audience_question": "What are the two story angles, and where would each run?",
    "intent": "Compare two editorial propositions through premise, angle and destination.",
    "reasoning_relation": "parallel story proposals",
    "message_pattern": "[Angle]: [premise], [audience relevance], [evidence] and [route to publication].",
    "required_content": [
      "A shared theme with two genuinely different story questions.",
      "Evidence or a reporting plan for each premise.",
      "Appropriate intended formats/outlets without implying acceptance."
    ],
    "narrative_positions": [
      "context",
      "explanation",
      "evidence: choose only when the page supports the surrounding argument"
    ],
    "requires_before": [
      "Establish the theme, audience need and evidence available."
    ],
    "enables_after": [
      "Choose an angle and commission its reporting or show the wider content plan."
    ],
    "slot_roles": {
      "eyebrow": "Name the pair’s role in the plan.",
      "title": "The shared question or theme.",
      "stories": "Two complete pitches: headline, premise, reporting angle and proposed destination; target outlets are intentions, not booked placements."
    },
    "avoid_when": [
      "Two identical messages with different headlines",
      "A measured results comparison"
    ],
    "layout_specific_contract": "Two related story angles under one title, each in an equal card: number, headline, premise, angle, and where it runs.",
    "provenance": {
      "basis": "interpretation of the existing layout and slot contracts",
      "review": "Tessel model-authored guidance; implementation approved by Nic, 2026-10-10",
      "corpus_evidence_status": "not yet established",
      "guide": "../SEMANTICS.md"
    },
    "reader_outcome": "Compare two editorial propositions through premise, angle and destination.",
    "matching": {
      "audience_question": "What are the two story angles, and where would each run?",
      "reader_outcome": "Compare two editorial propositions through premise, angle and destination.",
      "reasoning_relation": "parallel story proposals",
      "content_shape": {
        "composition": "Two related story angles under one title, each in an equal card: number, headline, premise, angle, and where it runs.",
        "selected_state": "Two related story angles under one title, each in an equal card: number, headline, premise, angle, and where it runs.",
        "density": "standard",
        "columns": 2,
        "column_note": "Base metadata only; selected option can replace the base geometry."
      },
      "required_slots": [
        {
          "name": "eyebrow",
          "reader_question": "What kind of content or argument section am I reading?",
          "semantic_role": "Name the pair’s role in the plan.",
          "content_unit_count": {
            "min": 1,
            "max": 1,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · eyebrow · what the pair is]",
          "layout_budget": {
            "authored": "1-3 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "eyebrow",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              2
            ]
          }
        },
        {
          "name": "title",
          "reader_question": "What are the two story angles, and where would each run?",
          "semantic_role": "The shared question or theme.",
          "content_unit_count": {
            "min": 1,
            "max": 1,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · title · the shared theme, one italic mint word]",
          "layout_budget": {
            "authored": "under 8 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "title",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              4
            ]
          }
        },
        {
          "name": "stories",
          "reader_question": "What does the stories contribute to this page’s reader outcome?",
          "semantic_role": "Two complete pitches: headline, premise, reporting angle and proposed destination; target outlets are intentions, not booked placements.",
          "content_unit_count": {
            "min": 2,
            "max": 2,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · stories · 2 x (mono story number, Noto emoji at right (decks only), headline, premise, angle, ruled \"runs in\" line at the foot)]",
          "layout_budget": {
            "authored": "headline under 8 words, premise and angle under 30 words each",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "stories",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              84
            ]
          }
        }
      ],
      "rejection_constraints": [
        "The same angle rewritten twice, or destinations implied to be commissioned without confirmation.",
        "A topic list with no story, invented news hooks or two versions of the same angle."
      ],
      "option_guidance": {
        "option": "default",
        "composition_delta": "Two related story angles under one title, each in an equal card: number, headline, premise, angle, and where it runs.",
        "semantic_change": "retains base content relationship; changes presentation or disclosure",
        "matching_instruction": "Select S31 default when the supplied material answers “What are the two story angles, and where would each run?” through parallel story proposals. Respect this state: Two related story angles under one title, each in an equal card: number, headline, premise, angle, and where it runs."
      },
      "provenance": {
        "status": "inferred composition evidence",
        "author_intent": "not independently confirmed",
        "basis": [
          "retained source composition where available",
          "authored layout and slot contracts",
          "static implementation inspection"
        ],
        "source_visual_count": 1,
        "source_visual_sha256": [
          "c9a8d96f6fef1ce6c3432180076051c1771a8ff860d2df0df514a7bf37181eb0"
        ],
        "source_export": "private source images remain outside this draft site",
        "markup_sha256": "b25438b112fb1f456ee286f9a4be10a6c819cb778703f80a66dd6b27075f22a8",
        "limits": [
          "Static parsing inventories authored nodes; it does not certify rendered visibility, responsive fit or interactive state.",
          "Budgets are authored layout guidance, not a content-writing limit or proof of fit.",
          "Matching guidance is a draft inference; it does not establish facts, endorsement, causation or source author intent."
        ]
      },
      "adaptation_rules": [
        "Choose by audience question, reasoning relation and required content before aesthetic preference.",
        "Supply every required semantic role; retain visible unknowns as labelled real-content placeholders.",
        "A number needs source, scope and units; a quotation needs faithful wording and attribution.",
        "Do not infer importance from area, colour, depth or movement unless the content explicitly defines that encoding.",
        "Keep colour token roles, structural objects, licences and source records; changing content does not authorize changing them."
      ]
    },
    "rejection_constraints": [
      "The same angle rewritten twice, or destinations implied to be commissioned without confirmation.",
      "A topic list with no story, invented news hooks or two versions of the same angle."
    ],
    "markup_inventory": {
      "file": "spread.html",
      "sha256": "b25438b112fb1f456ee286f9a4be10a6c819cb778703f80a66dd6b27075f22a8",
      "method": "static lxml markup plus authored option description; no rendered-visibility claim",
      "all_markup_slot_counts": {
        "eyebrow": 1,
        "title": 1,
        "stories": 1,
        "emoji": 1
      },
      "slot_evidence": {
        "eyebrow": [
          {
            "tag": "span",
            "classes": "eyebrow",
            "sample_word_count": 2,
            "repeated_children": 0
          }
        ],
        "title": [
          {
            "tag": "h2",
            "classes": "head",
            "sample_word_count": 4,
            "repeated_children": 1
          }
        ],
        "stories": [
          {
            "tag": "div",
            "classes": "pair",
            "sample_word_count": 84,
            "repeated_children": 2
          }
        ],
        "emoji": [
          {
            "tag": "span",
            "classes": "accent",
            "sample_word_count": 1,
            "repeated_children": 0
          }
        ]
      },
      "option_selectors": [],
      "linked_implementation": [
        {
          "file": "../spreads.css",
          "sha256": "32da94472b0c9131e4d5dae7d5bf0498b09202a9e66294b4e4f23e6ddfbf37ba"
        },
        {
          "file": "../spread.js",
          "sha256": "3d99948b83f750bd4ae95dac08e3e50a395de7c149c90a6f1a1c0ea36a2634a4"
        }
      ]
    },
    "variations": {},
    "narrative_profile": {
      "central_point": "Two related story angles approach one shared issue from different directions.",
      "communication_job": "Demonstrate how a theme can sustain distinct publishable stories.",
      "audience_value": "Explanation and choice: lets a commissioning reader assess premise, angle and intended outlet separately for each story.",
      "reading_path": [
        "Read the common theme.",
        "Read each numbered card as a complete pitch: headline, premise, angle and destination.",
        "Compare the angles for distinct contribution, not just different wording."
      ],
      "adaptation": {
        "required_inputs": [
          "A shared theme with two genuinely different story questions.",
          "Evidence or a reporting plan for each premise.",
          "Appropriate intended formats/outlets without implying acceptance."
        ],
        "slot_guidance": {
          "eyebrow": "Name the pair’s role in the plan.",
          "title": "The shared question or theme.",
          "stories": "Two complete pitches: headline, premise, reporting angle and proposed destination; target outlets are intentions, not booked placements."
        },
        "can_change": [
          "Story topics, angles and proposed formats.",
          "Order without implying priority unless explained."
        ],
        "must_survive": [
          "Premise, angle and target remain distinct.",
          "Each card contributes something different.",
          "Proposed publication is not reported as secured."
        ]
      },
      "worked_example": {
        "fictional": true,
        "scenario": "Fictional repair cooperative proposal; all events, people and evidence are invented teaching material.",
        "slot_fills": {
          "eyebrow": "Reporting ideas",
          "title": "What makes local repair dependable?",
          "stories": [
            "01 The appointment before the appointment | Premise: Parts checks may shape whether a repair can begin. | Angle: Follow one proposed booking from enquiry to readiness decision. | Runs in: fictional service explainer, proposed.",
            "02 When repair is the wrong answer | Premise: Some faults make replacement safer or more practical. | Angle: Explain the decision criteria using cleared examples. | Runs in: fictional consumer guide, proposed."
          ]
        },
        "reasoning": "The first story explains readiness; the second sets honest limits. Together they develop trust through operational detail, not repeated promotional claims.",
        "qualification": "Fictional teaching example only. Proposed benefits and results are not verified; replace with authorised material for a real use."
      },
      "narrative_fit": {
        "before": "Establish the theme, audience need and evidence available.",
        "after": "Choose an angle and commission its reporting or show the wider content plan.",
        "good_uses": [
          "Editorial planning",
          "Two complementary campaign angles",
          "A choice of concrete stories"
        ],
        "poor_fits": [
          "Two identical messages with different headlines",
          "A measured results comparison"
        ]
      },
      "evidence": {
        "observations": [
          "Viewed source: two equal cards each contain a headline, premise, explicit angle and target-publication line.",
          "Current HTML and active slot contract were inspected."
        ],
        "interpretations": [
          "The guidance interprets the layout’s communication affordances; it does not assert source-author intent."
        ],
        "not_verified": [
          "Original author intent, surrounding source sequence, sample factual claims and persuasion effects are not independently verified."
        ],
        "references": [
          "02_product/spreads/S31-two-story/source.webp",
          "dist/S31-two-story/spread.html",
          "dist/S31-two-story/spread.json",
          "https://github.com/neekchan/hoffman-agency-design-system/blob/main/templates/deck/Deck.dc.html"
        ]
      },
      "review": {
        "status": "reviewed",
        "basis": "Viewed retained source capture and inspected current markup/slot contract; reviewed reasoning and example mapping. This is layout-contract review, not source-intent confirmation."
      },
      "variation_relationship": "base"
    }
  },
  "options": [],
  "also_seen_in": [],
  "source": {
    "ref": "Hoffman L18 Two-story",
    "url": "https://github.com/neekchan/hoffman-agency-design-system/blob/main/templates/deck/Deck.dc.html"
  }
}
