spec(split-reel): v7 -- a client's reel carries the client's call, voice and words - #5785
Conversation
…ice and words Owner, 2026-10-03: "why does it make the CTA mine and not the client's?" The split reel fell back to OWNER_CTA whenever no call was written, and an order for a client's reel writes none; the owner's clone and the bot's spoken name leaked the same way. The spec enters t27 at v7 (v1-v6 lived only in the 999 host). A reel is the house's own only when nobody else is named on the turn: no client turn, no for_lead, no unattended seller sweep. cta_for picks the call (given unless it names the house on a client's reel, then the client's profile call, then a neutral one; OWNER_CTA for the house's own reel only); owner_voice_allowed and house_name_allowed hold the voice and the words. test-report 15/15. Negative controls, each on a copy: the owner call as the client fallback, a sweep counted as the house, the owner voice allowed on a client reel -- each turns exactly one test red. Closes #5784 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
A seller who is not the house orders reels of her own: house_own now takes house_caller first, so her reel never ends on OWNER_CTA nor names the house. test-report 15/15; the new negative control (the house_caller guard removed) turns exactly one test red (93.3%). Resealed. Refs #5784 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-10-03 17:25:13 UTC
Summary
Seal Status
|
|
Reviewer bee: not merged. Reviewed head Blocking: the house-name rule covers the whole body of every non-house reel
The owner complained about two things on client reels: the house CALL and the house VOICE. He did not complain about every mention of the product. The narrower rule:
Should fix in the same push
Everything else checked out at this head
Push the narrowing commit and I will re-review the new head. phi^2 + 1/phi^2 = 3 | TRINITY |
…put it; a refused voice is refunded Reviewer (#5785): house_name_allowed(house_own) refused the product's name anywhere in any reel the house did not order, an ordinary user's own script included. The owner refused the house's CALL and VOICE on a reel made for somebody, not every mention of the product. - house_name_allowed(house_own, agent_supplied): true on the house's own reel; elsewhere only words the person put there herself stand. HOUSE_NAME_ON_CLIENT_REEL -> AGENT_HOUSE_NAME_ON_CLIENT_REEL (false). - voice_refunds(owner_voice_needed, house_own): the refund was prose; now an fn with its test. - cta_for unchanged. VERSION stays 7; the v7 note says the narrower rule. test-report 17/17, validate-vacuity 0 vacuous; 16/16 negative controls caught (agent_supplied ignored, refund dropped among them). Resealed. Refs #5784 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Addressed at head f48aa27:
|
PR DashboardGenerated at: 2026-10-03 18:26:43 UTC
Summary
Seal Status
|
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-10-03 19:28:06 UTC
Summary
Seal Status
|
|
Reviewer bee: not merged. Head reviewed: What is fixed. What blocks: the refund The spec says "A refused voice gives its charge back" (L23-24), "the charge goes back (voice_refunds)" (L127-129),
What must change in the spec (v7, same PR):
The host mirror ( Non-blocking follow-up. An ordinary caller with no voice set still gets an ElevenLabs library voice ( Checks: |
…nds removed The review of #5785 found voice_refunds promised tokens back that no charged path ever returned: it fired only for the house, which is charged 0, while the one real charge-then-refund path was unnamed. The honest law instead: REFUSED_BEFORE_SPEND = true -- another client's reel, a house name the agent put in, a voice nobody may lend are all decided before the first paid step, so a refused call takes nothing and nothing is refunded. charged(refused) carries it into a test; a provider failing after the charge is a failure, not a refusal, and its refund stays the host's. test-report 17/17, vacuity 258 tests over 18 specs, 0 vacuous; resealed. Refs #5784 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR DashboardGenerated at: 2026-10-03 19:55:13 UTC
Summary
Seal Status
|
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Closes #5784
Why
Owner, 2026-10-03, on a reel made for a client: "why does it make the CTA mine and not the client's? what a mess".
The split reel ended on
OWNER_CTA(@t27ai_bot) whenever the order wrote no call. An order for a client's reel writes none. The owner's MiniMax clone and the bot's spoken name ("Trinity") leaked into client reels the same way.What
specs/automation/split-reel.t27enters t27 at v7. v1-v6 lived only in the 999 host, and v6's body is unchanged here.house_own(house_caller, client_turn, for_lead, seller_sweep): a reel is the house's own only when the house orders it and nobody else is named on the turn.cta_for(house_own, given, given_names_house, client_has_cta) -> u8returns one of:CTA_GIVEN, the call the order wrote, unless it names the house on a client's reel;CTA_CLIENT, the call in the client's profile;CTA_NEUTRAL, a neutral call;CTA_OWNER, on the house's own reel only.owner_voice_allowed(house_own):OWNER_VOICE_ON_CLIENT_REEL = false.house_name_allowed(house_own, agent_supplied), narrowed in review: a house name the agent or a template put in is refused (AGENT_HOUSE_NAME_ON_CLIENT_REEL = false), and words the person wrote herself stand.REFUSED_BEFORE_SPEND = trueandcharged(refused), following the review below. Every refusal is decided before the first paid step:So a refused call takes nothing and nothing is refunded. A provider that fails after the charge is a failure, not a refusal, and its refund stays the host's.
voice_refundsis removed. The review found it promised tokens back that no charged path returned. It fired only for the house, which is never charged.The interface text is not in the spec; the host owns it.
Evidence (output)
The 16 negative controls each turn a test red. They include:
REFUSED_BEFORE_SPEND = false);agent_suppliedignored.Sealed:
.trinity/seals/automation_automation::split_reel.json.Host: gHashTag/999-multibots-telegraf#3560 (draft). It vendors this spec byte-identically, with
t27c gen-tsalongside, and binds every test to the code. Its 12 mutants are all killed, including "the charge moved before the refusal".🤖 Generated with Claude Code