Palette (promo/, les 4 pages) — les teintes rose, verte et violette etaient trop presentes une fois etalees au tour precedent. Reduction d'environ 40 % : rose .075 -> .044, vert .058 -> .034, violet .062 -> .036, arrets intermediaires abaisses dans la meme proportion, opacite de la nappe .aurora .44 -> .32. Geometrie inchangee : meme largeur, meme position, seule l'intensite baisse. 0 conflit CSS entre les quatre pages. forge-01 — la note precedente presentait comme une contradiction a trancher le fait que le plan dise `etat: planifie` et que le CHANGELOG du 2026-07-03 dise le branding « prouve sur forge-01 ». Ce n'en etait pas une : l'hote a ete cree, puis supprime. Le plan decrit l'etat COURANT, le CHANGELOG un etat PASSE — les deux disent vrai. La preuve reste valable, simplement non rejouable tant que l'hote n'est pas recree. roles/serveur_forgejo/README.md corrige. Valide : equilibre accolades/parentheses du CSS, 0 conflit CSS, prouver.py --verifier -> CONFORME 16/16. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| index.html | ||
| offres.html | ||
| README.md | ||
| tarifs.html | ||
| valeur.html | ||
promo/ — pages de présentation Set-OPS
Quatre pages web autonomes (un seul fichier chacune, aucun asset externe, aucune dépendance réseau), sœurs de thème et liées entre elles par la barre de navigation.
| Fichier | Public visé | Répond à |
|---|---|---|
index.html |
sysadmin, personne technique | Qu'est-ce que je peux faire avec ça ? |
offres.html |
prospect, client | Qu'est-ce que vous pouvez bâtir pour moi ? |
tarifs.html |
prospect, acheteur | Combien ça coûte ? |
valeur.html |
direction, CA, bailleur de fonds | Qu'est-ce que ça me rapporte, et comment le vérifier ? |
⚠️
tarifs.htmlest du matériel commercial de Chezlepro inc., publié dans un dépôt public. Les montants y sont donc visibles de tous, y compris des concurrents et des clients existants, et l'historique git en conserve chaque version. C'est un choix assumé ; le rappeler avant chaque ajustement de prix.
- Thème : identité Alliance Boréale (ciel nocturne + aurore + constellation), reprise des thèmes Keycloak/Forgejo du dépôt.
Conventions communes — à respecter pour toute modification
Les quatre pages forment un ensemble navigable : ce qui suit doit rester identique partout, sous peine de dérive (c'est déjà arrivé une fois, et il a fallu une passe complète pour la résorber).
| Élément | Règle |
|---|---|
| Adresse au lecteur | Vouvoiement, sans exception. Ce sont des pages commerciales. |
| Barre de navigation | Capacités · Offres · Tarifs · Valeur + bouton « Nous parler ». Même ordre, mêmes libellés, page courante marquée aria-current="page". |
| Marque | Set-OPS · Chezlepro dans la barre ; Chezlepro inc. · Saint-Bruno-de-Montarville, Québec au pied. |
<title> |
Set-OPS — <Section> · Chezlepro |
| Vocabulaire d'état | Trois valeurs seulement : Éprouvé (.st.ok), En chantier (.st.wip), Feuille de route (.st.road). Jamais d'autre mot, jamais d'autre classe. |
| Fin de page | Section #reserves (bloc .honest) puis bloc .close. Les quatre pages assument leurs limites. |
| CSS partagé | Un sélecteur commun (section, .card, .sec-head, ul.does, .st, footer…) doit avoir la même déclaration dans les quatre fichiers. |
Vérifier avant de committer :
python3 - <<'EOF'
import re,pathlib
from collections import defaultdict
r=defaultdict(dict)
for f in ['index.html','offres.html','tarifs.html','valeur.html']:
css=re.sub(r'/\*.*?\*/','',re.search(r'<style>(.*?)</style>',
pathlib.Path('promo',f).read_text(encoding='utf-8'),re.S).group(1),flags=re.S)
d,buf,sel=0,'',None
for c in css:
if c=='{':
d+=1
if d==1: sel,buf=buf.strip(),''
else: buf+=c
elif c=='}':
d-=1
if d==0:
if not sel.startswith('@'): r[sel][f]=re.sub(r'\s+','',buf)
buf=''
else: buf+=c
else: buf+=c
print("conflits CSS :",sum(1 for s,d in r.items() if len(set(d.values()))>1))
EOF
- Honnêteté : les capacités éprouvées (déployées sur VM réelles) sont distinguées
de ce qui est en chantier et de la feuille de route, conformément au principe
« ne jamais affirmer plus que ce qui est prouvé » (cf.
docs/audit/). Les trois pages portent une section de réserves assumées.
offres.html — périmètre tiré des modèles réels
Chaque offre correspond à un modèle d'instance existant, et le nombre de machines annoncé est celui du plan, pas une estimation :
| Offre | Modèle | VM | État |
|---|---|---|---|
| Le Socle | socle (public) |
4 | éprouvé |
| Identité | identite |
7 | éprouvé |
| Maison OBNL · Cabinet | collaboration |
8 | en chantier |
| Atelier | forge |
6 | éprouvé |
| Vigie | observabilite |
7 | éprouvé |
| Intégral | integral |
12 | éprouvé |
| Présence Web | presence-web |
7 | feuille de route — non vendable |
Si un modèle change de périmètre (VM ajoutée, module éprouvé), mettre la page à jour : son intérêt tient entièrement à ce que ces chiffres soient vrais.
Les montants de départ sont repris de tarifs.html, dont c'est la source de vérité — en
cas d'ajustement de prix, modifier tarifs.html puis reporter dans offres.html.
tarifs.html — grille tarifaire Chezlepro inc.
Alignée sur les six offres du site chezlepro.ca (diagnostic, socle opérateur, tenant portable, audit-ready ops, exploitation gérée, observabilité), et non sur les noms de modèles Set-OPS.
| Mandat | Prix de départ |
|---|---|
| Diagnostic & Trajectoire | dès 4 500 $ (déduit du mandat suivant) |
| Socle Opérateur Souverain | dès 18 000 $ |
| Tenant Portable Clé en Main | dès 12 000 · dès 7 500 pour les suivants |
| Audit-Ready Ops | dès 9 000 $ |
| Observabilité & Journalisation | dès 7 500 $ |
| Parcours Démarrage Souverain | dès 38 000 (au lieu de 42 000) |
| Exploitation Gérée & Transfert | 750 / 1 500 / 2 800 $ par mois |
Ces montants sont des estimations de marché, calées sur un taux effectif de ~1 000–1 100 $/jour (firme spécialisée québécoise), pas des prix validés par une vente réelle. À confronter au premier vrai mandat et à corriger. Dollars canadiens, avant taxes.
valeur.html — le calculateur
Le comparatif coût total est interactif : le visiteur remplace les hypothèses par les siennes (personnes desservies, coût des abonnements, matériel, mise en place, exploitation) et l'addition se refait en direct sur un horizon de 5 ans, matériel amorti sur 5 ans.
Il affiche honnêtement le cas défavorable : sous ~40 personnes (aux valeurs par défaut), l'autohébergement ne se rembourse pas dans l'horizon retenu, et la page le dit — le gain devient la souveraineté, pas le budget. Les valeurs par défaut ne sont pas des tarifs Set-OPS : ce sont des ordres de grandeur à remplacer.
Voir / publier
xdg-open promo/offres.html
python3 -m http.server -d promo 8080 # puis http://localhost:8080/offres.html
Les fichiers sont prêts à déposer tels quels sur n'importe quel hébergement statique
(Forgejo Pages, un vhost serveur_nginx, etc.).