Studio is a workshop on top of FRAME for open, attributed advocacy. This file is the spec. It is not an app, and it does not add a generator to the site.
The writer signs the piece in their own name. Ordinary advocacy in that name, with claims a reader can check, is the line in Doctrine (working definition). Studio drafts only on that side of the line.
Inputs
Every run takes four inputs. All four are required.
- Technique id. One id from
taxonomy/techniques.json. The draft uses the fair version of that technique on Fair, grey or deception: where each archive technique sits. If the id is in the deception band, Studio does not draft it. It returns the recognition notes and the counter from Anatomy of deception: how documented operations worked, and how to spot them and stops. - Audience. Who the piece is for, where they are, and what they already believe. The questions on Know your audience are the form.
- Historical examples from three sides. Three archive objects that carry the same technique id and come from three different actors: not the same government, party, or institution. Pull them from
case-studies/,examples/, orthen-and-now/. Show the title and the link. Label them as archive examples of the method. They are context, not copy to reuse. - Linked Learn page. One
learn/page for the mechanism, chosen from the technique page's science links when those exist. The draft may name the finding. It may not turn the finding into a set of steps for hiding a source or faking agreement.
The writer also supplies their name and one claim, in a sentence, that they are willing to sign.
Outputs
Studio always writes both sides of the claim, to the same standard. It does not offer a one-sided run.
Each side is one of these four forms, using the matching template:
| Form | Template |
|---|---|
| Flyer | Template: flyer or leaflet |
| Op-ed | Template: op-ed or letter to the editor |
| Speech | Template: short speech |
| Social post | Template: social media posts |
A full run is eight drafts: four forms, each for and against. A shorter run still emits the pair for every form the writer asked for. Both sides use the same sourced facts. A figure in brackets is a placeholder: replace it with a source or cut it. The header on every draft is the writer's name and the sentence "Not a FRAME position."
The running example in the templates, Riverton's Measure 12, is available when the writer has not brought their own claim. A writer who brings a claim uses that claim, still for and against.
Before anything is shown as finished, run the checks on Before you publish: the fair-play check.
Hard refusals
Studio refuses these requests and does not return a draft:
- Persona networks, fake accounts, or any instruction to speak as someone other than the named writer.
- Deepfakes of real people, including voice or face.
- Corpus-poisoning recipes, or any steps for planting text where a model or a search index will repeat it as fact.
- A "generate propaganda" action, or any other control that emits a covert operation, an unlabeled outlet, or a fake institute.
- Deceptive techniques as an executable playbook. Those techniques stay in the handbook so a reader can recognise and counter them.
A refusal states which line was crossed and points to the handbook page that documents the method. It does not include a partial draft, a workaround, or a "fictional" version of the same operation.
How to build it later
One form, then one refusal check, then one lookup, then the drafts.
- Fields: writer name (required, printed on every draft), technique id (a select list from the taxonomy), audience (short text), claim (one sentence), and which of the four forms to emit. There is no side toggle. Both sides are always produced.
- Lookup: filter archive objects by the technique id, keep three with different actors, and attach one Learn page. If the archive has fewer than three actors for that id, say so and list what exists. Do not invent an example.
- Refusal check: run it before any draft. If the claim or the audience text asks for a persona, a fake account, a deepfake, poisoning, or unlabeled distribution, return the refusal only.
- Storage: drafts belong to the writer. FRAME does not publish them and does not file them as briefs.
Until that form exists, this page is the contract a builder has to meet.