Skip to content

Ads first contact: the prompt's literal "TAG" is copied by the 3B model, and the re-ask shares the timeout budget β€” zero usable spots on the demoΒ #696

Description

@genwave-radio

First contact, 2026-09-05: v5.6.1 on the demo, Brought To You By installed (30 briefs, all enabled), AutoApprove off. Two worker ticks, zero usable spots. Both failures are the app's, not the model's.

πŸ› 1. The prompt's abstract "TAG: <line>" is copied literally

AdScriptPromptBuilder.BuildSystemPrompt says: in this EXACT wire format … "TAG: <line>". llama3.2:3b (the reference station's model, HARDWARE.md) copies it β€” the first draft of BOTH ticks opened with a line whose tag was "TAG (leading quote included), refused by AdScriptParser's tag rule:

Ad script failed (brand: Pruett's Left-Handed Hardware): voice tag ""TAG" is not uppercase-alphanumeric, starting with a letter
Ad script failed (brand: Lumbago Larry's Discount Mattress Barn): voice tag ""TAG" is not uppercase-alphanumeric, starting with a letter

The crosstalk prompt never has this problem because it spells its example with the REAL tags β€” "HOST: <line>" or "NEIGHBOR: <line>" β€” so a verbatim copy is a valid line. The ad prompt must do the same: name real tags (ANNOUNCER, CUSTOMER, VOICE1), state the tag grammar in words (one word, capitals and digits, no quotes, no parentheses), and drop the abstract placeholder. Bench on the demo's exact model to follow in the fix PR.

The second tick's re-ask then produced LARRY (YELLING) β€” a stage direction inside the tag β€” and landed as the visible failed row, exactly as designed (STORY-390 AC3). The tag grammar sentence covers that one too.

πŸ› 2. The re-ask shares one Llm:TimeoutSeconds budget with the first attempt

AdScriptWriter.WriteAsync: ONE timeoutCts spans both attempts ("mirrors LlmCopyWriter's re-ask callers"). That mirror is the wrong shape here: the on-air writers share a budget because the break is imminent; the ad writer runs entirely off the air clock (SPEC F161.1, the class's own remark for why it carries no single-flight gate). On the demo's CPU-bound 3B model a first completion took 49 s of the 90 s budget, so the re-ask timed out and the tick produced nothing:

Ad script failed (brand: Pruett's Left-Handed Hardware): Llm:TimeoutSeconds exceeded
Ad script generation skipped for brand Pruett's Left-Handed Hardware: Llm:TimeoutSeconds exceeded

Fix: each attempt gets its own Llm:TimeoutSeconds budget in the ad writer (the worker's 10-minute tick is the only clock that matters). One spec: a first attempt that spends most of the budget on a refused draft, then a re-ask that itself fits the budget, succeeds.

πŸ“‰ Why it matters now

At the current shape the demo's stock pass yields ~0 spots per tick, so T409's ear gate never starts. Related: #693 (the structure hint never reaches the prompt β€” the same builder). Epic: #380.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High prioritybugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions