| date | learning | source |
|---|---|---|
| 2026-10-06 | Dawn has no owned post-use outcome data: no day-14 survey, no reason-coded returns; Okendo's 2,142 reviews are imported (95% before the first order, none since Feb 9). Timeline milestones come only from product-truth, the owned survey (objections) and category wrist-alarm reviews. | knowledge/brands/dawnbands/research/bottleneck-diagnosis-2026-10-03.md lines 73, 136 |
| 2026-10-06 | gen_statics QUAL regex flags '14 days' (wrong guarantee) but passes 'Day 1. Day 3. Day 14.', 'Night 1' and 'week two'; make_prompts lint has no time rule. The skill's grep is the time-label gate (tested: catches 5/5 bad lines, passes the compliant copy). | scratch test 10-06 against scripts/statics/gen_statics.py gate() + static-templates/make_prompts.py lint() |
| 2026-10-06 | voc_check.py corpus globs output/dawn-batches-2026-09-02/okendo_reviews_all.json (missing) and knowledge/brands/dawnbands/survey*.csv (none): owned-survey quotes return 0 hits. Declare them as card_item with the survey ref. | scripts/statics/voc_check.py FILES; voc_check 'Everyone was up because of her alarm except her' = 0 |
| 2026-10-06 | gen_statics rule 9 (SA2 Apology Mom chain) requires 'dawn band' + 'startle' on the image; a timeline static with Fish's 9-30 mechanism line fails only MISSING WRIST-VIBRATION MECHANISM. Waive with a written reason (10-04 check_gate.py pattern). | gen_statics.py --check on the C07 example spec, 10-06 |
| 2026-10-06 | Proposed template C07 timeline-stack has the exact templates.json key set (diff vs C01 = none) and renders through make_prompts.render with lint [] on the example copy. Not merged into templates.json (needs Fish's go). | skills/format-timeline/references/template-C07-timeline-stack.json + make_prompts harness 10-06 |
| 2026-10-06 | oneweek song already tells a day-by-day story inside an experiment week: $1,106 / 26 purchases / $42.55 CPA / ROAS 1.81. Closest paying parent for the timeline video. | output/dawn-combo-map-2026-10-05/songs_all.json + songs_scripts.json |
| 2026-10-06 | Character-less explainer VO (drowsy-driving explainers) got 0 purchases; IM8's anatomy-explainer shape must become one family with mom narrating. | output/dawn-combo-map-2026-10-05/MAP.md Don't build; ~/research/davidaistar/REPORT.md format row 7 |
| 2026-10-06 | pack.py PRODUCT_IN_FRAME_RE marks any intent naming 'the band'/'wristband'/'dawn band' as a product panel (batches capped at 3 panels). Name the band only in intents that show it, or a timeline balloons in batches and cost. | scripts/cartoon_h3/pack.py line 23 |
| 2026-10-06 | Category wrist-alarm buyers report a first-days adjustment ('first time wearing it I didn't get woke up... after setting multiple alarms I now have zero issues', q1382; 'after a next day or two I was starting to get used to it', q1435) and stability around two weeks (q1358). Use as the honest first-mornings beat; never as Dawn buyer quotes. | knowledge/brands/dawnbands/research/voc-competitor-reviews-2026-10-02.jsonl |
| 2026-10-06 | 10-06 audit: gen_statics --check exits 1 on the waived rule-9 finding and --list exits before printing (re-tested), so the static route is check_gate.py + approval_sheet(); C07 now passes the C01 layout ref as render input (Fish 10-03 'every static renders with its proven winner image as a layout input'); stage-session takes $B/renders (iterdir is not recursive). | scripts/statics/gen_statics.py main(); ~/ad-batch-hub/stage-session.py review_gate; corrections-archive-2026-10-03 |
| 2026-10-06 | starpop articles: visuals never run ahead of the VO (no after-state in a before or night-one shot; checked per intent before the storyboard); static stage 3 may end on a "without …" clause naming her burden. Dated labels from his timeline template stay banned. | ~/research/davidaistar/starpop/txt/{create-and-clone-competitor-ads-with-ai,ai-static-ads-that-convert}.txt |
| 2026-10-06 | gen_statics now reads spec `waivers` ({slug,rule,reason}; rule id rule9 or failure substring) and an optional spec/static `chain`: `--check`/`--list`/`--out`/10-06 flags run on a waived C07; check_gate.py no longer needed. voc_check corpus now has the buyer survey CSVs (survey lines hit). | scripts/statics/gen_statics.py + voc_check.py (10-06 builder D, backups *.bak-2026-10-06x) |
| 2026-10-06 | Built 10-06: run.py tiers + --tier-models; --draft 480P; h3.py FAL_PRICE fixed (768P $0.08/s), 90 s ≈ $8-14 video. | scripts/cartoon_h3/run.py, h3.py, tiers.py (Builder B) |
| 2026-10-06 | Per-beat SFX layer BUILT 10-06 (pack `## Sound cue sheet` + H3_SFX_PLAN on assemble, scripts/cartoon_h3/sfx.py); buzz still needs a sourced file. Captions moved into the Reels safe box 10-06. | scripts/cartoon_h3/sfx.py, VideoAd.tsx (Builder C) |
format-timeline
The "if he wore this for a month, here's what happened" timeline ad for DawnBands, in two executions - (a) an animated mom-narrated video that follows ONE family from the night before through night one, the first mornings, week two and a month on (60-120 s), and (b) a static timeline-stack image (tonight / tomorrow morning / every morning after) on the dawn-statics pipeline.