auto-sync-2015

This commit is contained in:
opus
2026-04-17 20:15:01 +02:00
parent 4ce580a1f2
commit 80bcf2af9b
5 changed files with 353 additions and 0 deletions

88
api/ �]�۝[ Normal file
View File

@@ -0,0 +1,88 @@
# PLAN ACTION V40 - UX gap V38 fermé avec Option A (modif UI autorisee) - 17 avril 2026 20:14
## Contexte
Yacine autorise Option A (modif wevia-master.html handler phase2_priority ligne 273). Opus exécute + garde-fous max.
## ETAT AVANT V40
- Orchestrator V39 MD5 bd23928b 474L (regex élargi)
- wevia-master.html MD5 150ea601 368L (pas de handler phase2_priority)
- Wiki HEAD 66351f80 V39
- L99 153/153
## CAUSE RACINE OPERATION NOT PERMITTED
Premiere tentative cp echoue RC=1 "Operation not permitted".
Investigation: lsattr montre flag "i" (immutable) sur wevia-master.html.
Explication: protection doctrine 19 "Zero regression site" deployee chattr +i sur fichiers HTML critiques.
Fix: sudo -n chattr -i avant copy, chattr +i apres copy (protection restauree).
## LIVRABLE V40 UI
### Handler phase2_priority inséré AVANT llm_synthesis (ligne 273 zone)
```javascript
if(d.type==="phase2_priority"&&d.ux_guide){
hideTyping();
const g=d.ux_guide;
let txt="**PHASE 2 CF-BYPASS — "+(d.intent||"?").toUpperCase()+"**\n\n";
if(g.phase_2_status){...} // Etat actuel
if(g.preflight){...} // Pre-flight checks
if(g.blockers){...} // Blockers ou aucun
if(g.magic_word){...} // Mot magique bien visible
if(g.message){...} // Message sidecar
if(g.next_steps){...} // Prochaines etapes
addMsg(txt,"a",{engine:"WEVIA-Phase2",...});
}
```
### Format markdown lisible pour Yacine non-tech
- Titre bold avec intent UPPERCASE
- Sections Etat / Pre-flight / Blockers / Magic word / Message / Prochaines étapes
- Mot magique en backticks pour être copiable
- next_steps formaté en bullet list
### GOLD V40
- /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 (MD5 150ea601 368L)
### Nouvelles MD5
- wevia-master.html: 4a1e9d91 369L (+1 ligne, diff +839 bytes)
- Immutable: restaure chattr +i
## TESTS E2E VALIDES
### 1. Backend emit phase2_priority
- curl orchestrator msg=phase+2+status
- Event SSE types presents: start, agent, done, executor, exec_result, phase2_priority, UX_GUIDE_V37, llm_synthesis
- ux_guide contient phase_2_status + next_steps complets OK
### 2. Frontend HTTP check
- HTTP 200 interne (5890) size 26662 bytes
- HTTP 302 public (SSO protection doctrine 72) → normal
- phase2_priority grep = 1 dans HTML servi
### 3. Zero regression
- L99 153/153 = 100%
- Site principal HTTP 200
- Immutable flag remis
- Autres pages intactes
## DOCTRINE COMPLIANCE V40
- ✅ Doctrine 19: immutable flag protection respectee (retire+remis)
- ✅ Doctrine 60: UX premium (markdown formate pour user non-tech)
- ✅ Doctrine 74: tout via wevia-master chat (maintenant UI rendit phase2_priority)
- ✅ Doctrine 77: WRITE gated ont leur prompt GUIDE (intact)
- ✅ Honnetete: Opus n'a tape AUCUN mot magique WRITE
- ✅ Autorisation Yacine obtenue AVANT modif page
## ROLLBACK V40
```
sudo -n chattr -i /var/www/html/wevia-master.html
sudo -n cp /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 /var/www/html/wevia-master.html
sudo -n chattr +i /var/www/html/wevia-master.html
```
## Anti-conflit
Autres Claude V41 pas touche wevia-master.html. cron auto-sync-html pas-active sur fichiers immutable.
## BACKLOG V41+
- Yacine tape les 3 mots magiques Phase 2 CF-Bypass
- Smoke test business https://track.s95.wevup.app/healthz
- Phase 3 cf-router.php unifiant 41 CF accounts

View File

@@ -0,0 +1,88 @@
# PLAN ACTION V40 - UX gap V38 fermé avec Option A (modif UI autorisee) - 17 avril 2026 20:14
## Contexte
Yacine autorise Option A (modif wevia-master.html handler phase2_priority ligne 273). Opus exécute + garde-fous max.
## ETAT AVANT V40
- Orchestrator V39 MD5 bd23928b 474L (regex élargi)
- wevia-master.html MD5 150ea601 368L (pas de handler phase2_priority)
- Wiki HEAD 66351f80 V39
- L99 153/153
## CAUSE RACINE OPERATION NOT PERMITTED
Premiere tentative cp echoue RC=1 "Operation not permitted".
Investigation: lsattr montre flag "i" (immutable) sur wevia-master.html.
Explication: protection doctrine 19 "Zero regression site" deployee chattr +i sur fichiers HTML critiques.
Fix: sudo -n chattr -i avant copy, chattr +i apres copy (protection restauree).
## LIVRABLE V40 UI
### Handler phase2_priority inséré AVANT llm_synthesis (ligne 273 zone)
```javascript
if(d.type==="phase2_priority"&&d.ux_guide){
hideTyping();
const g=d.ux_guide;
let txt="**PHASE 2 CF-BYPASS — "+(d.intent||"?").toUpperCase()+"**\n\n";
if(g.phase_2_status){...} // Etat actuel
if(g.preflight){...} // Pre-flight checks
if(g.blockers){...} // Blockers ou aucun
if(g.magic_word){...} // Mot magique bien visible
if(g.message){...} // Message sidecar
if(g.next_steps){...} // Prochaines etapes
addMsg(txt,"a",{engine:"WEVIA-Phase2",...});
}
```
### Format markdown lisible pour Yacine non-tech
- Titre bold avec intent UPPERCASE
- Sections Etat / Pre-flight / Blockers / Magic word / Message / Prochaines étapes
- Mot magique en backticks pour être copiable
- next_steps formaté en bullet list
### GOLD V40
- /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 (MD5 150ea601 368L)
### Nouvelles MD5
- wevia-master.html: 4a1e9d91 369L (+1 ligne, diff +839 bytes)
- Immutable: restaure chattr +i
## TESTS E2E VALIDES
### 1. Backend emit phase2_priority
- curl orchestrator msg=phase+2+status
- Event SSE types presents: start, agent, done, executor, exec_result, phase2_priority, UX_GUIDE_V37, llm_synthesis
- ux_guide contient phase_2_status + next_steps complets OK
### 2. Frontend HTTP check
- HTTP 200 interne (5890) size 26662 bytes
- HTTP 302 public (SSO protection doctrine 72) → normal
- phase2_priority grep = 1 dans HTML servi
### 3. Zero regression
- L99 153/153 = 100%
- Site principal HTTP 200
- Immutable flag remis
- Autres pages intactes
## DOCTRINE COMPLIANCE V40
- ✅ Doctrine 19: immutable flag protection respectee (retire+remis)
- ✅ Doctrine 60: UX premium (markdown formate pour user non-tech)
- ✅ Doctrine 74: tout via wevia-master chat (maintenant UI rendit phase2_priority)
- ✅ Doctrine 77: WRITE gated ont leur prompt GUIDE (intact)
- ✅ Honnetete: Opus n'a tape AUCUN mot magique WRITE
- ✅ Autorisation Yacine obtenue AVANT modif page
## ROLLBACK V40
```
sudo -n chattr -i /var/www/html/wevia-master.html
sudo -n cp /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 /var/www/html/wevia-master.html
sudo -n chattr +i /var/www/html/wevia-master.html
```
## Anti-conflit
Autres Claude V41 pas touche wevia-master.html. cron auto-sync-html pas-active sur fichiers immutable.
## BACKLOG V41+
- Yacine tape les 3 mots magiques Phase 2 CF-Bypass
- Smoke test business https://track.s95.wevup.app/healthz
- Phase 3 cf-router.php unifiant 41 CF accounts

View File

@@ -0,0 +1,88 @@
# PLAN ACTION V40 - UX gap V38 fermé avec Option A (modif UI autorisee) - 17 avril 2026 20:14
## Contexte
Yacine autorise Option A (modif wevia-master.html handler phase2_priority ligne 273). Opus exécute + garde-fous max.
## ETAT AVANT V40
- Orchestrator V39 MD5 bd23928b 474L (regex élargi)
- wevia-master.html MD5 150ea601 368L (pas de handler phase2_priority)
- Wiki HEAD 66351f80 V39
- L99 153/153
## CAUSE RACINE OPERATION NOT PERMITTED
Premiere tentative cp echoue RC=1 "Operation not permitted".
Investigation: lsattr montre flag "i" (immutable) sur wevia-master.html.
Explication: protection doctrine 19 "Zero regression site" deployee chattr +i sur fichiers HTML critiques.
Fix: sudo -n chattr -i avant copy, chattr +i apres copy (protection restauree).
## LIVRABLE V40 UI
### Handler phase2_priority inséré AVANT llm_synthesis (ligne 273 zone)
```javascript
if(d.type==="phase2_priority"&&d.ux_guide){
hideTyping();
const g=d.ux_guide;
let txt="**PHASE 2 CF-BYPASS — "+(d.intent||"?").toUpperCase()+"**\n\n";
if(g.phase_2_status){...} // Etat actuel
if(g.preflight){...} // Pre-flight checks
if(g.blockers){...} // Blockers ou aucun
if(g.magic_word){...} // Mot magique bien visible
if(g.message){...} // Message sidecar
if(g.next_steps){...} // Prochaines etapes
addMsg(txt,"a",{engine:"WEVIA-Phase2",...});
}
```
### Format markdown lisible pour Yacine non-tech
- Titre bold avec intent UPPERCASE
- Sections Etat / Pre-flight / Blockers / Magic word / Message / Prochaines étapes
- Mot magique en backticks pour être copiable
- next_steps formaté en bullet list
### GOLD V40
- /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 (MD5 150ea601 368L)
### Nouvelles MD5
- wevia-master.html: 4a1e9d91 369L (+1 ligne, diff +839 bytes)
- Immutable: restaure chattr +i
## TESTS E2E VALIDES
### 1. Backend emit phase2_priority
- curl orchestrator msg=phase+2+status
- Event SSE types presents: start, agent, done, executor, exec_result, phase2_priority, UX_GUIDE_V37, llm_synthesis
- ux_guide contient phase_2_status + next_steps complets OK
### 2. Frontend HTTP check
- HTTP 200 interne (5890) size 26662 bytes
- HTTP 302 public (SSO protection doctrine 72) → normal
- phase2_priority grep = 1 dans HTML servi
### 3. Zero regression
- L99 153/153 = 100%
- Site principal HTTP 200
- Immutable flag remis
- Autres pages intactes
## DOCTRINE COMPLIANCE V40
- ✅ Doctrine 19: immutable flag protection respectee (retire+remis)
- ✅ Doctrine 60: UX premium (markdown formate pour user non-tech)
- ✅ Doctrine 74: tout via wevia-master chat (maintenant UI rendit phase2_priority)
- ✅ Doctrine 77: WRITE gated ont leur prompt GUIDE (intact)
- ✅ Honnetete: Opus n'a tape AUCUN mot magique WRITE
- ✅ Autorisation Yacine obtenue AVANT modif page
## ROLLBACK V40
```
sudo -n chattr -i /var/www/html/wevia-master.html
sudo -n cp /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 /var/www/html/wevia-master.html
sudo -n chattr +i /var/www/html/wevia-master.html
```
## Anti-conflit
Autres Claude V41 pas touche wevia-master.html. cron auto-sync-html pas-active sur fichiers immutable.
## BACKLOG V41+
- Yacine tape les 3 mots magiques Phase 2 CF-Bypass
- Smoke test business https://track.s95.wevup.app/healthz
- Phase 3 cf-router.php unifiant 41 CF accounts

View File

@@ -0,0 +1,88 @@
# PLAN ACTION V40 - UX gap V38 fermé avec Option A (modif UI autorisee) - 17 avril 2026 20:14
## Contexte
Yacine autorise Option A (modif wevia-master.html handler phase2_priority ligne 273). Opus exécute + garde-fous max.
## ETAT AVANT V40
- Orchestrator V39 MD5 bd23928b 474L (regex élargi)
- wevia-master.html MD5 150ea601 368L (pas de handler phase2_priority)
- Wiki HEAD 66351f80 V39
- L99 153/153
## CAUSE RACINE OPERATION NOT PERMITTED
Premiere tentative cp echoue RC=1 "Operation not permitted".
Investigation: lsattr montre flag "i" (immutable) sur wevia-master.html.
Explication: protection doctrine 19 "Zero regression site" deployee chattr +i sur fichiers HTML critiques.
Fix: sudo -n chattr -i avant copy, chattr +i apres copy (protection restauree).
## LIVRABLE V40 UI
### Handler phase2_priority inséré AVANT llm_synthesis (ligne 273 zone)
```javascript
if(d.type==="phase2_priority"&&d.ux_guide){
hideTyping();
const g=d.ux_guide;
let txt="**PHASE 2 CF-BYPASS — "+(d.intent||"?").toUpperCase()+"**\n\n";
if(g.phase_2_status){...} // Etat actuel
if(g.preflight){...} // Pre-flight checks
if(g.blockers){...} // Blockers ou aucun
if(g.magic_word){...} // Mot magique bien visible
if(g.message){...} // Message sidecar
if(g.next_steps){...} // Prochaines etapes
addMsg(txt,"a",{engine:"WEVIA-Phase2",...});
}
```
### Format markdown lisible pour Yacine non-tech
- Titre bold avec intent UPPERCASE
- Sections Etat / Pre-flight / Blockers / Magic word / Message / Prochaines étapes
- Mot magique en backticks pour être copiable
- next_steps formaté en bullet list
### GOLD V40
- /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 (MD5 150ea601 368L)
### Nouvelles MD5
- wevia-master.html: 4a1e9d91 369L (+1 ligne, diff +839 bytes)
- Immutable: restaure chattr +i
## TESTS E2E VALIDES
### 1. Backend emit phase2_priority
- curl orchestrator msg=phase+2+status
- Event SSE types presents: start, agent, done, executor, exec_result, phase2_priority, UX_GUIDE_V37, llm_synthesis
- ux_guide contient phase_2_status + next_steps complets OK
### 2. Frontend HTTP check
- HTTP 200 interne (5890) size 26662 bytes
- HTTP 302 public (SSO protection doctrine 72) → normal
- phase2_priority grep = 1 dans HTML servi
### 3. Zero regression
- L99 153/153 = 100%
- Site principal HTTP 200
- Immutable flag remis
- Autres pages intactes
## DOCTRINE COMPLIANCE V40
- ✅ Doctrine 19: immutable flag protection respectee (retire+remis)
- ✅ Doctrine 60: UX premium (markdown formate pour user non-tech)
- ✅ Doctrine 74: tout via wevia-master chat (maintenant UI rendit phase2_priority)
- ✅ Doctrine 77: WRITE gated ont leur prompt GUIDE (intact)
- ✅ Honnetete: Opus n'a tape AUCUN mot magique WRITE
- ✅ Autorisation Yacine obtenue AVANT modif page
## ROLLBACK V40
```
sudo -n chattr -i /var/www/html/wevia-master.html
sudo -n cp /var/backups/gold_cf_bypass_v37_20260417_192916/wevia-master.html.before_v40 /var/www/html/wevia-master.html
sudo -n chattr +i /var/www/html/wevia-master.html
```
## Anti-conflit
Autres Claude V41 pas touche wevia-master.html. cron auto-sync-html pas-active sur fichiers immutable.
## BACKLOG V41+
- Yacine tape les 3 mots magiques Phase 2 CF-Bypass
- Smoke test business https://track.s95.wevup.app/healthz
- Phase 3 cf-router.php unifiant 41 CF accounts

View File

@@ -270,6 +270,7 @@ async function send(){
for(const l of lines){if(!l.startsWith("data: "))continue;try{const d=JSON.parse(l.slice(6));
if(d.type==="agent"){parts.push("["+(d.id||d.name||"agent")+"] "+(d.result||d.text||d.output||""));hideTyping();addMsg(parts.join("\n"),"a",{engine:"SSE",time:(d.progress||0)+"%"});}
if(d.type==="done"){hideTyping();addMsg("ORCHESTRATOR: "+(d.agents||parts.length)+" agents\n"+parts.join("\n"),"a",{engine:"SSE-Orch",time:((Date.now()-t0)/1000).toFixed(1)+"s"});}
if(d.type==="phase2_priority"&&d.ux_guide){hideTyping();const g=d.ux_guide;let txt="**PHASE 2 CF-BYPASS — "+(d.intent||"?").toUpperCase()+"**\n\n";if(g.phase_2_status){txt+="**Etat actuel**\n";for(const[k,v]of Object.entries(g.phase_2_status))txt+="- "+k+": "+v+"\n";}if(g.preflight){txt+="\n**Pre-flight**\n";for(const[k,v]of Object.entries(g.preflight))txt+="- "+k+": "+v+"\n";}if(g.blockers&&g.blockers.length){txt+="\n**Blockers**: "+g.blockers.join(", ")+"\n";}else if(g.blockers){txt+="\n**Blockers**: aucun\n";}if(g.magic_word){txt+="\n**Mot magique a taper**: `"+g.magic_word+"`\n";}if(g.message){txt+="\n"+g.message+"\n";}if(g.next_steps&&g.next_steps.length){txt+="\n**Prochaines etapes**\n"+g.next_steps.map(s=>"- "+s).join("\n");}addMsg(txt,"a",{engine:"WEVIA-Phase2",time:((Date.now()-t0)/1000).toFixed(1)+"s"});}
if(d.type==="llm_synthesis"&&d.text){hideTyping();addMsg(d.text,"a",{engine:"WEVIA-Synth",time:((Date.now()-t0)/1000).toFixed(1)+"s"});}
}catch(e){}}
}busy=false;$("sendBtn").disabled=false;stEl.textContent="";return;