Error in user YAML: (<unknown>): mapping values are not allowed in this context at line 2 column 485
---
name: attribute-performance
description: For each substacker post that materially over- or under-performs the rolling baseline (|z| ≥ 1.0), produces a plain-English attribution paragraph with calibrated confidence (high / medium / low / unexplained). Considers subject-line effect, topic zeitgeist, external share, day-of-week, length effect, and audience-notes signals. Labels unexplained outliers explicitly rather than fabricating a story. Use after compute-baseline when outlier posts exist. Trigger keywords: attribution, why did this post work, outlier explanation, performance analysis.
---
For each |z| ≥ 1.0 post:
- [ ] Step 1: Check 6 attribution channels (subject line, topic zeitgeist, external share, day-of-week, length, audience-notes match)
- [ ] Step 2: Per channel, rate confidence: high / medium / low / absent
- [ ] Step 3: If no channel ≥ medium, return "unexplained — candidate hypotheses: A, B, C"
- [ ] Step 4: If ≥1 channel ≥ medium, attribute with confidence label
- Subject-line effect: did title-pattern match a known audience-notes signal?
- Topic zeitgeist: was topic trending externally (check trend-scout digests if available)?
- External share: WebFetch public post URL + Notes mentions — did a larger account restack it?
- Day-of-week: send-day different from baseline?
- Length effect: significantly shorter or longer than median?
- Audience-notes signals: does this post fit a previously-medium-confidence pattern?
- Never fabricate attribution.
unexplainedis a valid output. - Confidence = highest single channel. Two mediums do not make a high.
- External share = highest-confidence driver (WebFetch evidence is verifiable).
- Day-of-week alone rarely justifies medium confidence.
- Audience-notes match requires the post to fit the pattern's supporting evidence set, not just semantically match.
- Keep attribution to 2–4 sentences per outlier. Full weekly report cannot exceed 800 words.