Orchestrateur : studio.db et file de travaux claim/heartbeat/done (première tranche) #1773

Merged
hermes-fusion merged 1 commit from hermes/orchestration-file-jobs into main 2026-10-16 15:25:02 +02:00
Collaborator

Carte t_4c8acd63. Première tranche du plan d'architecture LXC 132/130 : crate _tableau/rust/orchestrateur (non déployé, aucune route /api de service-tableau ne change, front non touché).

  • studio.db : schéma du plan tel quel + heartbeat_at, token_budget, job_tentatives (ajouts, rien renommé) ; refus de démarrer sur NFS/SMB/9p/sshfs.
  • claim atomique (transaction IMMEDIATE, UPDATE ... RETURNING), heartbeat, surveillance au claim (pas de sondage).
  • done idempotent par (job, essai) : jetons comptés une fois ; done tardif après reprise refusé (409).
  • budget borné au job (max_tokens = min(étape, reste du projet)) ; PAUSED_QUOTA ; dépassement -> DEAD.
  • machine SCRIPTING -> TTS -> PROMPTS -> IMAGES -> RENDER, visual_count depuis l'en-tête WAV.
  • HTTP gardé par jeton (ORCH_JETON obligatoire) ; réveil du worker en 2 s au plus, échec écrit au journal.

Tests : cargo test --release --locked : 41 binaires, 168 passés, 0 échec ; build --locked sans avertissement. Doc : _tableau/rust/orchestrateur/ORCHESTRATEUR.md.

Carte t_4c8acd63. Première tranche du plan d'architecture LXC 132/130 : crate `_tableau/rust/orchestrateur` (non déployé, aucune route `/api` de service-tableau ne change, front non touché). - studio.db : schéma du plan tel quel + `heartbeat_at`, `token_budget`, `job_tentatives` (ajouts, rien renommé) ; refus de démarrer sur NFS/SMB/9p/sshfs. - claim atomique (transaction IMMEDIATE, UPDATE ... RETURNING), heartbeat, surveillance au claim (pas de sondage). - done idempotent par (job, essai) : jetons comptés une fois ; done tardif après reprise refusé (409). - budget borné au job (max_tokens = min(étape, reste du projet)) ; PAUSED_QUOTA ; dépassement -> DEAD. - machine SCRIPTING -> TTS -> PROMPTS -> IMAGES -> RENDER, visual_count depuis l'en-tête WAV. - HTTP gardé par jeton (ORCH_JETON obligatoire) ; réveil du worker en 2 s au plus, échec écrit au journal. Tests : cargo test --release --locked : 41 binaires, 168 passés, 0 échec ; build --locked sans avertissement. Doc : `_tableau/rust/orchestrateur/ORCHESTRATEUR.md`.
orchestrateur : studio.db et file de travaux claim/heartbeat/done (première tranche)
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 3m8s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 3m4s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 9m28s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 10m23s
a9f9562783
Cause : le plan d'architecture LXC 132/130 faisait écrire le 130 dans studio.db par le point de
montage partagé (le WAL de SQLite n'y tient pas sur un système de fichiers réseau), comptait les
jetons d'un webhook done à chaque appel (un done renvoyé après coupure comptait deux fois), et
reprenait un job long mais vivant (chien de garde sur started_at).

Remède : un crate orchestrateur, non déployé, qui seul ouvre studio.db (schéma du plan tel quel,
plus heartbeat_at, token_budget et job_tentatives) ; claim atomique, heartbeat, surveillance
lancée au claim (aucun sondage), done idempotent par tentative, budget borné au job et au projet,
machine à états SCRIPTING -> TTS -> PROMPTS -> IMAGES -> RENDER avec visual_count calculé en Rust
depuis l'en-tête WAV ; serveur HTTP gardé par jeton, réveil du worker qui échoue en 2 s et le dit.
Refus de démarrer sur NFS/SMB/9p/sshfs. Aucune route de service-tableau ne change.
hermes-fusion deleted branch hermes/orchestration-file-jobs 2026-10-16 15:25:02 +02:00
Collaborator

Fusionnée automatiquement par fusion-auto (forge) : CI verte, sans conflit.

Fusionnée automatiquement par `fusion-auto` (forge) : CI verte, sans conflit.
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!1773
No description provided.