21 KiB
21 KiB
TODO actif - AI Novel Engine
Backlog courant pour reprendre ai-novel-engine sans melanger le reste avec les lots deja livres.
References:
- contexte courant:
docs/CONTEXTE_PROJET_2026-03-22.md - memoire de reprise:
docs/MEMOIRE_REPRISE_2026-03-22.md - plan courant:
docs/EXECUTION_PLAN_2026-03-22.md - lots livres:
TODO_IMPLEMENTE.md - spec systeme:
docs/SYSTEM_SPEC_2026-03-21.md - agents et sous-agents:
docs/AGENTS_2026-03-21.md
Memoire de reprise
- reference locale mise a jour le 2026-03-23:
apple-coreml:qwen3-4b-instruct-2507-q4f16(3x plus rapide que l'ancienne ref) - ancienne reference locale:
apple-coreml:qwen3.5-4b-onnx-q4f16(remplacee) - reference cloud:
mistral:mistral-large-latest(via Mascarade Batch API, pas de modele en RAM) - Mascarade routing: tout passe par
:8100— Mistral API, Apple CoreML, Ollama P2P - premier candidat Ollama maintenant accepte:
ollama:qwen2.5:7b - preuve cle du 16 mars:
ollama:qwen2.5:1.5ba deja atteintgateviallama.cpp/llama-server - juge narratif secondaire livre sous
core/evaluation/, activable parANE_JUDGE_MODEL - rerun juge du 22 mars:
ollama:qwen2.5:7b->quality_blocked ['truncated_ending', 'missing_risky_decision']ollama:mistral-nemo:latest->quality_blocked ['truncated_ending', 'missing_immediate_consequence']
- reruns comparables budgets manifeste:
ollama:qwen2.5:7b->quality_blocked ['truncated_ending', 'missing_risky_decision', 'incomplete_scene']dansautomation/reports/20260322_qwen2_5_7b_judge_budgetedollama:mistral-nemo:latest->quality_blocked ['truncated_ending']dansautomation/reports/20260322_mistral_nemo_judge_budgeted
- retouche prompt + reruns:
ollama:qwen2.5:7b-> gain partiel: plus d'incomplete_scene, restequality_blocked ['truncated_ending', 'missing_risky_decision']dansautomation/reports/20260322_qwen2_5_7b_judge_promptedollama:mistral-nemo:latest-> regression: retouroutline_like+missing_immediate_consequencedansautomation/reports/20260322_mistral_nemo_judge_prompted
- correctif gate + retouche micro-decision :
ollama:mistral-nemo:latest-> fauxoutline_likesupprime; restequality_blocked ['missing_immediate_consequence']dansautomation/reports/20260322_mistral_nemo_judge_gatefixollama:qwen2.5:7b->missing_risky_decisionsupprime; restequality_blocked ['missing_immediate_consequence']dansautomation/reports/20260322_qwen2_5_7b_judge_gatefix
- retouche "consequence immediate observable" :
ollama:qwen2.5:7b->acceptedsans repair dansautomation/reports/20260322_qwen2_5_7b_judge_consequencefixollama:mistral-nemo:latest-> regression versquality_blocked ['truncated_ending', 'missing_risky_decision', 'missing_immediate_consequence']dansautomation/reports/20260322_mistral_nemo_judge_consequencefix
- runtime utile du 22 mars:
:8091revalide localement viallama-serverpour qwen et mistral:8110repond a/healthmais reste inutilisable pourchat/completionsautomation/next_lots.tomlrepointe maintenant vers/Users/electron/Documents/Projets/mascaradescripts/smoke_local_generation.shaligne maintenant ses budgets non-Apple sur le manifeste (rewrite=1024,repair=1536)
- cote app (2026-03-25):
app_AI-novel-engineintegre maintenantMascarade CoreetMascarade APIpouragents,modelsetchat/completions- le panneau
Generationafficheprovider_status(actif,configure,unauthorized, erreur runtime) et le preset recommande suit maintenant le premier modele reellement actif - un
Wizard Agentsdedie guide maintenant l'usage des agents Mascarade (source -> catalogue -> brief -> routage -> run -> apply) et persiste cet etat par projet - le
Wizard Agentsgarde maintenant un historique recent des runs agent et affiche une comparaisonbrouillon / sortie agentavant application - le
Copilot / Writing Toolssait lancer l'agent Mascarade selectionne, reinjecter sa reponse dans le fil Copilot, puis comparer inlinebrouillon courant/derniere reponse Copilot/dernier manuscrit pipeline - le lot
Copilot hybridea demarre: les requetes Copilot passent maintenant par une coucheCopilotServiceavec fallback automatiqueApple Intelligence -> backend - le
Copilotconsomme maintenant un contexte ANE outille (scene,brouillon,prompt,gate,manuscrit,agent) prepare hors de l'UI pour les futures integrationsApp Intents - le
Copilotajoute maintenant un RAG local-first sur le graphe projet et les artefacts pipeline, avec visualisation des extraits recuperes dans l'app - les premieres actions outillees du
Copilotsont maintenant reexecutables depuis le panneau de contexte (scene,gate,manuscrit,agent,pipeline) - les ecritures destructives du brouillon depuis le
Copilotou un agent Mascarade demandent maintenant confirmation - l'app expose maintenant un preset
MLX local:8092avecmlx-community/Ministral-3-3B-Instruct-2512-4bitet un scriptscripts/mlx_runtime.shpour diagnostiquer / demarrer le runtime - l'app expose maintenant une bibliotheque locale de modeles HF/MLX (cache HF dedie, conversion MLX, nettoyage source optionnel, activation) et un export dataset JSONL compatible
KIKI-models-tuning - la refonte UI du 2 avril recentre maintenant l'app sur trois axes (
Ecrire,IA,Analyser & Ops), avec un header a signaux et un inspecteur tabuleContexte / Runtime / Pipeline - un nouvel ecran
Runtime & modelescentralise maintenant la configuration IA, les providers Mascarade, le runtime MLX, la bibliotheque locale HF/MLX et l'export dataset KIKI - les telechargements HF affichent maintenant une progression reelle, une annulation propre et un token HF optionnel cote app
- l'app expose maintenant un preflight
compatibilite MLX;croissantllm/CroissantLLMChat-v0.1est telecharge localement et classeConvertible MLX croissantllm/CroissantLLMChat-v0.1a maintenant aussi un smoke reel MLX local valide (~812M, footprint stable~3.7G, pic~6.7G,~1.0-1.8 s), mais le replay ANE reel reste insuffisant (repair_v1corrompu,gate/judgefragiles), donc pas encore de promotionQualite FR- le 2 avril,
mlx-community/Ministral-3-3B-Instruct-2512-4bita ete telecharge et valide en reel sur:8092(health,v1/models,v1/chat/completions) - le 2 avril,
mlx-community/Qwen2.5-7B-Instruct-4bita ete telecharge et rejoue en reel sur:8092; il tient le JSON parseable surgate/judgesous~4.9Gde footprint et~5.7Gde pic memoire, mais pas encore le contrat ANE complet sans post-traitement schema/consistance - l'app expose maintenant un preset
Mistral localpointant vershttp://127.0.0.1:8091avecollama:mistral-nemo:latestpour un chemin local type TurboQuant / llama.cpp - l'app expose aussi deux profils FR explicites:
croissantllm/CroissantLLMChat-v0.1(FR local experimental) etcroissantllm/CroissantLLMBase(R&D ANE) - reverification ANE du 2 avril:
mlx-community/Ministral-3-3B-Instruct-2512-4bitsert bien un vrairepair_v1apres completion du cache, mais ni lui niCroissantLLMChatne respectent encore assez bien les contrats JSONgate/judgepour servir de moteur ANE strict local - le lot
App Intentsexpose maintenant l'ouverture de l'app, le resume de scene, l'ouverture de scene ciblee, une aide de rewrite locale, et le lancement du pipeline ANE - la provenance exacte d'ecriture est maintenant persistee dans
DraftSnapshot.sourcepourCopilot, agents, generation directe et pipeline - verification bundle app du 29 mars:
validate-app-intentsconfirme que les symboles intents sont bien dans le binaire, mais que l'exposition systeme reste bloquee par l'absence de metadonneesApp Intentset un Xcode local casse
- reverification runtime du 25 mars:
Mascarade Core:8100repond ahealthetv1/modelsMascarade API:3100repond ahealth,v1/api/modelsetv1/api/agents/cataloglocal_serverexpose maintenantprovider_status/v1/providers/statuset ne publie plus les providers non autorises comme disponiblesclaude:claude-sonnet-4-6passe maintenant en bout-en-bout sur:8100/v1/chat/completionset:3100/api/v1/chat/completionsmistraletopenairestent configures localement, mais sont correctement marquesunauthorized
- etat live reverifie (2026-03-16 session 3) :
:8201UP —qwen3.5-4b-onnx-q4f16actif:11434UP:8100UP (mascarade —apple-coreml+ollamaproviders):8091UP —ollama:qwen2.5:7b(dernier rerun gatefix)- lot
baselinestermine dansautomation/reports/20260316T195716Z/ - lot
priority_modelstermine dansautomation/reports/20260316T211232Z/ - lot
french_modelstermine dansautomation/reports/20260316T220423Z/
- fix
outline_likevalide :qwen2.5:1.5b→quality_blocked ['truncated_ending']uniquement (plus d'outline_like) - fix
dense_bullet_list: 4+ bullet lines =outline_likesans 2e marqueur - lot runtime extrait :
core/runtime/{config,models,client,health,policies}.py - suite unitaire : 156 tests verts
- le 2 avril, le pipeline ANE normalise maintenant les verdicts
gate/judgeavant persistence: aliases historiques (incomplete,lacks_narrative_continuity) unifies, labels inconnus filtres, doublons supprimes etready_for_manuscriptrecalcule a partir des blockers effectifs
Refonte runtime (P0)
- P0 Extraire une couche runtime minimale (
RuntimeProfile, client OpenAI-compatible, health probe) - P0 Formaliser les profils runtime nommes (
mascarade_local,mascarade_remote_*,llama_cpp_local) - P0 Encoder la capacite
response_formatau lieu de la supposer pour tous les runtimes - P1 Sortir le preflight runtime et les checkpoints Apple /
llama.cppdecore/next_lots.py - P1 Ajouter des tests dedies aux profils runtime et a la sante runtime
Actif
Qualite narrative (priorite P0 apres services)
- P0 Revalider le fix
outline_likesurollama:qwen2.5:1.5b— confirme :quality_blocked ['truncated_ending']seulement - P0 Remonter
http://127.0.0.1:8100/health— mascarade UP - P0 Requalifier
ollama:qwen2.5:7bviallama.cpp/llama-server—:8091UP avec qwen2.5:7b - P0 Rejouer
priority_models— en cours rapport20260316T204232Z - P1 Rejouer
french_models(mistral-nemo) —quality_blocked ['outline_like', 'incomplete', 'lacks_narrative_continuity'](rapport20260316T220423Z) - P1 Analyser resultats
priority_modelsetfrench_models— comparatif mis a jour (session 3) - P1 Garder
scripts/ops_tui.pycomme point d'entree exploitation court terme - P0 Ajouter un juge narratif secondaire optionnel (
core/evaluation/*,ANE_JUDGE_MODEL) compatible avec une future grille type Prometheus - P0 Etendre
gate_v1.json,meta.jsonet_repair_focus()avec le verdict du juge narratif - P1 Ajouter
prompts/judge_narrative_v1.txtet resserrergate_v1/rewrite_v1/repair_v1sur decision risquee + consequence immediate - P1 Rejouer
priority_modelsavecANE_JUDGE_MODELpour requalifierqwen2.5:7b— verdict finalquality_blocked ['truncated_ending', 'missing_risky_decision'](workspaceautomation/reports/20260322_qwen2_5_7b_judge) - P1 Rejouer
french_modelsavecANE_JUDGE_MODELpour requalifiermistral-nemo— verdict finalquality_blocked ['truncated_ending', 'missing_immediate_consequence'](workspaceautomation/reports/20260322_mistral_nemo_judge) - P1 Aligner
scripts/smoke_local_generation.shsur les budgets non-Apple du manifeste (rewrite=1024,repair=1536) - P1 Requalifier
qwen2.5:7betmistral-nemoavec les budgets du manifeste - P1 Tenter une retouche prompt courte sur fermeture de scene / non-repetition
- P0 Retoucher
rewrite_v1/repair_v1de maniere plus fine pourqwen2.5:7bsans degradermistral-nemo—missing_risky_decisiontombe surautomation/reports/20260322_qwen2_5_7b_judge_gatefix - P0 Renforcer
gate_v1contre les fauxoutline_likeLLM sur prose narrative francaise (mistral-nemoprompté) — valide surautomation/reports/20260322_mistral_nemo_judge_gatefix - P0 Retoucher
rewrite_v1/repair_v1/_repair_focus()pour forcer une consequence immediate observable apres l'acte final, sans rouvrir la scene - P0 Rejouer
qwen2.5:7betmistral-nemoapres cette retouche ciblee "consequence immediate" - P0 Isoler une variante prompt/repair pour
mistral-nemo—rewrite_v2_nemo.txt+repair_v2_nemo.txt+prompt_profiledans PromptStore - P0 Garder
qwen2.5:7bcomme baseline Ollama — passe dans priority_models via Mascarade P2P (2026-03-23) - P1 Durcir la normalisation schema/consistance des verdicts
gate/judgepour les petits modeles locaux avant persistence ANE - P1 Ajouter un post-traitement semantique optionnel pour les contradictions restantes (
summaryvs blockers) si on veut promouvoirQwen2.5-7Bcomme evaluateur local ANE
Qualite code (P1, lot refonte)
- P0 Extraire une couche
core/runtime/*claire (profil, contraintes, healthcheck) sans casser la facadecore/generation/provider.py - P1 Faire converger
core/generation/provider.pyverscore/runtime/config.pypour eliminer la duplication de config runtime - P1 Faire consommer une partie de cette couche par
next_lotsetops_tui(runtime_probe_profile,runtime_model_ids) - P1 Extraire hors de
next_lotsles checkpoints manuels Apple et le preflight Ollama natif verscore/runtime/checkpoints.pyetcore/runtime/preflight.py - P1 Ajouter des profils runtime explicites (
mascarade_local,mascarade_remote_*,apple_coreml_single_model,ollama_openai_compatible,llama_cpp_local) - P1 Encoder
response_formatcomme capacite runtime explicite plutot que supposition globale - P1 Faire converger
scripts/mascarade_remote_tui.pyet les preflights distants sur le registre de profils runtime - P1 Reduire encore
core/next_lots.pyau role orchestration + sync documentaire maintenant quecore/runtime/orchestration.pyexiste - P1 Extraire la synchro documentaire residuelle dans
core/tracking_sync.pypour gardercore/next_lots.pysur l'orchestration, l'etat et l'execution de commandes - Fix 4 bare
except Exceptiondanscore/next_lots.py— restreints a(OSError, json.JSONDecodeError, ValueError) - Fix des
except Exceptionrestants sur chemins critiques (core/next_lots.pypreflight +scripts/ops_tui.pyprobe URL) - Prompts
draft_v1,rewrite_v1,repair_v1: output primer + few-shot BAD/GOOD - Tests
IntentionGate,PromptStore, CLI intention — suite a 77 tests verts _finish_stage()extrait danspipeline.py—generate_chapter()-12 lignes_iter_chapters_with_status()extrait dansloader.py— 3 fonctions factoriseesMakefileenrichi :healthcheck,smoke-apple/ollama/mistral,lot-priority/baselines/french/full/sync,resume,test-vREADME.mdnettoye : bloc CHANTIER:AUDIT stale supprime- P2 Typer
metadataavecChapterMetadata(TypedDict)danspipeline.py— reporte: 20+ signatures a changer, impact eleve pour gain faible avant reruns stables - P2 Robustifier
_close_json_delimiters()dansmodels.py— closers mal assortis et stray closers geres, 3 nouveaux tests, 80 tests verts - Ecritures JSON atomiques (temp file + replace) sur
pipeline._write_json()etRunState.dump() - Lectures metadata/index tolerantes aux JSON corrompus (
pipeline+loader)
Veille et docs (P2)
docs/OSS_LANDSCAPE_2026-03-16.mdenrichi : GOAT, prometheus-eval, story-evaluation-llm, outlines, DeepEval, story-bench, lechmazur/writing, COLE FR benchmarkdocs/OSS_LANDSCAPE_2026-03-21.mdajoute : veille sourcee runtime/eval pour guider la refonte ANEdocs/OSS_RUNTIME_EVAL_2026-03-21.mdajoute : synthese courte orientee runtime local, evals et generation structureedocs/AGENTS_2026-03-16.mdmis a jour avec Agent 6 Qualite codedocs/FEATURE_MAP_2026-03-16.mdmis a jour avec Carte 7 Qualite code + french_models- README aligne manifeste (
principes,governance) + runbook recovery - Nouveau runbook
docs/runbooks/RECOVERY_PROCEDURES.md(resume lot, recovery metadata/state) docs/OSS_LANDSCAPE_2026-03-21.mdajoute avec sources web et recommandations de refonte- P1 Realigner les plans/TODOs/docs de
app_AI-novel-enginesur l'etat reel Mascarade + pipeline ANE - P2 Evaluer
prometheus-evaloustory-evaluation-llmcomme remplacement gate heuristique — candidats confirmes (veille agent session 3) - P2 Regarder
lm-format-enforcer+llama-cpp-pythoncomme premier fix logit anti-Markdown (plus facile qu'outlinesselon veille) - P2 Regarder
dottxt/outlinespour contraintes logits si grammar sampling dispo dans llama-server - P3 Tester CroissantLLM comme juge natif FR pour Prometheus sur sortie
mistral-nemo
Exploitation remote Mascarade (P0 nouveau)
- P0 Ajouter un cockpit TUI remote
scripts/mascarade_remote_tui.pypourtoweretkxkm - P0 Ajouter la config centralisee
automation/mascarade_hosts.toml - P0 Ajouter la persistance launchd (
scripts/setup_mascarade_launchd.py+automation/launchd/*.plist) - P1 Ajouter les tests
tests/test_setup_mascarade_launchd.py - P0 Valider les tunnels SSH permanents (
8110tower,8111kxkm) via session reelle - P1 Activer launchd en reel (
install) et verifierstatus - P1 Optionnel: ajouter autossh si launchd seul ne suffit pas
Bloque
- P0
ollamanatif 0.17.7 sur macOS 26.3.1 / Apple M5 echoue encore en generation surqwen2.5:7betqwen2.5:1.5bavec une erreur Metal /HTTP 500— contourne viallama-serversur:8091 - P0 Les secrets locaux
MistraletOpenAIsont invalides/expirés sur cette machine; les corriger pour re-activer ces providers dansMascarade local_server - P1 Le runtime Apple local ne sert qu'un seul
model_ida la fois; tout switch Apple reste semi-manuel (prepare_runtime_step.sh) - P1 Le runtime remote
:8110repond a/healthmais reste inutilisable pourPOST /v1/chat/completions(Temporary failure in name resolution) - P1
:8100ne repond pas — CORRIGE (mascarade relance, UP) - P1
:8091ne repond pas — CORRIGE (llama-server relance, UP avec qwen2.5:7b)
Prochain ordre
- P0 Remonter le core OpenAI-compatible
:8100— mascarade UP - P0 Relancer
llama-serversur:8091pourqwen2.5:7b— UP - P0 Reprendre
priority_models: checkpoint Apple en attente (prepare_runtime_step.shpuis--resume) si et seulement si un lot Apple est relance - P1 Lancer
python3 scripts/run_next_lots.py --lot french_models— done, rapport20260316T220423Z - P1 Garder
automation/reports/apple_rerun_preset_20260313T223555Zcomme rerun de reference pour les comparaisons Apple futures - P1 Verifier la purge reports en dry-run (
prune --days 14) — 2 candidats, dont 1 reference a proteger - P1 Garder
python3 scripts/reports_ops.py prune --days 14en dry-run par defaut tant que les reports references ne sont pas marques - P1 Analyser logs et tenter purge chirurgicale (
analyze-logs --top 15,prune --days 14 --delete-workspaces) — 0 suppression necessaire - P0 Brancher
priority_modelssurollama:qwen2.5:7b— fait via Mascarade routing (2026-03-23) - P0 Creer une retouche specifique
mistral-nemomoins directive sur la structure de fin, puis rejouerautomation/reports/20260322_mistral_nemo_judge_consequencefix
Auto-sync
- dernier cycle automatique: 2026-03-23T21:34:05+00:00
- modeles accepted: mistral:mistral-large-latest
- modeles ayant atteint gate: mistral:mistral-large-latest
- quality_blocked: aucun
- provider_failed: ollama:qwen2.5:7b, ollama:mistral-nemo:latest
- prochain lot recommande: Reference locale reconfirmee; retablir le runtime des modeles provider_failed avant de poursuivre.
- checkpoint manuel en attente: Le runtime Apple sert
aucun modèleau lieu deqwen3-4b-instruct-2507-q4f16. - commande preparee:
bash scripts/prepare_runtime_step.sh --apple-model qwen3-4b-instruct-2507-q4f16 --resume-state /Users/electron/Documents/Lelectron_rare/ai-novel-engine/automation/state/next_lots_state.json --ane-script /Users/electron/Documents/Lelectron_rare/ai-novel-engine/scripts/run_next_lots.py - reprise:
python3 scripts/run_next_lots.py --resume /Users/electron/Documents/Lelectron_rare/ai-novel-engine/automation/state/next_lots_state.json