ArchitectureBibliotheque systeme — le registre des 24 composants

Bibliotheque systeme — le registre des 24 composants

Une ligne par composant de la data source Notion 🧩 Bibliotheque systeme — Prompts, Scripts & Automatisations (collection://794b3bd2-9603-483c-bd54-38e446d5d8f0), avec l'endroit exact ou il vit dans ce depot. C'est la…

Une ligne par composant de la data source Notion 🧩 Bibliotheque systeme — Prompts, Scripts & Automatisations (collection://794b3bd2-9603-483c-bd54-38e446d5d8f0), avec l'endroit exact ou il vit dans ce depot.

C'est la source. studio-agency-os.md porte le recit et compte ; il compte d'apres ce fichier. Deux endroits qui comptent la meme chose, c'est le probleme que ce registre corrige.

Garde : src/test/studio-library-register.test.ts verifie qu'il y a bien 24 lignes, que chaque chemin cite existe, et que le compteur du recit correspond. Un registre qui rouille se lit comme a jour, c'est pire que pas de registre.

Pourquoi il existe

Le chantier 3.10 pose une regle : un composant ne doit jamais exister aux deux endroits, et chaque composant cable sort de Notion. Quatorze sur vingt-quatre sont cables (le compte de la table plus bas : 2 en code, 12 en prompt ; cette phrase a dit « Dix-sept » puis « Dix-neuf » avant que le plan C, retire le 2026-09-26 par l'ADR 0043, emporte cinq composants de code) ; aucun n'etait sorti, parce que rien ne disait ou il etait parti. Quelqu'un qui ouvre Prompt — Hook Writer e-commerce dans Notion n'avait aucun moyen de savoir qu'il vit dans l'etape IDEATE de creative-ads/prompt.md. Il le modifie dans Notion, et la divergence commence la.

Le registre

Legende de la colonne Etat : ✅ code = regle executable · ✅ prompt = instruction d'un skill · 📄 doc = decrit ici et nulle part ailleurs (rien a executer) · ❌ = pas implemente, ou ❌ retire : implemente puis supprime avec le plan C (ADR 0043), garde ici pour que le composant Notion ne soit pas recable par erreur.

#Composant NotionDomaineEtatOu il vit
1Scoring prospect e-commerce /100Sales❌ retireretire avec le plan C (ADR 0043, app-shell/3028) : BoostEcom n'a ni agence ni client externe. Vivait dans features/studio/prospect.ts, supprime
2Templates outreach — Email, DM & follow-upSales❌ retireretire avec le plan C (ADR 0043, app-shell/3028) : BoostEcom n'a ni agence ni client externe. Vivait dans lib/studio/outreach.ts et le dialogue « Write to », supprimes
3Scoring onboarding client /100Onboarding❌ retireretire avec le plan C (ADR 0043, app-shell/3028) : BoostEcom n'a ni agence ni client externe. Vivait dans features/studio/production-gate.ts (scoreOnboarding), supprime
4Checklist — Client Go / No-Go ProductionOnboarding❌ retireretire avec le plan C (ADR 0043, app-shell/3028) : BoostEcom n'a ni agence ni client externe. productionReadiness et les colonnes de gate de Store sont supprimes
5Template Brand System — brandsystem.mdOnboarding✅ promptskills/create-shopify-brand/prompt.md → StoreContext.modules.brandKit, les 5 champs de production compris depuis l'item 0034. lib/studio/brand-system.ts les lit et pose les trois etats d'un claim ; creative-ads les lit a son etape 0
6Prompt — Avatar Strategist e-commerceStrategy✅ promptskills/creative-ads/prompt.md, etape IDEATE — Avatar Card a 12 champs
7Prompt — Matrice Avatar × AngleStrategy✅ promptcreative-ads/prompt.md, IDEATE — 14 familles d'angles fermees
8Prompt — Hook Writer e-commerceStrategy✅ promptcreative-ads/prompt.md, IDEATE — 10 hooks en 7 types, chacun score /100
9Process — Competitive Creative IntelligenceStrategy✅ promptcreative-ads/prompt.md, etape OBSERVE — retour en 6 parties + « visible n'est pas performant ». Les donnees viennent du pilier intelligence (getCompetitorAds, AdCreativeAnalysis)
10Prompt — Script video 10–15 secProduction✅ promptcreative-ads/prompt.md, etape CREATE — 7 sorties dont timestamps et shot list
11QA video — Checklist finaleQA✅ prompt + codecreative-ads/prompt.md, etape QC — 15 points bloquants ; le verdict humain est StudioAssetStatus + les 9 motifs de StudioAssetRejection sur /ops/creative/qc
12Prompt — PDP Conversion ArchitectPDP / CRO✅ promptskills/pdp-conversion/prompt.md — 6 a 10 slides, un job decisionnel par slide
13Template — PDP Carousel Slide BriefPDP / CRO✅ promptpdp-conversion/prompt.md — brief a 12 placeholders, 10 champs par slide
14Prompt — Vector Benefit Icon SystemDesign System✅ promptpdp-conversion/prompt.md — 9 champs d'icone, 8 contraintes SVG
15Checklist — QA PDP Conversion SystemQA✅ promptpdp-conversion/prompt.md — 17 points, 3 gates humaines
16Process — PDP Conversion System End-to-EndPDP / CRO✅ promptpdp-conversion/prompt.md — la chaine complete du module
17Variables systeme — Creative TaxonomySystem✅ codelib/studio/taxonomy.ts — les 9 termes, 8 exigibles a l'ecriture, comptage des non-tracables (item 0030)
18Feedback Loop — Winner / Loser / Next TestLearning✅ codelib/studio/learning.ts + la section de feedback-loop-panel.tsx sur /ops/creative/concepts (item 0031)
19Logique — Offer Architecture: Foundation vs FactorySystem❌ retireretire avec le plan C (ADR 0043, app-shell/3028) : BoostEcom n'a ni agence ni client externe. Store.oneShotFoundation[] / Store.contentFactory[] et offerScope sont supprimes
20Automation Master Flow — Lead → LearningSystem📄 doc§1 ci-dessous — la chaine est cablee maillon par maillon, sans orchestrateur unique, deliberement
21Process — Creative Mass Engine CadenceSystem📄 doc§2 — la cadence de livraison client (open-creative-drop) est retiree avec le plan C ; restent la revue hebdomadaire (Feedback Loop) et les rythmes longs, non cables
22Catalogue des competences / agentsSystem📄 doc§3 — les 13 competences du SOP contre les 10 skills et le roster @Atlas
23Logique — Omnichannel Creative IntelligenceSystem📄 doc + ✅ partiel§4 — les 7 champs du CORE sont portes depuis l'item 0035 et un modele peut les ecrire depuis l'item 0036 ; VIDEO et PDP sont cables, EMAIL et LANDING non
24Logique — Value Density & Cost AdvantageSystem📄 doc + ✅ partiel§5 — le cockpit mesure le cout, pas la valeur ; l'arbitrage reste humain

Compte : 24. ✅ code 2 · ✅ prompt 12 · 📄 doc 5 · ❌ 5.

Deux chiffres, et ils ne disent pas la meme chose :

  • 19 executes — les composants qui sont devenus une regle ou une instruction que la machine applique (✅ code + ✅ prompt). C'est le compteur que porte studio-agency-os.md.
  • 24 sortis de Notion : tous, depuis l'item 0033. Les cinq composants d'orchestration sont radies par le fait d'etre documentes ici : ils n'ont plus besoin de vivre la-bas.

Les cinq composants d'orchestration

Ils decrivent des choses deja codees, eparpillees sur des crons, des skills, le schema et le cockpit. Aucun fichier ne disait « voici la chaine et voici ou chaque maillon vit ». Les voici, et c'est ce qui permet de les radier de Notion.

1. Automation Master Flow — Lead → Learning

Declencheur : changement de statut / gate atteint. Gates humaines : Brand System, concept final, QA. (qualification, claims et envoi client sont partis avec le plan C, ADR 0043.)

La chaine du SOP, maillon par maillon, avec ce qui l'execute :

MaillonCe qui l'execute
Lead → Closing → Client❌ retire avec le plan C (ADR 0043) : plus de prospect, plus de client externe. La marque est la boutique de BoostEcom (plan A) ou celle du marchand (plan B)
Brand Systemskill create-shopify-brand → StoreContext.brandKit
GATE — Brand Systemla revue humaine du brand kit ; le Go/No-Go a 11 conditions est retire avec le plan C
Avatar Cards · Angle Matrixskill creative-ads, etape IDEATE
Conceptsoutil saveCreativeConcept → CreativeConcept, lu sur /ops/creative/concepts (item 0036 — jusque-la ce maillon n'avait aucun ecrivain appele)
GATE — concept finalvalidateConcept, permission studio.concept.validate
Hooks + Scriptscreative-ads, IDEATE puis CREATE
Productionoutil saveStudioAsset → StudioAsset + sa taxonomie + conceptId, le lien vers le concept qui l'a produit (item 0037)
QAcreative-ads etape QC, puis le verdict humain sur /ops/creative/qc (Growth) ou dans le Studio marchand
GATE — QAapproveStudioAsset / rejectStudioAsset
Deliveryplan A : brouillon Postiz ; plan B : l'asset reste dans la boutique. StudioDrop et /drop/[token] sont retires (ADR 0043)
Performancemetriques de CreativeLearning
LearningrecordLearning (item 0031)
Next TestnextTestVariable + la liste des tests ouverts
Strategyle concept suivant, ecrit depuis la section Feedback Loop

Les trois gates restantes existent toutes, et aucune n'est franchissable par une machine : chacune est une ecriture derriere une permission studio.*.

Il n'y a pas d'orchestrateur unique, et il ne doit pas y en avoir. Le pseudo-flow Notion decrit un script qui enchaine les 18 etapes. Ce depot le refuse pour une raison precise : six des maillons sont des decisions humaines, et un moteur qui « attend » a six endroits est un moteur qui passe son temps arrete, avec, en prime, un etat de progression a maintenir en double du statut des entites. Ici l'etat est le statut (ConceptStatus, StudioAssetStatus), et il n'y a plus aucun automate : le tick de cadence est parti avec le plan C.

Le seul maillon qui progressait tout seul, open-creative-drop (un drop et trois Task par cycle), est supprime avec le plan C (ADR 0043).

2. Process — Creative Mass Engine Cadence

Gate : aucun volume sans hypothese ; QA obligatoire ; chaque batch doit produire un learning exploitable.

Cinq rythmes dans le SOP. Ce qui existe :

RythmeSOPIci
Quotidiensignaux, hooks, production, QA, logger un learningla QA et les learnings sont des surfaces ; le tick creative-drop-tick qui ouvrait le travail est retire (ADR 0043)
Hebdomadairebatch d'angles, revue winners/losers, mini veille✅ depuis l'item 0031 — la section Feedback Loop est cette revue
Mensuelrefresh Avatar × Angle, offres, preuves, saisonnalite, capacite/cout/marge❌ aucun declencheur, aucune surface
Trimestrielrepositionnement, formats/canaux sous-exploites, mise a jour des prompts❌
Annuelbenchmark complet, refonte de l'OS❌

Store.creativeCadence, la cadence de livraison au client, est retiree du schema avec le plan C (ADR 0043) ; la colonne reste orpheline en base jusqu'a son DROP operateur.

Les trois rythmes longs sont des revues, pas de la production. Les cabler avant d'avoir tenu le rythme court plusieurs fois serait exactement ce que le SOP interdit ailleurs : automatiser une chose qui n'a pas encore tourne a la main.

3. Catalogue des competences / agents

Treize competences au SOP. Le routeur de skills (skills/router.ts) selectionne un seul skill par message : treize petits skills se disputeraient hook, angle, avatar, et le classifieur trancherait au hasard. Les competences sont donc des etapes a l'interieur de skills, pas des skills.

Competence SOPOu
Lead Scorer❌ retire avec le plan C (ADR 0043)
Brand Researcher · Brand System Builderskill create-shopify-brand
Avatar Strategist · Angle Strategist · Hook Writercreative-ads, etape IDEATE
Script Writer · Shot Planner · Avatar Directorcreative-ads, etape CREATE
Creative Produceroutils generateImage + saveStudioAsset
QA Checkercreative-ads, etape QC + les 9 motifs de rejet
Delivery Manager❌ retire avec le plan C (ADR 0043)
Performance AnalystrecordLearning + lib/studio/learning.ts

A ne pas confondre avec le roster produit (agents/identity-registry.ts) : @Atlas, Maya, Marco, Otis, Faye, Sam sont les agents que la plateforme vend a ses utilisateurs. Les treize competences ci-dessus sont le decoupage interne du Studio. Les deux listes n'ont pas a se correspondre.

4. Logique — Omnichannel Creative Intelligence

Gate : la strategie centrale reste identique ; seule l'execution change selon le canal.

CORE   = Product × Avatar × Angle × Objection × Proof × Offer × Learning
VIDEO  = CORE + Hook + Script + Format + Placement
PDP    = CORE + Decision Job + Slide Order + Visual Hierarchy + Buy-box
ICON   = CORE + Benefit/Feature + Visual Metaphor + UI Context
EMAIL  = CORE + Lifecycle Stage + Subject/Lead + CTA
LANDING= CORE + Page Intent + Section Sequence + CTA

Le CORE porte sept termes. Depuis l'item 0035 ils sont tous quelque part :

Terme COREColonne
ProductCreativeConcept.product
AvatarmarketingAvatar
Angleangle
Objectionobjection
ProofCreativeConcept.proof — depuis l'item 0035, advisory et jamais bloquant
OfferCreativeLearning.offer (item 0031 — l'offre appartient au test)
LearningCreativeLearning

Canaux : VIDEO est creative-ads, PDP et ICON sont pdp-conversion. EMAIL et LANDING n'ont pas de skill : le SOP les vend (« declinaisons reutilisables pour paid social, email, landing pages ») et rien ne les produit.

La regle « ne jamais recreer une strategie isolee par canal » est deja tenue par la structure : les deux skills existants lisent le meme CreativeConcept et le meme brandKit.

Elle ne tenait toutefois qu'en lecture. Jusqu'a l'item 0036, rien ne pouvait ecrire un CreativeConcept : les sept termes existaient, la table qui les porte n'avait aucun createur appele, et « les deux skills lisent le meme concept » decrivait deux lecteurs d'une table vide. L'outil saveCreativeConcept est ce qui fait exister la ligne, et il ecrit sans jamais valider : VALIDATED n'est pas dans son schema d'entree, donc la gate humaine reste la seule facon d'y arriver.

5. Logique — Value Density & Cost Advantage

Gate : ne jamais baisser le prix si marge, QA ou capacite se degradent sous le standard.

Value Density = valeur utile livree / cout client

Le cockpit (features/studio/cockpit.ts) mesure sept KPIs (onze jusqu'au retrait du plan C, qui a emporte les quatre KPIs de drop), tous derives a la lecture. Trois portent le denominateur et un seul approche le numerateur :

TermeKPI
cout internecostPerApproved — depense / creative approuvee, et depuis l'item 0037 par concept : StudioAsset.conceptId joint la depense a la strategie qui l'a decidee
qualitefirstPass — taux de QA passee du premier coup
capacite❌ plus mesuree : leadTime, dropsPublished et onTime lisaient StudioDrop, retire avec le plan C
valeur utilelearnings et actionable — le plus proche substitut

La valeur livree n'est pas mesurable ici et ne le sera pas. Elle vit chez le client (ROAS, CPA, conversion), et le Studio ne l'observe que lorsque la marque la partage : c'est-a-dire dans CreativeLearning, avec la distinction measured / asserted de l'item 0031. Un KPI « Value Density » calcule a partir de donnees que nous n'observons pas serait precisement le genre de chiffre invente que le SOP interdit partout ailleurs.

Le gate reste donc un arbitrage humain, adosse a deux verrous qui, eux, sont dans le code : Store.marginViable et Store.capacityValidated, deux des onze conditions du Go/No-Go. Baisser un prix sous le standard n'est pas empeche par une formule ; c'est empeche par un GO qui ne se leve plus.

6. Offer Architecture, ce qui reste humain

Le composant 19 est code pour sa partie verifiable (oneShotFoundation[], contentFactory[], la condition offerScope), et son gate, « aucune brique recurrente sans besoin recurrent reel ; aucune refonte one-shot sans changement concret », ne l'est pas. Il ne peut pas l'etre : rien dans les donnees ne distingue un besoin recurrent reel d'un besoin recurrent vendu. C'est une question posee au commercial, pas au systeme.

Les trous, et ou ils sont suivis

TrouItem
Templates outreach — aucun message n'existe✅ ferme par backlog/app-shell/0033
brandsystem.md sans les champs de production creative✅ ferme par backlog/ai-platform/0034
CreativeConcept.proof manquant au CORE omnicanal✅ ferme par backlog/app-shell/0035
CreativeConcept n'a aucun createur✅ ferme par backlog/ai-platform/0036 — l'outil saveCreativeConcept ecrit ce que l'etape IDEATE produit
StudioAsset.conceptId reste null✅ ferme par backlog/ai-platform/0037 — l'id est verifie contre le store avant l'ecriture, et un id qui ne resout pas coute le lien, jamais l'asset
Rythmes mensuel / trimestriel / annuel du Mass Enginepas d'item — a tenir a la main d'abord, cf. §2
Canaux EMAIL et LANDING sans skillpas d'item — le SOP les vend, personne ne les a encore vendus