Accents FR, architecture modulaire, protocoles opérationnels

- Fix accents manquants dans 7 pages UI (décisions, boîte à outils, etc.)
- Titres accueil enrichis : Décisions structurantes, Documents de référence,
  Mandats et nominations, Protocoles et fonctionnement
- Retrait Embarquement Forgeron du seed (n'est pas une Decision)
- 2 protocoles opérationnels dans Protocoles : Embarquement Forgeron
  (lié à l'Acte d'engagement) + Soumission Runtime Upgrade (lié à la
  Décision Runtime Upgrade) avec timeline et liens croisés signalétiques
- Décision Runtime Upgrade : badge on-chain + lien protocole + contexte
- Document [slug] : lien protocole dans la section Qualification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-03-03 07:05:55 +01:00
parent c19c1aa55e
commit 8201e73d7c
8 changed files with 328 additions and 221 deletions

View File

@@ -1994,9 +1994,16 @@ async def seed_decision_runtime_upgrade(session: AsyncSession) -> Decision:
"title",
"Runtime Upgrade",
description=(
"Processus de mise à jour du runtime Duniter V2 on-chain. "
"Chaque upgrade suit un protocole strict en 5 étapes. "
"(Décision on-chain)"
"Décision on-chain — Mise à jour du runtime Duniter V2. "
"Requiert le seuil multi-critères : WoT + Smith + TechComm. "
"Protocole lié : Soumission Runtime Upgrade."
),
context=(
"Chaque mise à jour du runtime Duniter V2 est une décision "
"on-chain qui nécessite l'approbation simultanée de trois "
"critères : le vote communautaire WoT, le quorum des "
"forgerons Smith, et la validation du Comité Technique. "
"Le seuil d'adoption est calculé selon la formule multi-critères."
),
decision_type="runtime_upgrade",
status="draft",
@@ -2013,108 +2020,6 @@ async def seed_decision_runtime_upgrade(session: AsyncSession) -> Decision:
return decision
# ---------------------------------------------------------------------------
# Seed: Decision - Embarquement Forgeron (protocole de qualification)
#
# Processus d'onboarding des forgerons en jalons progressifs.
# Lié explicitement à la section "Qualification" de l'Acte d'engagement.
# Cf. Yvv, ML#32603 post #3 : "compétence sécu et réactivité sont
# davantage les sujets de l'enrôlement et accompagnement (onboarding)"
# Cf. elois, Duniter#9047 : séquence miroir → sync → membership → certifs
# ---------------------------------------------------------------------------
EMBARQUEMENT_FORGERON_STEPS: list[dict] = [
{
"step_order": 1,
"step_type": "candidature",
"title": "Candidature",
"description": (
"Déclaration d'intention auprès de la communauté forgeron. "
"Premier contact avec un forgeron référent qui accepte "
"d'accompagner le parcours. Vérification du statut membre "
"de la toile de confiance principale."
),
},
{
"step_order": 2,
"step_type": "mirror",
"title": "Nœud miroir",
"description": (
"Déployer un nœud miroir Duniter V2 et le maintenir "
"synchronisé pendant une période probatoire. Démontrer "
"les compétences d'administration système Linux : "
"installation, configuration réseau, monitoring. "
"Le nœud doit être joignable et à jour."
),
},
{
"step_order": 3,
"step_type": "evaluation",
"title": "Évaluation technique",
"description": (
"Vérification des compétences techniques par un forgeron "
"certificateur. Parcours de la checklist d'engagement dans "
"un ordre aléatoire. Le candidat doit démontrer :\n"
"- Gestion de clés et sécurité\n"
"- Compréhension du consensus Duniter\n"
"- Capacité de diagnostic et réactivité\n"
"Toute réponse incorrecte interrompt la procédure."
),
},
{
"step_order": 4,
"step_type": "certification",
"title": "Certification Smith",
"description": (
"Invitation par un forgeron existant, acceptation de "
"l'invitation, puis réception de 3 certifications forgeron. "
"Chaque certificateur a vérifié les compétences du candidat "
"via la checklist. La certification engage la responsabilité "
"du certificateur (section Certificateur de l'engagement)."
),
},
{
"step_order": 5,
"step_type": "online",
"title": "Mise en ligne",
"description": (
"Passage du nœud validateur en mode online (goOnline). "
"Le forgeron commence à produire des blocs. "
"Surveillance active pendant les premières semaines : "
"uptime, synchronisation, réactivité aux alertes. "
"Le forgeron est pleinement soumis à l'ensemble des "
"engagements de l'acte."
),
},
]
async def seed_decision_embarquement_forgeron(session: AsyncSession) -> Decision:
decision, created = await get_or_create(
session,
Decision,
"title",
"Embarquement Forgeron",
description=(
"Protocole d'embarquement (onboarding) des forgerons Duniter V2. "
"Parcours en 5 jalons progressifs de la candidature à la mise en "
"ligne du nœud validateur. Lié à la section Qualification de "
"l'Acte d'engagement forgeron."
),
decision_type="onboarding",
status="active",
)
print(f" Decision 'Embarquement Forgeron': {'created' if created else 'exists'}")
if created:
for step_data in EMBARQUEMENT_FORGERON_STEPS:
step = DecisionStep(decision_id=decision.id, **step_data)
session.add(step)
await session.flush()
print(f" -> {len(EMBARQUEMENT_FORGERON_STEPS)} steps created")
return decision
# ---------------------------------------------------------------------------
# Seed: Simulated voters + votes on first 3 engagement items
@@ -2265,16 +2170,13 @@ async def run_seed():
print("\n[4/8] Document: Acte d'engagement forgeron v2.0.0...")
doc_forgeron = await seed_document_engagement_forgeron(session, protocols)
print("\n[5/8] Decision: Runtime Upgrade...")
print("\n[5/7] Decision: Runtime Upgrade...")
await seed_decision_runtime_upgrade(session)
print("\n[6/8] Decision: Embarquement Forgeron...")
await seed_decision_embarquement_forgeron(session)
print("\n[7/8] Simulated voters...")
print("\n[6/7] Simulated voters...")
voters = await seed_voters(session)
print("\n[8/8] Votes on first 3 engagements forgeron...")
print("\n[7/7] Votes on first 3 engagements forgeron...")
await seed_votes_on_items(
session,
doc_forgeron,