fix(tableau) : Multica retiré des options, libellés neutres, six pannes corrigées — et l'orchestrateur jusqu'à l'archive #1826

Merged
foXaCe merged 2 commits from fix/studio-2026-10-18 into main 2026-10-18 07:45:54 +02:00
Owner

Deux commits.

Le tableau (8ea5da4e) — Multica n'est plus un réglage (la section « Qui pilote le tableau » disparaît) et
les boutons perdent le nom de l'agent : « Signaler », « Envoyé », « Confié », « Traité ». Six pannes
corrigées le même jour : l'onglet YouTube caché par erreur (57f4e068), /processus/version.json jamais
écrit, /api/rythme et /api/budget non relayés, les douze onglets montés au chargement (l'Atelier attendait
/api/top, 215 Ko), les cartes de chaîne et les lignes vidéo privées de « Chaîne »/« Studio », et les fichiers
que le conteneur de build ne recevait pas (tb_chaines.py, tableau.css, reglages.html).

L'orchestrateur (2af45ed4) — RENDER → ATTENTE_OPERATEUR → ARCHIVED (l'arrêt humain que le plan
omettait), la reprise d'un projet PAUSED_QUOTA à son étape d'avant la pause, et le cache BLAKE3 des sorties
payantes (asset_cache : une relance identique ne repaie pas). Plus POST /api/projects/lire.

Mesuré : 568 tests front, svelte-check 0/0, 27 bancs de l'orchestrateur, clippy -D warnings et fmt propres,
build du 130 vert (48 suites Rust, vitest 0).

Deux commits. **Le tableau (8ea5da4e)** — Multica n'est plus un réglage (la section « Qui pilote le tableau » disparaît) et les boutons perdent le nom de l'agent : « Signaler », « Envoyé », « Confié », « Traité ». Six pannes corrigées le même jour : l'onglet YouTube caché par erreur (`57f4e068`), `/processus/version.json` jamais écrit, `/api/rythme` et `/api/budget` non relayés, les douze onglets montés au chargement (l'Atelier attendait `/api/top`, 215 Ko), les cartes de chaîne et les lignes vidéo privées de « Chaîne »/« Studio », et les fichiers que le conteneur de build ne recevait pas (`tb_chaines.py`, `tableau.css`, `reglages.html`). **L'orchestrateur (2af45ed4)** — `RENDER → ATTENTE_OPERATEUR → ARCHIVED` (l'arrêt humain que le plan omettait), la reprise d'un projet `PAUSED_QUOTA` à son étape d'avant la pause, et le cache BLAKE3 des sorties payantes (`asset_cache` : une relance identique ne repaie pas). Plus `POST /api/projects/lire`. Mesuré : 568 tests front, svelte-check 0/0, 27 bancs de l'orchestrateur, `clippy -D warnings` et `fmt` propres, build du 130 vert (48 suites Rust, vitest 0).
Le studio ne se sert plus de Multica (opérateur, 2026-10-17) : le réglage « Qui pilote le tableau » disparaît
de la page des Réglages (page, socle, service Rust), et les boutons perdent le nom de l'agent — « Signaler »,
« Envoyé », « Confié », « Traité ». Les bancs qui lisaient ces libellés suivent.

Pannes corrigées le même jour, mesurées dans la console et sur les pages :
- l'onglet YouTube était caché par erreur (`57f4e068`, « cacher comme les anciens onglets ») : il disparaissait
  de la barre latérale. Remis visible, et les deux bancs rouges qui l'attendaient repassent ;
- `/processus/version.json` : `construire.sh` l'écrit enfin (404 en boucle dans la console, version « inconnu »
  dans le relevé d'erreurs) ;
- `/api/rythme` et `/api/budget` : relayés par `serveur.py`, qui les renvoyait en 404 alors que le service les
  sert depuis le 14/10 ;
- les onglets se montent à leur ouverture, plus tous au chargement : l'Atelier attendait `/api/top` (215 Ko) et
  dix autres routes d'onglets qu'on ne regardait pas (`quandVisible`, `main.js`) ;
- les cartes de chaîne retrouvent « Chaîne » et « Studio » (Analytique, Projection, Accueil) et les lignes vidéo
  « Voir sur YouTube » et « Studio » (Vidéos, Sujets) : deux liens de 17 px à côté d'un bouton de 36 px ne se
  cliquaient pas pareil. Les identifiants de chaîne viennent des trois routes (Rust et Python, parité revue) ;
- `construire.sh` copie au conteneur `tb_chaines.py` et `tableau.css` (deux bancs du front les lisent à côté de
  leur crate : ils passaient sur le poste et échouaient en CI) et le gabarit `reglages.html` à chaque build
  (une copie périmée faisait rougir deux bancs de parité sur une page juste).

Mesuré : `npm test` 568 verts, `svelte-check` 0/0, charte et homogénéité sans nouvel écart, parité Rust/Python
des trois routes revue.
feat(orchestrateur) : la fin d'un projet, son archive, la reprise et le cache BLAKE3
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Failing after 2m15s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 3m53s
2af45ed4a9
Trois pièces que le plan d'architecture laissait hors tranche (`ORCHESTRATEUR.md`), et la table `asset_cache`
que rien n'utilisait.

- **RENDER → ATTENTE_OPERATEUR → ARCHIVED** : le rendu fini s'arrête sur un point d'arrêt HUMAIN — le plan
  passait à `ARCHIVED` et publiait. `POST /api/projects/valider` écrit le récapitulatif Markdown (scènes, voix
  off, prompts, images, durées, jetons) dans `ORCH_ARCHIVE`, retient son chemin et pose `ARCHIVED`, dans une
  seule transaction : un export raté laisse le projet en attente, jamais archivé sans fichier. Pas de `git`
  ici : le service n'a pas de dépôt à sa portée, l'export vers la forge reste un geste d'exploitation.
- **Reprise hors quota** : `POST /api/projects/reprendre` relève le plafond et remet le projet dans son étape
  d'avant la pause (`projects.paused_from`, notée au moment de la pause). Sans étape notée, il reprend à
  l'étape du plus ancien job non terminé ; s'il n'y en a aucun, il refuse plutôt que de deviner `SCRIPTING`.
- **Cache BLAKE3 des sorties payantes** (`asset_cache`) : `GEN_SCRIPT` et `GEN_PROMPT` gardent leur sortie sous
  la clé BLAKE3 de leur entrée (l'étape, ses paramètres, le texte, joints par un octet nul). Au `claim`, une
  sortie déjà connue est appliquée sur place et le job clos (`worker_id = 'cache'`) : aucun worker réveillé,
  aucun jeton dépensé pour une relance identique. La clé porte l'entrée, pas le projet — deux projets du même
  sujet partagent ; une entrée différente ne prend jamais la sortie du voisin. TTS, images et rendu n'ont pas
  de clé : ils n'appellent aucun modèle.

Plus `POST /api/projects/lire` (l'état d'un projet, ses jobs et ses scènes, pour l'écran).

Mesuré : 27 bancs (14 file, 3 http, 4 cache, 6 projet), `cargo clippy -D warnings` propre, `cargo fmt` propre.
Reste hors tranche : le flux SSE vers le front, et le worker du 130.
Collaborator

fusion-auto : pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la CI est rouge (Rust). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
foXaCe merged commit b98cb4e0b7 into main 2026-10-18 07:45:54 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/studio!1826
No description provided.