Scripting Skill · Revamp Dossier

ad-scripter-modularGenerates interchangeable ad components — bodies, hooks, CTAs, Primary Texts, and Headlines — as a mix-and-match library for permutation testing. Invoked via /ad-modular.

Owner: Operator-commanded skill (invoked via /ad-modular) · for Asel · 2026-06-11
What it does

Ad-scripter-modular generates components instead of complete scripts. Where /ad-script produces one finished 7-section ad per concept card, /ad-modular produces a library: multiple body scripts, multiple hooks per body, multiple CTAs, Primary Texts (the caption text shown above a video ad in Meta Ads Manager), and Headlines. Any hook pairs with any body at the same awareness level. Any CTA closes any body. Any Primary Text or Headline wraps any combination. The result is a grid of testable ad permutations from a single production run — directly relevant to the AI user-generated content (AI-UGC) factory hook-iteration endpoint, where testing dozens of hook variants against one proven body is the primary workflow. All seed components (the first body, the first hook per body, the first CTA) are authored by Opus 4.8 (the strongest available model) to lock voice and quality. Controlled variation expansion beyond those seeds runs on GPT-5.5 at lower cost. Deterministic work — word counts, permutation arithmetic, compliance flag checks, hook de-duplication — is plain code, never a model.

01 Model routing — which model runs which task

All calls go through OpenRouter and are logged with model plus cost. Deterministic work is plain code, always.

TaskModelWhy
Body script authoring — seed draft per body (Sections 2-6: Transition, Struggle, Turning Point, Insight, Training and Social Proof Bridge)claude-opus-4-8 (Opus 4.8) via OpenRouterVoice fidelity, the mandatory Social Proof Bridge (the non-negotiable section that stacks student proof entries after the Training intro), and mechanism protection are all high-consequence. One wrong word breaks compliance or voice lock. Opus 4.8 is the strongest available model and the correct ceiling for this task.
Hook variation authoring — seed (first) variation per bodyclaude-opus-4-8 (Opus 4.8) via OpenRouterThe hook is the single highest-consequence creative decision in a Meta ad. The seed variation sets the voice and framework pattern that all remaining hook variations must stay inside. Opus 4.8 establishes that anchor.
CTA (call to action) authoring — seed CTA per bodyclaude-opus-4-8 (Opus 4.8) via OpenRouterThe CTA closes the conversion window. It must hit the 5-Part CTA Formula and match the expert's voice register. High consequence — Opus 4.8 runs the seed.
Permutation fan-out — controlled variation expansion (all hook, body, and CTA variations beyond the Opus seed)GPT-5.5 via OpenRouterOpus 4.8 has already locked the voice pattern and framework ceiling. GPT-5.5 expands variants within those constraints at lower per-token cost. This is the only non-Anthropic model in the routing table; it is used only for expansion within Opus-established bounds, never for seed authoring or compliance-critical copy.
Primary Text (PT) and Headline (H) generationclaude-sonnet-4-6 (Sonnet 4.6) via OpenRouterCompliance-checked copy with rule-based framing constraints. Consequence is real but bounded — the three safe-framing approaches and strict word-count caps limit the output space. Sonnet 4.6 is the correct model for this tier.
Supabase view reads, word counts, permutation totals (bodies × hooks × CTAs × PTs × Headlines), forbidden word scans, PT/Headline compliance flag checksPlain code — no language modelDeterministic-first rule. Counting, scanning, and threshold-checking against bounded inputs is pure logic. A language model adds latency and cost and cannot improve on deterministic code for any of these tasks.
Hook framework de-duplication within a body (ensuring no two hook variations for the same body use the same framework ID)Plain code — no language modelDeterministic lookup against a bounded list of framework IDs (F1–F12, HT1–HT12, W1–W10). No reasoning required.
Non-Anthropic model flag

GPT-5.5 via OpenRouter is used for permutation fan-out beyond the Opus seed. This is the only non-Anthropic model in the system. It operates strictly within bounds established by Opus 4.8 — it does not author seeds, does not make compliance decisions, and does not write Primary Texts or Headlines. If OpenRouter routing changes, this model assignment is the one to review first.

02 The spec

What goes in, what each component is, and how the pieces fit together.

Inputs

InputSourceRequired
Voice Book (the Expert Voice Book — the structured voice profile for the expert)READ orchestration/expert-config/<expert>/voice-book.md — the live source of record. Must contain signature structures, vocabulary, mechanism framing, proof anchors, and ICP arc.YES — HALT if absent. The markdown Voice Book is the source of record. Do not halt waiting on a Supabase expert_profile row when the markdown is present. Do not substitute a stale profile or a Drive document. This is a voice-dependent skill. No Voice Book = no run.
Concept card (the structured brief from the ideation stage — arc, angle, awareness level, format, and objection)ad-ideate output or /ad-ideateYES — HALT if absent. Awareness level and angle must be confirmed on the card before the skill starts.
Temperature (controls how much creative latitude the model takes)Operator input or batch configYES. LOW = locked to concept card framework. MEDIUM = can blend two frameworks per hook. MEDIUM-HIGH = hybrid hooks allowed within the ceiling set by ad-hook-principles.
Operator parameters (body count, hooks per body, CTAs per body, Primary Texts per body, Headlines per body)Operator promptYES. Defaults apply if not specified: bodies = concept card count, 3 hooks per body, 1 CTA per body, 3 Primary Texts per body, 3 Headlines per body.
Active launch learnings (the avoid, forbidden, and positive patterns from the most recent autopsy run for this expert)active_launch_learnings_for_<expert> Supabase Layer 5 viewRequired in Iteration mode for Step 0.5e enrichment (positive pattern seeding). Not a hard halt in Pioneer mode but recommended.
Hook sources (proven hooks from the expert's winning ads, competitor ads, and platform libraries)Supabase views: winning_ads, expert_hooks_for_<expert>, competitor_intelligence (always filter by source_type before use). Local hook-swipe-bank.md and swipe-library-curated-reference.md as fallback only — never source of record.Recommended. Using proven hook patterns from the swipe library lifts confidence. The skill can generate original hooks but should reference sources where available.
Gate: agent_run audit

Every run opens an agent_run row in Supabase at the start and closes it at the end. If Supabase is unreachable, the skill halts immediately — it does not proceed and does not produce output. Status options: success (all components produced), partial (some components blocked — status_detail explains which), failed (unrecoverable error), halted (a hard gate fired — missing Voice Book or missing concept card). Every component row written to raw_outputs carries created_by_run_id linking it to the open agent_run.

The five components

Component A — Body script (Sections 2–6)

The "meat" of the ad. Excludes the hook (Section 1) and the CTA (Section 7) — those are separate interchangeable components.
FieldWhat it means
Body AnglePROBLEM (heavier struggle), SOLUTION (balanced struggle and insight), PRODUCT (heavier training and proof), or OFFER (minimal struggle, maximum offer detail). Controls section emphasis and the pain-to-solution word count ratio. Source: concept card.
Sections includedSection 2 (Transition), Section 3 (Struggle), Section 4 (Turning Point), Section 5 (Insight), Section 6 (Training introduction and Social Proof Bridge). Templates locked from ad-scripter-reference Part 1.
Word count target120–170 words. Leaves room for a hook (15–25 words) and a CTA (40–70 words) to hit the 180–240 total spoken word target.
Non-negotiablesSocial Proof Bridge (student proof entries after the Training intro — always present, non-negotiable); sustainability clause in the Turning Point; mechanism protection (zero sequence, phase, or step reveals); two or more Voice Book signature phrases.
Emotional ArcSelected from the Emotional Arc Selection section of ad-audience-language-dna. This is a section within that skill file, not a separate skill.

Component B — Hook variations

Standalone openers, 15–25 words each. Each variation uses a different hook framework so they are truly interchangeable without structural overlap.
FieldWhat it means
FrameworkOne framework ID per hook variation, drawn from F1–F12 (cold traffic core), HT1–HT12 (high-ticket cold), or W1–W10 (warm retargeting). No two hook variations for the same body may use the same framework ID — de-duplication is enforced by plain code before the model runs.
Source tagOne of five sources: (1) expert's winning ads from winning_ads view; (2) expert's organic winners; (3) competitor ad hooks from competitor_intelligence view; (4) competitor organic hooks; (5) platform ad libraries (longest-running = longevity signal). Or "Original" if no source match.
Compatibility tagThe hook is tagged to a compatible body by awareness level. A PROBLEM AWARE hook only pairs with a PROBLEM AWARE body.
Temperature effectLOW = assigned framework exact. MEDIUM = can blend two frameworks. MEDIUM-HIGH = hybrid hooks allowed within the ceiling set by ad-hook-principles.

Component C — CTA (call to action) variations

Standalone closers, 40–70 words each. Calibrated to the awareness level of the body they pair with.
FieldWhat it means
5-Part CTA FormulaEvery CTA must include at minimum: WHAT TO DO + WHY IT MATTERS + HOW EASY. The remaining parts are calibrated by awareness level.
Lead elementVaries across CTA variations: one benefit-led, one urgency-led, one ease-led. This ensures the CTA set is genuinely interchangeable rather than synonymous.

Component D — Primary Text (PT) variations

The caption shown above the video in Meta Ads Manager. Soft and compliant. 40–90 words. The video does 95% of the selling — Primary Text is a soft wrapper, not a sales letter.
FieldWhat it means
Three lead approachesPT-A is story-led (third-person or first-person mini-narrative from the body). PT-B is curiosity-led (observation or discovery framing that teases the video). PT-C is social-proof-led (community framing or credibility anchor from the Voice Book).
Safe framing requirementEvery Primary Text must use one of six safe framing techniques: Third-Person Story, First-Person Narrative, Community Framing, Aspiration Framing, Discovery Framing, or Observation Framing.
Compliance hard rulesNEVER: second-person plus negative attribute ("Are you struggling with..."), specific income or result claims ("Make $10k/month"), guarantee language, medical or diagnostic language, urgency or scarcity tactics, or price points.
Derivation ruleAll claims in the Primary Text must be traceable to the body script. The PT never invents claims not in the video.

Component E — Headline variations

Three to eight words. Shown next to or below the video in Meta Ads Manager. Soft and compliant — no claims, no urgency.
FieldWhat it means
Three framingsH-A is outcome-framed ("A fresh approach to [X]"). H-B is curiosity-framed ("What she discovered about [X]"). H-C is identity-framed ("For [aspirational identity]").
Hard prohibitionsNo numbers, no prices, no timeframes, no "you" plus negative, no ALL CAPS, no exclamation marks, no clickbait.

Assembly Guide (output section)

Appended to every modular batch. Shows total permutations and recommended priority pairings.
FieldWhat it means
Total unique ad combinationsBodies × hooks × CTAs. Calculated by plain code.
Total copy combinations per adPrimary Texts × Headlines. Calculated by plain code.
Total testable permutationsBodies × hooks × CTAs × Primary Texts × Headlines. The full grid available in Meta Ads Manager.
Recommended priority combinationsThree to five pairings the skill recommends testing first, with a one-line reason for each. Reason is drawn from hook source confidence, body angle match to the concept card, and active launch learnings positive patterns.
Interchangeability rulesHooks are interchangeable across all bodies at the same awareness level. CTAs are interchangeable across all bodies. Primary Texts are interchangeable across all bodies at the same angle. Headlines are interchangeable across all bodies.
Fibery fields blockPre-formatted field assignments for the operator to paste into the Fibery CREATIVE entity: Primary Text 1, Primary Text 2, Primary Text 3, Headline 1, Headline 2, Headline 3.

03 Live output example representative

REPRESENTATIVE EXAMPLE — IDA (Amelia Fenmore, interior-design business coach), constructed from real IDA voice and proof material. Badge: b-rep (constructed, not from an eval run). Concept card: PROBLEM AWARE, SOLUTION angle, single body, 3 hooks, 1 CTA, 2 PTs, 2 Headlines. Temperature: MEDIUM. Expert: IDA (namespace `ida`).
==================================================
MODULAR BATCH: IDA — PROBLEM AWARE
==================================================

OPERATOR CONFIG:
Bodies: 1
Body Angle: SOLUTION
Hooks per body: 3
CTAs per body: 1
PTs per body: 2
Headlines per body: 2
Temperature: MEDIUM
Total ad combinations: 1 body × 3 hooks × 1 CTA = 3 unique ads
Total copy combinations per ad: 2 PTs × 2 Headlines = 4 copy pairings

==================================================
BODY #1 of 1
==================================================
Body Angle: SOLUTION
Compatible Awareness: PROBLEM AWARE
Word Count: 148 / 120-170
Emotional Arc: Recognition (trapped) → Evidence (proof it works) → Permission (solvable)

[SECTION 2 — TRANSITION]
"I speak to people in this exact position every week."

[SECTION 3 — STRUGGLE]
"They've spent years building a career in another field — teaching, healthcare, corporate — and now they want work that's finally theirs. They try the obvious things. Courses. Instagram. Building a portfolio from scratch. And none of it accounts for the thing they already have more of than anyone else in the room."

[SECTION 4 — TURNING POINT]
"I want to tell you about Claire. Fifteen years in HR. Left at 42. She didn't start from scratch — she built a design business around the one skill that fifteen years in people operations gave her that no design graduate has. Now earns £3,200 a month, working from home, three days a week."

[SECTION 5 — INSIGHT]
"The approach we teach doesn't require a following. It doesn't require starting over. It doesn't require ignoring everything you've already built. It's built around one skill your experience makes you better at — not worse."

[SECTION 6 — TRAINING + PROOF]
"I made a free training that walks you through exactly how this works."
"Sophie — 12 years in teaching, now $2,400 a month in 8 months. Marcus spent 20 years in finance, earning $5,600 a month working 4 days a week. Priya was 44, 18 years in NHS nursing, now £3,800 a month."

--------------------------------------------------
HOOKS FOR BODY #1 (3 variations)
--------------------------------------------------

HOOK 1.1:
Framework: HT6 — Cost of Inaction
Source: Original
Text: "If you've spent fifteen years building the wrong thing — this is what changes when you finally build the right one."
Words: 23

HOOK 1.2:
Framework: F5 — Identity Callout
Source: 1 (expert winning ads — CREDENTIALS/no-degree creative, verified winner, CPL $8)
Text: "If you've built a career in something else and you're ready for work that's yours — I want you to hear this."
Words: 24

HOOK 1.3:
Framework: HT8 — Confession / Vulnerability Lead (blended with F12 — Native Story Opening)
Source: Original
Text: "I used to think the years I spent before this work were the problem. Turns out they were the point."
Words: 20

--------------------------------------------------
CTAs FOR BODY #1 (1 variation)
--------------------------------------------------

CTA 1.1:
Lead Element: EASE
Text: "The link is below. The training is free. And it is built for people who have already done the hard part — spending years getting good at something. All we're doing is pointing that at the right thing."
Words: 42

--------------------------------------------------
PRIMARY TEXTS FOR BODY #1 (2 variations)
NOTE: Soft and compliant. Video does 95% of selling.
--------------------------------------------------

PT 1.1:
Lead Approach: Story-led
Safe Framing: Third-Person Story
Text: "Claire spent fifteen years in HR before she built something of her own. She didn't start from scratch. She built around what fifteen years had already given her. Amelia explains in this video exactly what that looks like — and why the experience that felt like the wrong background turned out to be the edge. Full story below."
Words: 60 / 40-90
Compliance: CLEAR

PT 1.2:
Lead Approach: Curiosity-led
Safe Framing: Observation Framing
Text: "More and more people who've spent years in other careers are finding that the thing holding them back wasn't their background — it was what they were trying to do with it. Amelia breaks down the distinction in this video. She explains it all below."
Words: 47 / 40-90
Compliance: CLEAR

--------------------------------------------------
HEADLINES FOR BODY #1 (2 variations)
NOTE: Soft and compliant. No claims, no urgency.
--------------------------------------------------

H 1.1:
Framing: Outcome
Text: "A fresh start from what you already know"
Words: 8 / 3-8
Compliance: CLEAR

H 1.2:
Framing: Identity
Text: "For people ready for work that's theirs"
Words: 7 / 3-8
Compliance: CLEAR

==================================================
ASSEMBLY GUIDE
==================================================

Total unique ad combinations: 1 body × 3 hooks × 1 CTA = 3
Total copy combinations per ad: 2 PTs × 2 Headlines = 4
Total testable permutations: 3 × 4 = 12

RECOMMENDED PRIORITY COMBINATIONS:
1. Body #1 + Hook 1.2 + CTA 1.1 + PT 1.1 + H 1.1 — Hook 1.2 sources directly from
   the CREDENTIALS/no-degree verified winner (CPL $8); highest confidence pairing.
2. Body #1 + Hook 1.1 + CTA 1.1 + PT 1.2 + H 1.2 — HT6 Cost of Inaction untested
   for IDA; use as discovery arm against the confirmed Hook 1.2 pairing.
3. Body #1 + Hook 1.3 + CTA 1.1 + PT 1.1 + H 1.2 — Confession/Vulnerability blend;
   test if the first-person vulnerability voice outperforms the direct callout.

All hooks are interchangeable across bodies at the same awareness level.
CTAs are interchangeable across all bodies.
PTs are interchangeable across all bodies at the same angle.
Headlines are interchangeable across all bodies.

FIBERY FIELDS (per assembled creative):
- COMPANY HUB/Primary Text 1: [Selected PT]
- COMPANY HUB/Primary Text 2: [Selected PT]
- COMPANY HUB/Primary Text 3: [leave blank or rotate]
- COMPANY HUB/Headline 1: [Selected H]
- COMPANY HUB/Headline 2: [Selected H]
- COMPANY HUB/Headline 3: [leave blank or rotate]
==================================================
How to read it: Each labelled block is one interchangeable component. The body script (Body #1) is Sections 2–6 — the hook and CTA are intentionally absent from it, because those slots are filled from the hook and CTA blocks below. Hook 1.2 is tagged to Source 1 (the expert's own verified winning ad) — always test this one first. Hook 1.1 and 1.3 use untested frameworks; they are the discovery arms. The Assembly Guide at the bottom shows you the full permutation grid — 3 unique ad structures, each with 4 copy pairings = 12 testable combinations from one production run. The Fibery fields block at the end is ready to paste directly into the CREATIVE entity in Fibery (the project management and creative system-of-record). Run the priority combinations through /ad-polish (the scripter-polish quality-assurance scan) before briefing — polish runs on the full assembled combination (body + hook + CTA), not on components individually.

04 Glossary

Every abbreviation and piece of system jargon, spelled out in full with context.

TermIn full — what it means
Modular componentsInterchangeable ad parts — the five component types this skill generates: bodies (the main spoken content), hooks (the opening 3-second grabbers), CTAs (calls to action — the closing conversion prompt), PTs (Primary Texts — the caption above the video in Meta Ads Manager), and Headlines (the 3–8 word label shown alongside the video). Each component type is independently authored so any instance of one type can pair with any instance of another type at the same awareness level.
PermutationOne unique ad combination — one specific body paired with one specific hook, one CTA, one Primary Text, and one Headline. The total permutation count is the full grid of testable combinations: bodies × hooks × CTAs × Primary Texts × Headlines. For a batch of 2 bodies, 3 hooks each, 1 CTA each, 3 PTs, and 3 Headlines, that is 2 × 3 × 1 × 3 × 3 = 54 unique testable combinations from one production run.
Entity IDMeta Ads Manager auction diversity signal — Meta's ad delivery system diversifies creative serving across Entity IDs to avoid over-serving the same creative to the same person. A component library with multiple distinct bodies (not just hook swaps on one body) creates genuine Entity ID diversity, which reduces creative fatigue and improves auction performance over time. This is the structural reason to generate multiple bodies rather than multiplying hooks on a single body.
PTPrimary Text — the caption text shown above a video ad in Meta Ads Manager. Always soft and compliant: 40–90 words, derived from the body script, never invents claims not in the video. Three safe lead approaches: story-led, curiosity-led, and social-proof-led.
HHeadline — the short label (3–8 words) shown next to or below the video in Meta Ads Manager. Always soft and compliant. Three framing types: outcome, curiosity, and identity.
SPBSocial Proof Bridge — the mandatory section at the end of every body script (Section 6), immediately after the Training introduction. It stacks three or more student proof entries with no connective tissue between them (no "and" or "also" — the rhythm is the signal). Required in every body script, without exception.
Mechanism revealHow much of the expert's proprietary method is shown in the ad — IDA's (Amelia Fenmore's) method has phases, steps, and a named sequence. Revealing these in an ad gives away the product and destroys the reason to book a call. The skill enforces TEASER level by default: the mechanism exists and works, but its structure is never named. Zero sequence, phase, or step language in any component.
Hook rateThe percentage of viewers who watch past the opening hook — typically measured as the 3-second or thumb-stop rate in Meta Ads Manager. A high hook rate means the opening grabbed attention. It does not mean the ad converted — the LeakedAIDemo creative from the 2026-06-10 depth eval had the highest hook rate in its batch and was still a conversion failure. Hook rate is an interruption signal, not a persuasion signal.
CPBCCost Per Booked Call — how much money was spent on Meta ads to get one person to book a sales call with the expert. The primary success metric for IDA (Amelia Fenmore) cold traffic. Target threshold lives in expert_config.target_cpbc. When the Assembly Guide recommends priority combinations, it uses CPBC from active launch learnings positive patterns where available.
IDAInterior Design Academy — the expert identity for Amelia Fenmore, an interior-design business coach. IDA Meta ads drive cold traffic to a free training, which converts to booked sales calls. The expert namespace in all IDA Supabase rows is ida.
Voice BookExpert Voice Book — the structured voice profile for the expert, built by the ad-voice-profile skill and stored as orchestration/expert-config/<expert>/voice-book.md (the live source of record). Contains signature phrases, vocabulary, tone calibration, and structural patterns the expert actually uses. This skill halts immediately if the Voice Book is absent — every component must sound like the expert, not a copywriter. The old name "Layer 3 calibration" is deprecated; Voice Book is the correct term.
F1–F12Cold Traffic Core Hook Frameworks 1 through 12 — the 12 core cold-traffic hook frameworks in ad-hook-generation.md: Contrarian Claim, Unexpected Outcome, Hidden Truth, Specific Transformation, Identity Callout, Mistake Reveal, Paradox Hook, Question Interrupt, Time Collapse, What If Reframe, Social Proof Lead, Native Story Opening. Hook de-duplication within a body checks against these IDs by plain code.
HT1–HT12High-Ticket Cold Traffic Hook Frameworks 1 through 12 — the 12 high-ticket cold-traffic frameworks in ad-hook-generation.md: Competence Test, Gatekeeper / Velvet Rope, Mechanism Reveal, New Category, Identity Wedge, Cost of Inaction, Borrowed Authority, Confession / Vulnerability Lead, Epiphany Bridge, Investment Reframe, Permission Slip, Dissonance Trigger. For IDA (a high-ticket coaching offer) these are frequently the correct framework set for cold traffic hooks.
W1–W10Warm Traffic Retargeting Frameworks 1 through 10 — the 10 warm-traffic hook frameworks in ad-hook-generation.md: Social Proof Stack, Objection Reversal, Testimonial Lead, Remember Callback, Urgency Trigger, Before / After Story, Why Now Hook, and three others. Only relevant for IDA retargeting ads — cold top-of-funnel ads use F1–F12 and HT1–HT12.
AI-UGCAI User-Generated Content — the secondary production pathway where a script or hook is rendered as a synthetic creator-style video using tools like NBP Pro, Enhancor, and Seedance 2.0, rather than filmed by a real actor. This is now primarily a hook-iteration endpoint. Modular batches are the natural upstream feed for AI-UGC hook testing — generate 5–10 hook variations against one proven body, render each as an AI-UGC clip, and test in Meta without a filming session.
UGC scopeUser-Generated Content scope flag — set when routing a polished combination to /ad-brief: HOOK_ONLY means only the hook variation is rendered as AI-UGC (for hook testing against a known body); FULL_SCRIPT means the full assembled combination is rendered.
OpenRouterOpenRouter (model routing proxy) — the API gateway through which all language model calls in this system are routed. Provides unified billing, model switching, and per-call logs (model ID, provider, cost) that feed the agent_run audit trail.
SupabaseSupabase (database platform) — the PostgreSQL-based database hosting the SKL ad creative system data layer. Ad-scripter-modular reads expert profiles, hook banks, and launch learnings from Supabase views; writes raw component output to the raw_outputs table.
FiberyFibery (project management and creative system of record) — the system of record for all creative entities, their production status, and their Meta performance data. After a modular batch is polished and approved, /ad-log creates CREATIVE and HOOK entities in Fibery. The Assembly Guide's Fibery fields block pre-formats the Primary Text and Headline values for direct paste into the CREATIVE entity.
agent_runagent_run (Supabase audit table) — the cross-cutting table that records every agent run in the data layer. Ad-scripter-modular opens a row at the start of each batch and closes it at the end. Every component row written to raw_outputs carries created_by_run_id pointing back to the open agent_run record — a full trace from component to the run that produced it.