
Mira Luodin lapset – nimet, iät ja Urho-pojan sydänpysähdys
But I need to wrap all content inside
Also check that the snapshot block has exactly 4 cards with class n24-card-num 1-4. It does: 1,2,3,4.
Gate 2: Contract coverage. Must cover all questions in execution_directives.must_cover_questions. Those are: “Montako lasta Mira Luodilla on?”, “Minkä ikäisiä Mira Luodin lapset ovat?”, “Kuka lapsi laulaa Tässäkö tää oli -kappaleella?”, “Mihin Mira Luodin isä kuoli?”, “Keitä ovat Mira Luodin lasten isät?” All appear as H2 or H3. Good.
Gate 3: Claim = source. Every
Check timeline list: each
Also check confirmed-facts list in clarity section: it has items with no source anchors. For example “Lasten lukumäärä (3)” – no source. Need to add. Same for others. The instruction says “must have named source anchor” for confirmed-list. I need to add sources to each
Gate 4: Fact lock vs verified_facts. The verified_facts array is empty, so no changes.
Gate 5: FAQ dedup. FAQ items must not have >85% lexical overlap with H2/H3 or same question. The FAQ has many questions. Check overlap. For example “Milloin Mira Luodin Urho-pojan sydän pysähtyi?” vs H2? There is no H2 with that exact question. H2s are different. “Mistä tiedettiin Mira Luodin lapsen laulavan hitillä?” is similar to H2 “Kuka lapsi laulaa Tässäkö tää oli -kappaleella?” but not identical. The H2 asks “kuka”, FAQ asks “mistä tiedettiin”. Not >85% overlap. OK. “Miten Mira Luoti on käsitellyt isänsä menetystä?” vs H2 “Mihin Mira Luodin isä kuoli?” – different. “Onko Mira Luoti jakanut kuvia lapsistaan?” – no H2. “Mitä mieltä Mira Luoti on lasten julkisuudesta?” – no H2. “Kuinka usein Mira Luoti esiintyy lastensa kanssa julkisesti?” – no H2. “Missä Mira Luodin lapset asuvat?” – no H2. “Onko Mira Luodilla poika ja tytär?” – no H2. “Kuinka monta poikaa ja tytärtä Mira Luodilla on?” – no H2. No dedup needed. Minimum 5, we have 10, good.
Gate 6: Link hygiene. Internal links: there are internal link dataset provided: Angelina Jolie and Jenni Poikelus. But the raw article doesn’t include them. I need to add internal links according to the contract? The contract had “internal_links_plan” with count 4, but the raw article doesn’t have them. The gate says “Internal (site domain or /): strip target/rel. External: ensure target=”_blank” rel=”noopener nofollow”. Also each external URL at most once. Check external links: many links to Wikipedia, IS, MTV. Some are repeated: e.g., Wikipedia link appears many times. The gate says “Each external URL at most once.” So I need to remove duplicate external URLs. But that would break many source citations. The instruction says “Each external URL at most once. Max 3 per domain.” That is strict. But the article heavily cites Wikipedia multiple times. I need to use the same URL only once, and for other citations use different URLs or anchor text without link? But the gate requires source anchor for every claim. I think the intent is to avoid link spam. I’ll ensure that each distinct URL appears only once. For Wikipedia, I can use the same URL but with different anchor text? The gate says “Each external URL at most once” meaning the href value cannot repeat. So I need to use different Wikipedia URLs? There is only one Wikipedia page. So I can only link to it once. For other citations, I need to use other sources or paraphrase. But the article has many facts from Wikipedia. This is problematic. Perhaps the gate is intended for the final output should not have duplicate links. I can use the same URL but with different anchor text? The spec says “Each external URL at most once.” That is clear. I need to reduce to one link per URL. For the remaining Wikipedia citations, I can either remove the link and keep the text, or use a different source. Since research notes have other sources (like Yle, MTV), I might replace some Wikipedia citations with those. But the raw article already uses only Wikipedia for those facts. I could keep the first occurrence and for subsequent, remove the tag but keep the text. However, the gate 3 requires a named source anchor for each claim. So I would be violating. Alternatively, I can use the same Wikipedia URL but with different anchor text? The href is the same, so it’s the same URL. I think it’s safer to reduce to one Wikipedia link and for other claims, if no alternative source, I can keep the text “Wikipedia (fi)” without a link. But gate 3 says “named source anchor”. The anchor might be just text without href? The instruction says “must have named source anchor” meaning a clickable link? It says “wrap as anchor”. So likely need a link. I’ll leave multiple Wikipedia links as is for now, but later note that the gate requires uniqueness. I’ll adjust: keep only the first Wikipedia link, and for subsequent ones, replace with text “Wikipedia (fi)” and remove the tags. But that might break the source requirement. Another approach: use anchor with different href? There isn’t another. I’ll proceed by keeping only one Wikipedia link and for others, I’ll replace with a reference to the same source but without link, assuming the gate’s primary concern is duplicate URLs. I’ll do that.
Also external links must have target=”_blank” rel=”noopener nofollow”. The raw article already has those. Good.
Internal links: The raw article has no internal links. The contract says internal_links_plan count=4. But the user provided an internal link dataset. I need to add internal links. I’ll add two internal links as per dataset: one for “Angelina Jolie Lapset” and one for “Jenni Poikelus Puoliso”. They should be placed naturally. Also strip target/rel for internal. I’ll add them in the “Related” section or in text.
Gate 7: JSON-LD. Must have two scripts: NewsArticle and FAQPage. Already present. Need to update datePublished to today’s ISO (2025-04-08? Actually today is 2025-04-09 maybe? The date in raw is 2025-04-08. I’ll use that or adjust to today. The instruction says “today’s ISO”. I’ll set to current date. Also need to add dateModified same. Also publisher with logo. The raw has publisher “Mediankymppi” but no logo. I’ll add logo URL. Also mainEntityOfPage with @id. Need to build canonical URL from website + slug. Website is https://xn--mediankym-02ad.fi, slug is “mira-luoti-lapset”? The article is about Mira Luotin lapset. I’ll assume the slug is “mira-luoti-lapset”. Also strip author if matches placeholder. Raw has “author”: {“@type”: “Person”,”name”: “Mediankymppi”} – that is not a placeholder, it’s fine. But the instruction says “STRIP author if name matches placeholder (“Article Author”, “News Staff”, “Admin”, “Writer”, “[author]”).” None match. Keep.
Also remove aggregateRating if present. Not present.
FAQPage mirrors visible FAQ items. The raw has 10 FAQ items. The JSON-LD has only 9? Actually it has 9. Need to add the missing ones. Also ensure the questions match exactly. I’ll update FAQPage JSON-LD to include all 10 FAQ items.
Gate 8: Tone hygiene. Remove forbidden phrases. The article doesn’t seem to contain them. Check: “stands as one of the” etc. Not present. Good.
Gate 8b: Intro opener. The first sentence is “Mira Luoti on vuosien varrella jakanut perheestään vain ripauksen julkisuuteen, vaikka hänen uransa on ollut esillä jatkuvasti.” That is fine, not a forbidden opener. Lead paragraph has 2 sentences (actually it’s one sentence with a comma and then “Tässä artikkelissa…”). It’s two sentences. Good.
Gate 9: Quote speaker variety. Both blockquotes are from Mira Luoti, but the first one has speaker “Mira Luoti, Ilta-Sanomat”, second “Mira Luoti, Ilta-Sanomat”. They are the same speaker. Need to have at least 2 different speakers. The research notes have other possible speakers: “Mira Luoti (Kodinkuvalehti)” and “Mira Luoti (IS)”. Both are Mira Luoti. But different sources. The gate says “≥2 different speakers”, meaning different persons. If both are Mira, it’s the same speaker. Need to find another speaker. Could use a quote from a different person? The research notes don’t provide any. I could convert the second blockquote to paraphrased prose with citation to avoid duplication. Or I can check if there is any other quote in the article? The second blockquote is actually not a direct quote but a description: “Harvinainen yhteiskuva lasten kanssa – kommentit julkisuudesta.” That is not a quote. I’ll remove that blockquote and instead paraphrase that information in prose. Or I can attribute it to a different source? The citation is to Ilta-Sanomat. I’ll change the second blockquote to a paraphrased sentence. Also ensure at least two different speakers. Since the second is not a real quote, I’ll replace it with a quote from another source if available. The research notes have a quote from “Mira Luoti (Kodinkuvalehti)” “Kehtaan tehdä mitä vain” – that is already used. No other speakers. I’ll keep the first blockquote and change the second to a paraphrase.
Gate 10: Research confidence calibration. Research_confidence=low. So rumor-list (uncertain list) should be ≥ confirmed-list. The article has a clarity section with confirmed and unclear. Confirmed list has 6 items, unclear has 4 items. Need to ensure unclear >= confirmed. Since low confidence, I need to move some items from confirmed to unclear? But we cannot fabricate. I can add more unclear items if plausible. Or I can reduce confirmed items by removing some that have low confidence. The research notes have low confidence overall. The facts are from Wikipedia, which is tier3. But the gate says “verify rumor-list ≥ confirmed-list; move weakest items if needed.” I’ll move the “Urho-pojan sydänpysähdys (13 minuuttia)” from confirmed to unclear because the source is a viihdejulkaisu, not highly reliable. Also “Isän kuolema (Mira 1 kk ikäinen)” source is MTV viihde, also tier2. I could keep it. But to make unclear >= confirmed, I need at least 7 unclear? Confirmed is 6, unclear is 4. I’ll add one more unclear: “Lasten iät todennäköisesti oikein mutta ei virallista vahvistusta” – but that might be too vague. Better to move two confirmed to unclear. I’ll move “Urho-pojan sydänpysähdys” and “Lasten iät” (which are derived). Actually the iät are from Wikipedia, which is not authoritative. I’ll move “Lasten iät (18,15,10 v.)” to unclear as well. Then confirmed becomes 4, unclear becomes 6. That satisfies. Need to update the clarity section in HTML.
Gate 11: Facts_summary tier audit. facts_summary is empty, so no action.
Gate 12: UX structural enforcement. Check contract: comparison_table_required=false, spec_table_required=false (but there is a table, but it’s key facts table, not spec table), pros_cons_required=false, steps_required=false. Stats line present. Key facts table near top. At least 2 callouts (div n24-tip, n24-note, n24-warning). There are n24-tip, n24-note, n24-warning – that’s 3. Good. No more than 2 consecutive
without break. There are sequences like multiple
after each other. I need to insert breaks (list, callout, quote). For example after the intro paragraph there is stats line, then snapshot, then a
“Alla olevasta taulukosta…”, then table, then H2, then
… I’ll check for consecutive
without any break. After the table, there is H2 and then a
. That’s fine. After that
there is a
and
, then
, then
, then H2, etc. There are some places where two
appear consecutively. For example after the FAQ items, there is a
about “Mira Luodin lapset elävät…”. That is a single
. After that there is H2 “Usein kysytyt kysymykset” and then
items. No two consecutive
without break. Actually check: after the second blockquote, there is a
“Mira Luodin lapset elävät…”. That is one
. Then H2. So no issue. But I need to verify no more than 2 consecutive
. I see no case of two
in a row. Good.
Also mini-summary
should appear after any H2 section with >300 words of prose. The article has a tldr after the “Minkä ikäisiä” section. That section has about 300 words? Not sure, but it’s present. Good.
Gate 13: Research-residue scan. No residues found. Good.
Gate 14: Editorial voice validation. Need to check:
14.1 Intro first sentence takes a stance. It does: “Mira Luoti on vuosien varrella jakanut perheestään vain ripauksen julkisuuteen, vaikka hänen uransa on ollut esillä jatkuvasti.” That is a stance (contrast). Forbidden leads: “X is a/an”, “X occupies”, etc. Not present. Good.
14.2 Table lead-ins. Before every
, then
appear consecutively. For example after the FAQ items, there is a
about “Mira Luodin lapset elävät…”. That is a single
. After that there is H2 “Usein kysytyt kysymykset” and then
without break. Actually check: after the second blockquote, there is a
“Mira Luodin lapset elävät…”. That is one
. Then H2. So no issue. But I need to verify no more than 2 consecutive
. I see no case of two
in a row. Good.
Also mini-summary
Gate 13: Research-residue scan. No residues found. Good.
Gate 14: Editorial voice validation. Need to check:
14.1 Intro first sentence takes a stance. It does: “Mira Luoti on vuosien varrella jakanut perheestään vain ripauksen julkisuuteen, vaikka hänen uransa on ollut esillä jatkuvasti.” That is a stance (contrast). Forbidden leads: “X is a/an”, “X occupies”, etc. Not present. Good.
14.2 Table lead-ins. Before every