You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Plan — Surface complète du système tuner + interface (control-plane app de Terry)
But : répertorier TOUTES les commandes, affichages et suivis du tuner, et les mapper
sur des panneaux de l'app (web + Tauri, #285), avec un suivi git visuel de bout en bout.
📊 Observabilité télémétrie — les 10 streams, dispo par stream (available+reason), courbes fitness par sujet. ← telemetry__* + telemetry_cache.
🧩 Sujets — les 8 TunableSubjects : enabled, risk_tier, dernier cycle, # propositions. ← subject_state.
🔬 Scouts de recherche — fraîcheur du registre, rapport de drift (⚠ DRIFT, ✚ NEW), runs des scouts, rejets de la vérif adversariale (la sécu qui fait son job), source:research. ← model-registry.json _meta + logs scouts.
🔒 Chaîne d'audit — log infalsifiable, provenance de chaque nombre/décision, verify-chain status (✓/✗). ← audit log.
🌳 Suivi GIT visuel(NOUVEAU — voir §3).
3. SUIVI GIT VISUEL (la demande)
Maintenant que chaque apply commit [tuner] <subject> proposal #<id> (alt …) via <source> sur la cible git-trackée, on a un trail exploitable visuellement :
Timeline / graphe git des commits tuner across repos (simon-memory + configs) — un nœud par apply, coloré par sujet, lié à son outcome (verdict).
Par proposition : le commit_sha, le diff visuel (avant/après), git blame (qui/quand/pourquoi), et un bouton Revert = git revert <sha> (en plus de l'inverse_patch).
3 couches de revert exposées : .bak (immédiat) · inverse_patch (auto-revert sur régression) · git revert (historique propre) — l'UI montre laquelle est dispo.
Lien outcome↔commit : chaque ligne d'Outcomes pointe vers son commit ; un auto-revert apparaît comme un 2e commit revert lié.
Diff de la proposition AVANT apply : tuner__pending expose diff_or_content → preview diff dans la file du gate (avant même le commit).
4. CONTRATS API (ce que l'app lit — un seul gateway)
GET /tuner/proposals?status= ← proposals (pending/applied/refused) + jointure outcomes.
GET /tuner/outcomes/:id ← baseline/mesuré/verdict/commit_sha.
Phase 2 (gate) : File du gate (1) avec approve/refuse + diff preview — déjà câblé côté Telegram, l'app = 2e surface canonique.
Phase 3 (git visuel + scouts) : panneau Git (7) + Scouts (5) — la timeline, le diff, le revert, le drift report.
Phase 4 : Sujets (4) + extension aux autres scouts.
6. POUR TERRY (alignement gouvernance)
Tout mutant reste derrière le gate humain ; l'app rend visible la provenance (audit) + le trail git (revert propre) = exactement l'angle finance-réglementée / governance de POVIEW.AI.
Plan — Surface complète du système tuner + interface (control-plane app de Terry)
But : répertorier TOUTES les commandes, affichages et suivis du tuner, et les mapper
sur des panneaux de l'app (web + Tauri, #285), avec un suivi git visuel de bout en bout.
1. INVENTAIRE de la surface tuner
A. Commandes & outils (les "verbes")
wisecroncron-run(détecte→propose),apply <id> --alt,mature(évalue fitness),status,diagnoseskills-tuner/clituner__*propose,propose_external(research),pending,list,apply,refuse,mature,statustelemetry__*capabilities,query(read-only)registry-refresh(fetch+drift)wisecron-proposals-notifier.py(boutons ✅/⏸/❌) +pending-worker.py(dispatch)B. Sources de données (les "noms" à afficher)
proposals(pending/applied/refused),outcomes(baseline→mesuré→verdict),priors(EWMA),subject_state,rollback_history,telemetry_cachegate_propose,gate_apply,gate_refuse,wisecron_proposal_applied(+commit_sha),wisecron_auto_revert(+_failed),wisecron_rollback,wisecron_cycle_start/complete,wisecron_signature_mismatch,wisecron_validate_failed,fitness_active/inactive,telemetry_querysimon-memory, fichiers de config → commits[tuner] <subject> #<id>+ inverse_patch +.bak2. PANNEAUX de l'interface (mapping)
pending: sujet, source (research vs télémétrie), diff preview, boutons Approuver/Plus-tard/Rejeter. ←tuner__pending+proposals.outcomes+priors.telemetry__*+telemetry_cache.subject_state.⚠ DRIFT,✚ NEW), runs des scouts, rejets de la vérif adversariale (la sécu qui fait son job), source:research. ← model-registry.json_meta+ logs scouts.3. SUIVI GIT VISUEL (la demande)
Maintenant que chaque apply commit
[tuner] <subject> proposal #<id> (alt …) via <source>sur la cible git-trackée, on a un trail exploitable visuellement :outcome(verdict).commit_sha, le diff visuel (avant/après),git blame(qui/quand/pourquoi), et un bouton Revert =git revert <sha>(en plus de l'inverse_patch)..bak(immédiat) · inverse_patch (auto-revert sur régression) · git revert (historique propre) — l'UI montre laquelle est dispo.revertlié.tuner__pendingexposediff_or_content→ preview diff dans la file du gate (avant même le commit).4. CONTRATS API (ce que l'app lit — un seul gateway)
GET /tuner/proposals?status=← proposals (pending/applied/refused) + jointure outcomes.GET /tuner/outcomes/:id← baseline/mesuré/verdict/commit_sha.GET /tuner/telemetry/:stream← telemetry__query (read-only, = feat(telemetry): host telemetry over MCP — read-only measurement surface (telemetry__*) [#275 brick 1] #286).GET /tuner/audit?since=← chaîne d'audit + verify-chain.GET /tuner/git/:repo/log+/diff/:sha+POST /tuner/git/revert/:sha← le suivi git visuel.POST /tuner/apply/:id+/refuse/:id← le gate (déjà les boutons Telegram, mêmes appels).tuner.events← stream live (nouvelle proposition, apply, revert) pour la file + la timeline.5. PHASING (s'emboîte sur les briques déjà faites)
tuner__*(feat(tuner): OutcomeLoop + model-routing subject — single-subject proof [#275 brick 2, stacked on #286] #287), télémétrietelemetry__*(feat(telemetry): host telemetry over MCP — read-only measurement surface (telemetry__*) [#275 brick 1] #286), boutons Telegram (notifier+worker), git-commit dans l'apply (câblé ce jour), scouts (model-routing live + mcp_plugin/memory écrits).6. POUR TERRY (alignement gouvernance)