Vérification et transparence de la gouvernance

Cette page explique les contrôles utilisés par PayCal pour vérifier le comportement et appliquer des garde-fous opérationnels en production.

Ce que nous entendons par gouvernance

Pour nous, la gouvernance signifie une politique codée dans des chemins de code, des limites, des tests et des contrôles de déploiement. Il ne s’agit pas d’une promesse uniquement documentaire.

Les références ci-dessous correspondent aux points de mise en œuvre dans ce référentiel afin que les affirmations puissent être vérifiées de manière indépendante.

Métadonnées de vérification

Métadonnées d'itinéraire

  • Itinéraire : /transparency/verification-governance/
  • Dernière vérification :
  • Prochaine révision prévue :
  • Portée de la vérification : examen manuel des implémentations de portes décrites par rapport aux hooks actuels, aux vérifications du pipeline CI et aux chemins de contrôle d'exécution.

Limites connues

  • Les descriptions de portes sont gérées manuellement ; une référence croisée automatisée entre cette page et la configuration du hook/pipeline est prévue pour la clôture trimestrielle.
  • Les valeurs limites d'exécution reflètent les valeurs par défaut ; Les remplacements spécifiques à l'environnement peuvent différer sur les instances non liées au développement.

Ces métadonnées sont mises à jour trimestriellement dans le cadre de la clôture de l'audit de gouvernance.

Statut actuel de l'audit de sécurité

Depuis le 24/03/2026, PayCal reste dans le statut PASS après l'expansion de BRS-01 à BRS-05 et la synchronisation de l'hygiène des versions de suivi.

Les détails du statut public et les références des preuves sont publiés sur /transparency/security-audit/.

1) Portes de politique locale (Git Hooks)

Les hooks locaux bloquent les fusions dangereuses avant que le code n'atteigne les branches partagées.

  • githooks/pre-commit runs PHPStan Level 9 on staged PHP files under html/.
  • githooks/pre-commit blocks baseline usage in phpstan.neon and blocks phpstan-baseline.neon.
  • githooks/pre-push runs full-repo PHPStan Level 9 and applies the same baseline-blocking policy.

Ces portes réduisent les risques de dérive politique et de régressions silencieuses de la qualité.

2) Pipeline de vérification CI

Le flux de travail CI exécute des couches de test de plus en plus approfondies, depuis la validation rapide jusqu'à la vérification sous contrainte.

  • .github/workflows/phpunit.yml Stage 2: composer run test:all (unit + integration + contract).
  • .github/workflows/phpunit.yml Stage 3: composer run test:random (order-randomized).
  • .github/workflows/phpunit.yml Stage 3: composer run test:coverage.
  • .github/workflows/phpunit.yml Stage 4: mutation test job.

Representative contract/integration suites include html/tests/Integration/KekContractTest.php, html/tests/Integration/RedisContractTest.php, and contract tests under html/tests/Contract/.

3) Limites de taux d'exécution et gouvernance des entrées

Les points de terminaison opérationnels sont limités par des fenêtres de requête explicites et des règles de validation de charge utile.

  • html/src/Domain/RateLimiter.php defines per-minute endpoint and IP limits, including telemetry (90/minute).
  • html/src/Controllers/TelemetryController.php enforces authentication and telemetry rate limits before accepting events.
  • html/src/Controllers/TelemetryController.php bounds event type format with a strict regex to control key cardinality.
  • html/src/Controllers/EmailVerificationController.php applies retry windows with TTL-backed rate-limit keys.

Ces contrôles visent à maintenir le comportement prévisible dans des conditions de circulation normales et abusives.

4) Gouvernance du TTL et des limites de sécurité

Les limites de flux sensibles à la sécurité sont définies de manière centralisée et limitées par des contraintes min/max.

  • html/src/system-limits-master.php includes enable_rate_limiting and account-recovery controls.
  • Les limites de récupération de compte incluent la durée de vie du code, les temps de recharge de renvoi, les tentatives de vérification maximales, les fenêtres de relecture et les durées de vie des blocs IP hachés.
  • html/src/Domain/AccountRecoveryAbuseGuard.php records replay telemetry and applies automatic hashed-IP blocking when thresholds are exceeded.
  • html/src/Domain/AccountRecoveryTransaction.php enforces transaction/proof/bootstrap expiries from system limits.

Cette structure permet des mises à jour contrôlées des politiques sans contourner les limites typées.

5) Contrôles de livraison des CSP et des actifs

Les pages destinées au public sont régies par une politique de sécurité du contenu explicite et un rendu de script/style non-aware.

  • html/header.php builds and emits CSP directives including default-src 'none' and strict script-src/style-src policies.
  • html/header.php includes Trusted Types policy directives.
  • html/src/Domain/Render.php supports nonce-based module script rendering.

Ces contrôles limitent les surfaces exécutables et font partie de notre modèle de gouvernance de base.

Comment vérifier ces affirmations

Les développeurs peuvent reproduire les signaux de vérification directement dans ce référentiel :

# Static analysis gates
bash githooks/pre-commit
bash githooks/pre-push

# Test pipeline equivalents
cd html
composer run test:all
composer run test:random
composer run test:coverage

Dernière mise à jour : March 24, 2026.