Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# Réglages facultatifs. Copiez ce fichier en .env, à côté de compose.yaml, gardez seulement les
# lignes utiles, puis : docker compose up -d
#
# curl -fsSL https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.0/.env.example -o .env
# curl -fsSL https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.1/.env.example -o .env
#
# A line starting with # is ignored. Une ligne commençant par # est ignorée.

Expand Down
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog

## 0.6.1 — en préparation (non publiée)
## 0.6.1 — 2026-10-24 (publié sur GitHub et GHCR)

- Projections du plan/PDF conditionnelles ou explicitement non concluantes ; aucun grade absent ni objectif de dégradation.
- Attentes des étapes MTA-STS/TLS conservatrices, y compris perte possible du HTTPS moderne.
Expand All @@ -9,7 +9,7 @@
- Recette image officielle v0.5.0/v0.6.0 ↔ candidate à schéma 5, libellés FR/EN et compteur de priorités corrigés.
- Rapports de démonstration PDF FR/EN, génération reproductible sans réseau.
- Notes observées inchangées ; génération 4, schéma 5, API, événements et sécurité réseau conservés.
- Aucun tag, release, publication GHCR ou déploiement autorisé implicitement.
**Publication :** PR #33 à #39 fusionnées dans `main` (commit `641f1dbde97e5e0166101f2c9c4f52b0ee6177fb`), puis tag et GitHub Release [v0.6.1](https://github.com/vinzgithub/posture-cockpit/releases/tag/v0.6.1). Le [workflow de publication GHCR #40123536677](https://github.com/vinzgithub/posture-cockpit/actions/runs/40123536677) a terminé ses 12 jobs avec succès, dont la recette AMD64 et le démarrage ARM64 émulé. Les tags `0.6.1`, `0.6` et `latest` ont été relus dans le registre et pointent vers le digest unique `sha256:f670500db50aff70b535a82ec0692660888f6b6387fbe25823feeb0a15d6f069`. **La publication n'entraîne aucun déploiement ni mise à jour des instances existantes.** Voir `docs/developer/RELEASE_V061.fr.md`.

## 0.6.0 — 2026-10-24 (publié sur GitHub et GHCR)

Expand Down
12 changes: 6 additions & 6 deletions README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

**Français** · [**English**](README.md)

![Version](https://img.shields.io/badge/version-0.6.0-126caa) ![Docker](https://img.shields.io/badge/installation-Docker-2496ED) ![Licence](https://img.shields.io/badge/licence-PolyForm%20Noncommercial-0d355d)
![Version](https://img.shields.io/badge/version-0.6.1-126caa) ![Docker](https://img.shields.io/badge/installation-Docker-2496ED) ![Licence](https://img.shields.io/badge/licence-PolyForm%20Noncommercial-0d355d)

<img src="docs/images/fr/hero.png" alt="Posture Cockpit présenté sur ordinateur et sur téléphone" width="100%">

Expand Down Expand Up @@ -103,7 +103,7 @@ Avec **« Et si… ? »**, vous pouvez sélectionner plusieurs corrections (y co
| **Certificats HTTPS** | Le certificat est-il valide ? Va-t-il bientôt expirer ? Les protocoles TLS et les clés répondent-ils aux exigences contrôlées ? |
| **DNS** | Les serveurs de noms, DNSSEC et les règles CAA sont-ils configurés comme attendu ? |

Au total, **20 contrôles sont intégrés dans la v0.6.0**. Certains sont sans objet pour un domaine donné ; d'autres peuvent ne pas aboutir à cause d'une erreur ou d'un serveur qui ne répond pas. Posture Cockpit fait la différence entre **« non applicable »** et **« impossible à vérifier »** : il ne considère jamais un contrôle non réalisé comme réussi.
Au total, **20 contrôles sont intégrés dans la v0.6.1**. Certains sont sans objet pour un domaine donné ; d'autres peuvent ne pas aboutir à cause d'une erreur ou d'un serveur qui ne répond pas. Posture Cockpit fait la différence entre **« non applicable »** et **« impossible à vérifier »** : il ne considère jamais un contrôle non réalisé comme réussi.

[Comprendre le calcul de la note et de la couverture](docs/user/SCORING.fr.md)

Expand All @@ -121,7 +121,7 @@ Pour une **nouvelle installation**, ouvrez un terminal sur votre serveur :

```bash
mkdir posture-cockpit && cd posture-cockpit
curl -fsSLO https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.0/compose.yaml
curl -fsSLO https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.1/compose.yaml
docker compose up -d
```

Expand All @@ -135,9 +135,9 @@ Ouvrez `http://<adresse-du-serveur>:8080/setup`, saisissez ce code et créez le

**Important :** ne publiez pas cette interface directement sur Internet en HTTP. Pour un accès distant, utilisez un **proxy inverse HTTPS** correctement configuré.

Vous utilisez déjà une ancienne version ? **Ne suivez pas la procédure de nouvelle installation pour la mettre à jour.** Sauvegardez votre instance et suivez le guide prévu : le passage de la v0.4.x à la v0.5.0 ou plus récente exige des précautions concernant la base de données et l'ordonnanceur ; la v0.6.0 conserve le schéma 5.
Vous utilisez déjà une ancienne version ? **Ne suivez pas la procédure de nouvelle installation pour la mettre à jour.** Sauvegardez votre instance et suivez le guide prévu : le passage de la v0.4.x à la v0.5.0 ou plus récente exige des précautions concernant la base de données et l'ordonnanceur ; la v0.6.1 conserve le schéma 5.

📖 [Guide complet : installation, configuration, sauvegarde et mise à jour](docs/user/INSTALLATION.fr.md) · [Version publiée v0.6.0](https://github.com/vinzgithub/posture-cockpit/releases/tag/v0.6.0)
📖 [Guide complet : installation, configuration, sauvegarde et mise à jour](docs/user/INSTALLATION.fr.md) · [Version publiée v0.6.1](https://github.com/vinzgithub/posture-cockpit/releases/tag/v0.6.1)

## Ce que Posture Cockpit fait… et ne fait pas

Expand Down Expand Up @@ -167,4 +167,4 @@ Copyright © 2026 Vincent Fournet.

---

<div align="center"><sub>Posture Cockpit v0.6.0 — Comprendre ce qui protège votre domaine, et savoir quoi faire quand quelque chose manque.</sub></div>
<div align="center"><sub>Posture Cockpit v0.6.1 — Comprendre ce qui protège votre domaine, et savoir quoi faire quand quelque chose manque.</sub></div>
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

**English** · [**Français**](README.fr.md)

![Version](https://img.shields.io/badge/version-0.6.0-126caa) ![Docker](https://img.shields.io/badge/install-Docker-2496ED) ![License](https://img.shields.io/badge/license-PolyForm%20Noncommercial-0d355d)
![Version](https://img.shields.io/badge/version-0.6.1-126caa) ![Docker](https://img.shields.io/badge/install-Docker-2496ED) ![License](https://img.shields.io/badge/license-PolyForm%20Noncommercial-0d355d)

<img src="docs/images/en/hero.png" alt="Posture Cockpit displayed on a computer and a phone" width="100%">

Expand Down Expand Up @@ -103,7 +103,7 @@ The **“What if…?”** simulator lets you select several proposed corrections
| **HTTPS certificates** | Is the certificate valid? Is it nearing expiry? What about the TLS protocols and key properties that the tool checks? |
| **DNS** | Are name servers, DNSSEC and CAA records configured as expected? |

There are **20 built-in checks in v0.6.0**. Some don't apply to every domain; others may be inconclusive if a server doesn't respond. Posture Cockpit distinguishes between **“not applicable”** and **“could not be checked”**: an uncompleted check is never treated as a success.
There are **20 built-in checks in v0.6.1**. Some don't apply to every domain; others may be inconclusive if a server doesn't respond. Posture Cockpit distinguishes between **“not applicable”** and **“could not be checked”**: an uncompleted check is never treated as a success.

[How scores and coverage are calculated](docs/user/SCORING.md)

Expand All @@ -121,7 +121,7 @@ For a **new installation**, run:

```bash
mkdir posture-cockpit && cd posture-cockpit
curl -fsSLO https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.0/compose.yaml
curl -fsSLO https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.1/compose.yaml
docker compose up -d
```

Expand All @@ -135,9 +135,9 @@ Open `http://<server-address>:8080/setup`, enter the code and create the adminis

**Important:** don't expose the application to the public Internet over plain HTTP. Use a properly configured **HTTPS reverse proxy** for remote access.

Already running an older version? **Don't use the new-install steps as an upgrade guide.** Back up your existing installation and follow the documented process. A transition from v0.4.x to v0.5.0 or later needs special care around the database schema and scheduler; v0.6.0 keeps schema 5.
Already running an older version? **Don't use the new-install steps as an upgrade guide.** Back up your existing installation and follow the documented process. A transition from v0.4.x to v0.5.0 or later needs special care around the database schema and scheduler; v0.6.1 keeps schema 5.

📖 [Full installation, configuration, backup and upgrade guide](docs/user/INSTALLATION.md) · [Published v0.6.0 release](https://github.com/vinzgithub/posture-cockpit/releases/tag/v0.6.0)
📖 [Full installation, configuration, backup and upgrade guide](docs/user/INSTALLATION.md) · [Published v0.6.1 release](https://github.com/vinzgithub/posture-cockpit/releases/tag/v0.6.1)

## What Posture Cockpit does — and doesn't do

Expand Down Expand Up @@ -167,4 +167,4 @@ Copyright © 2026 Vincent Fournet.

---

<div align="center"><sub>Posture Cockpit v0.6.0 — Understand what protects your domain, and what to do when something is missing.</sub></div>
<div align="center"><sub>Posture Cockpit v0.6.1 — Understand what protects your domain, and what to do when something is missing.</sub></div>
2 changes: 1 addition & 1 deletion compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
# Posture Cockpit with Docker Compose (2.24 or later). Installation, in an empty folder:
#
# curl -fsSLO https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.0/compose.yaml
# curl -fsSLO https://raw.githubusercontent.com/vinzgithub/posture-cockpit/v0.6.1/compose.yaml
# docker compose up -d
#
# then open http://<server>:8080/setup with the setup code of: docker compose logs posture-cockpit
Expand Down
21 changes: 13 additions & 8 deletions docs/developer/RELEASE_V061.fr.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Posture Cockpit v0.6.1 — dossier de candidate
# Posture Cockpit v0.6.1 — dossier de livraison

**État : candidate développée et recette validée, non publiée — 24 octobre 2026.** Aucun tag, release, publication GHCR ni déploiement réalisé. Le mainteneur a autorisé le développement après validation technique du cahier des charges révision 3 par Claude. Une autorisation de publication reste distincte.
**État : version v0.6.1 validée et publiée le 24 octobre 2026 sur GitHub et GHCR.** Cahier des charges révision 3 validé techniquement par Claude ; intégration et publication approuvées par le mainteneur. **Aucun déploiement ni mise à jour d'une instance existante n'a été effectué.**

## Périmètre livré

Expand All @@ -14,7 +14,7 @@
| 6 | #38 | Gain exact, événements vides, compteur de priorités |
| 7 | #39 | Rapports fictifs FR/EN, guides, preuves et marqueurs de version 0.6.1 |

Les PR sont empilées : chacune cible la branche du lot précédent. Elles doivent être intégrées dans cet ordre sans réécrire l'historique. Les commits distants sont attribués au compte `vinzgithub`, sans co-auteur. Aucun merge implicite n'a été effectué pendant la préparation de ce dossier.
Les sept PR #33 à #39 ont été préparées en branches empilées, puis intégrées dans cet ordre à `main` avec l'accord explicite du mainteneur, sans réécrire l'historique. Le dernier merge est le commit `641f1dbde97e5e0166101f2c9c4f52b0ee6177fb`, identique au tag `v0.6.1`. Les commits distants sont attribués au compte `vinzgithub`, sans co-auteur.

## Invariants et décisions

Expand Down Expand Up @@ -54,14 +54,19 @@ Le code cumulé de #33–#38 et les compléments de #39 sont validés. Les premi
- ARM64 : build et démarrage émulé « quick » existants, dans le dry run du workflow release. **Limite : pas de F08 complète ARM64**, conformément à la spécification.
- Aucun test manuel avec lecteur d'écran réel n'est revendiqué. Docker n'est pas disponible dans l'environnement local : seule Actions peut fournir ici la preuve au niveau image.

## Procédure de retour prévue
## Procédure de retour documentée (sur copie isolée)

Sur copie isolée : sauvegarde vérifiée hors volume, ordonnanceur off, arrêt propre, image officielle v0.5.0 épinglée par digest sur le volume courant (schéma 5), contrôle de `info`, connexion/lecture/écriture et intégrité, arrêt puis remontée candidate. Les projections anciennes DMARC de v0.5.0 peuvent réapparaître, pas une divergence des notes observées. Ne pas confondre ce retour avec le retour schéma 5→4 qui exige une restauration et perd les données post-sauvegarde.
Sur copie isolée : sauvegarde vérifiée hors volume, ordonnanceur off, arrêt propre, image officielle v0.5.0 épinglée par digest sur le volume courant (schéma 5), contrôle de `info`, connexion/lecture/écriture et intégrité, arrêt puis remontée de l'image v0.6.1. Les projections anciennes DMARC de v0.5.0 peuvent réapparaître, pas une divergence des notes observées. Ne pas confondre ce retour avec le retour schéma 5→4 qui exige une restauration et perd les données post-sauvegarde.

Digest officiel v0.5.0 résolu directement auprès de GHCR : `sha256:c8dacc1e82646562a3a386ba850a8dca785df5ceee98bf9910ba74eef67a5651`. Image v0.6.0 : digest conservé de la publication vérifiée `sha256:70da24128abef742dc4649235d662a37596ed786a322d840c85aa02afc2fe633`. La CI vérifie aussi la version embarquée.

## Publication séparée
## Intégration et publication effectives

Les marqueurs sources (`pyproject.toml`, `__init__.py`, valeur par défaut Compose) sont préparés en 0.6.1 pour une candidate cohérente. Les commandes publiques des README et guides restent épinglées au tag publié v0.6.0. Pour tester la candidate, fournir une image locale/CI via `POSTURE_COCKPIT_IMAGE` ; ne pas prétendre que `ghcr.io/vinzgithub/posture-cockpit:0.6.1` existe déjà.
- **Intégration :** PR #33 à #39 fusionnées avec autorisation du mainteneur ; `main` et le tag `v0.6.1` pointent vers `641f1dbde97e5e0166101f2c9c4f52b0ee6177fb`. Le commit rassemble la candidate validée et ses preuves documentaires.
- **GitHub :** [release v0.6.1](https://github.com/vinzgithub/posture-cockpit/releases/tag/v0.6.1) publiée.
- **Publication GHCR distincte :** [workflow manuel #40123536677](https://github.com/vinzgithub/posture-cockpit/actions/runs/40123536677) **réussi**, 12 jobs terminés sans échec : tests Python 3.11–3.13, Chromium, Docker et migrations/retour arrière, recette AMD64 et démarrage ARM64 émulé, garde de version et lecture retour des tags.
- **Image multi-architecture :** `ghcr.io/vinzgithub/posture-cockpit:0.6.1`, digest `sha256:f670500db50aff70b535a82ec0692660888f6b6387fbe25823feeb0a15d6f069`. Les tags `0.6.1`, `0.6` et `latest` ont tous été relus avec ce même digest lors du workflow, après la publication du manifeste AMD64/ARM64.
- **Documentation :** PR #40 préparée pour synchroniser README FR/EN, guides et liens d'installation sur le tag publié `v0.6.1`, sans modification fonctionnelle du Compose.
- **Exploitation :** aucune instance existante n'est automatiquement migrée par la publication. Sauvegarde vérifiée et procédure de mise à niveau sont obligatoires avant une éventuelle intervention en production.

La recette est acceptée techniquement au SHA ci-dessus ; les sept PR restent ouvertes pour la décision d’intégration du mainteneur. Présenter le SHA, les PR et les preuves avant fusion et publication. Tag, GitHub Release, publication GHCR et déploiement nécessitent son autorisation explicite. La CI sur PR n'utilise qu'un registre de test local pour son dry run de publication.
La recette F08 complète a été exécutée sur AMD64. ARM64 a été compilée et démarrée sous émulation, sans revendication de recette F08 complète sur cette architecture. Aucun test manuel avec lecteur d'écran réel n'est revendiqué.
Loading
Loading