Aller au contenu

P1.5G — Controlled Live Benchmark

Status: CLOSED_PASS / P1.5F CLOSED_PASS / S1 + S2 + S3 + S5 + S6 CLOSED_PASS / S4 SKIPPED_NOT_AUTHORIZED / P1.5H NOT_CERTIFIED

P1.5G définit le contrat des scénarios contrôlés de capacité S1 à S6.

Ce document n'autorise aucune nouvelle mutation live. S1, S2, S3, S5 et S6 ont été exécutés et certifiés séparément sur leurs autorités live exactes, puis leurs preuves ont été enregistrées dans Git. La policy G est désormais globalement CLOSED_PASS; S4 est terminal SKIPPED_NOT_AUTHORIZED pour cette première enveloppe faute d'autorité Runtime Concurrency explicite. L'autorité globale est benchmarks/capacity/p1-5g-global-closure.json.

Prérequis absolu

P1.5F est désormais CLOSED_PASS sur la révision/configuration réellement certifiée. L'autorité de cette preuve est :

benchmarks/capacity/p1-5f-s0-live-closure.json

Ce prérequis est donc satisfait. S1, S2, S3, S5 et S6 sont CLOSED_PASS avec preuves live Git-recorded. S3 a certifié la concurrence contrôlée Acer/Samsung sur l'autorité c67fba3f96af7614ed48551b47f04055b08ff5d6, avec recovery exact et convergence business des deux feeds. S6 a certifié le frontend pendant heavy sync sur son autorité live dédiée. S4 reste SKIPPED_NOT_AUTHORIZED pour cette enveloppe. La clôture globale P1.5G est enregistrée dans benchmarks/capacity/p1-5g-global-closure.json.

Les preuves minimales P1.5F sont :

  • SHA Git déployé exact ;
  • dataset production fingerprinté ;
  • 1 warm-up + 3 runs mesurés minimum ;
  • business_correctness=PASS ;
  • les 18 séries ccx_capacity_* universellement applicables finies et numériques ; Identity numérique uniquement si son gate de déploiement est actif, sinon verdict exact SKIPPED_NOT_DEPLOYED ;
  • aucun restart inattendu ;
  • aucun OOMKilled ;
  • artefacts hors dépôt.

Une baseline manquante, incomplète, périmée ou provenant d'une autre révision interdit l'exécution P1.5G.

Autorités

Contrat machine-readable :

benchmarks/capacity/p1-5g-controlled-live-contract.json

Harness commun :

scripts/capacity-benchmark-harness.sh

Le harness reste plan-first et n'a aucune autorité de mutation.

Politique de clôture P1.5G

La politique propriétaire versionnée est OWNER_POLICY=G / ALL_AUTHORIZED_SCENARIOS.

La clôture globale exige un statut terminal explicite. Pour la première enveloppe, S1, S2, S3, S5 et S6 sont CLOSED_PASS; S4 est terminal SKIPPED_NOT_AUTHORIZED conformément à la policy G. La condition globale est donc satisfaite et P1.5G est CLOSED_PASS.

S4 reste SKIPPED_NOT_AUTHORIZED tant qu'aucune Runtime Concurrency Authority explicite n'autorise et ne mesure des worker counts supplémentaires.

S6 est requis pour la clôture et est désormais CLOSED_PASS avec son autorité Git benchmarks/capacity/p1-5g-s6-live-closure.json. Sa preuve frontend/heavy-sync, son recovery et ses fingerprints immuables sont enregistrés; aucune nouvelle exécution S6 n'est autorisée par ce document.

Toute dimension non mesurée reste NOT_VALIDATED et aucune extrapolation au-delà de l'enveloppe observée n'est autorisée.

La version commune requise pour les scénarios mutatifs est désormais :

benchmark_harness_version=p1.5e-v5

Le harness v5 impose en mode --execute :

  • aucun recovery pour S0 ;
  • un --recovery-script exécutable pour chaque scénario S1–S6 ;
  • le SHA-256 du recovery dans le manifest ;
  • des logs recovery par répétition ;
  • un état Runtime post-recovery ;
  • recovery_rc=0 pour qu'un run soit PASS.

La recovery est lancée après les captures de la fenêtre de mesure. Ses ressources ne sont donc pas confondues avec celles du workload benchmarké.

Règle de mutation

Chaque scénario mutatif exige avant exécution :

workload versionné
business verifier versionné
recovery / rollback versionné
preuve de recovery
SHA-256 de chacun dans les artefacts
recovery_rc=0 pour chaque répétition PASS

Le workload doit déclarer explicitement les mutations qu'il effectue.

Le harness ne doit jamais devenir une porte dérobée pour :

docker compose up/down/restart/recreate
systemctl start/stop/restart/enable/disable
migration de schéma
SQL destructif
augmentation de workers non autorisée

Toute autorité opérationnelle nécessaire à un scénario reste séparée et auditée.

Répétitions

Chaque scénario certifié conserve au minimum :

1 warm-up
3 measured runs

Le rapport garde la médiane et le pire run mesuré.

Scénarios

S1 — Large feed

Objectif :

  • mesurer un feed représentatif de grande taille ;
  • observer ingestion, normalisation, persistence, identity, projections ;
  • mesurer queue, DB et ressources.

S1 Git preparation :

contract   benchmarks/capacity/p1-5g-s1-large-feed-contract.json
workload   scripts/capacity-workloads/p1-5g-s1-large-feed.sh
verifier   scripts/capacity-verifiers/p1-5g-s1-large-feed.sh
recovery   scripts/capacity-recovery/p1-5g-s1-large-feed.sh
config     benchmarks/capacity/p1-5g-s1-live-scenario-config.json
closure    benchmarks/capacity/p1-5g-s1-live-closure.json
status     CLOSED_PASS / LIVE EVIDENCE GIT RECORDED

Le workload utilise le replay canonique d'un snapshot géré ccx_feed_files. Le recovery rejoue un snapshot de restauration du même feed et doit restaurer exactement le fingerprint sémantique pré-workload, puis converger identiquement lors d'un second replay.

Aucune taille « large feed » arbitraire n'est inventée. La sélection READ-ONLY du 20 septembre 2026 a retenu Acer comme feed représentatif : snapshot workload 96 (8c73ced0...) et snapshot recovery 98 (f3d01d53...), tous deux gérés, lisibles et vérifiés par SHA-256. Le dataset global observé reste 708 offres, 678 produits et 2 marchands, fingerprinté f468e1e82f3d1745.... La configuration exacte d'exécution reste immuable dans benchmarks/capacity/p1-5g-s1-live-scenario-config.json. S1 a été exécuté sur cette configuration après preuve live du recovery et alignement d'autorité, puis restauré exactement au dataset pré-benchmark.

S1_LIVE_DATASET_SELECTION=CLOSED_PASS_LIVE_RECORDED
S1_SCENARIO_CONFIG=CLOSED_PASS_LIVE_RECORDED
S1_RECOVERY_PROOF=CLOSED_PASS_LIVE_PROVEN
S1_LIVE_EXECUTION=CLOSED_PASS

Clôture live Git-recorded :

status          CLOSED_PASS
git_sha         3da4f88e9a931e8005dd496fe4df1bd3cca7891e
git_tree        b723f9acdbdd5e5f70003ab32940601b3e325df9
feed            acer
workload        snapshot 96
recovery        snapshot 98
dataset         prod-s1-f468e1e82f3d1745
warmup          1 PASS
measured        3 PASS
median_ms       40740
worst_ms        42871
business        PASS
recovery        PASS après chaque run

Autorité de clôture :

benchmarks/capacity/p1-5g-s1-live-closure.json

Les artefacts live restent hors dépôt sous :

/mnt/data/cmonchoix-benchmarks/p1-5g/live-certification/S1/20260920T195442Z-3da4f88e9a93

Le result tree contient 97 fichiers et porte le SHA-256 :

3c5cac341ddc17e8d820c881b61ed6574e1cba724779d395a27d93bfa85ffde8

Cette clôture ne ferme pas P1.5G globalement et n'autorise aucun autre scénario.

S2 — High churn price / stock

Objectif :

  • mesurer un taux élevé de changements prix/stock ;
  • vérifier le coût des écritures réellement sémantiques ;
  • observer les projections impactées.

Préparation Git versionnée :

contract   benchmarks/capacity/p1-5g-s2-high-churn-contract.json
workload   scripts/capacity-workloads/p1-5g-s2-high-churn.sh
verifier   scripts/capacity-verifiers/p1-5g-s2-high-churn.sh
recovery   scripts/capacity-recovery/p1-5g-s2-high-churn.sh
config     benchmarks/capacity/p1-5g-s2-live-scenario-config.json
closure    benchmarks/capacity/p1-5g-s2-live-closure.json
status     CLOSED_PASS / LIVE EVIDENCE GIT RECORDED

Le terme high churn n'introduit aucun seuil inventé. Le workload mutera 100 % des lignes prix/stock éligibles du feed sélectionné : c'est la cardinalité maximale à l'intérieur d'un périmètre feed borné. Une ligne est éligible lorsqu'elle existe dans ccx_offers_norm_v2, possède un prix strictement positif et dispose d'un offer_key correspondant dans l'autorité canonique ccx_offer_items.

La mutation est volontairement minimale sur la valeur et maximale sur la cardinalité :

price                   + 0,01
stock_status            toggle in_stock / out_of_stock
eligible coverage       100 %
coverage denominator    eligible_price_stock_rows
change_percent          changed_offer_keys / selected_feed_current_offers * 100

Le workload ne porte aucun SQL mutatif ad hoc. Il utilise ccx_offer_projection_write_service(), l'upsert normalisé canonique puis ccx_sync_refresh_product_projections(), sous lock feed/run. Le change_percent générique du harness conserve un dénominateur de feed entier, cohérent avec S1 ; la couverture spécifique S2 reste séparément égale à 100 % des lignes prix/stock éligibles. Le recovery rejoue un snapshot géré ccx_feed_files représentant exactement l'état pré-benchmark et exige deux convergences identiques.

La sélection live READ-ONLY du 2026-09-20 a appliqué exactement cette règle. Acer était éligible avec 172 lignes ; Samsung avec 536. Les deux disposaient d'un snapshot géré lié exactement à leur état courant. Samsung est donc sélectionné sans ambiguïté et le scenario-config fingerprintable est maintenant versionné avant toute preuve live du recovery.

S2_WORKLOAD=CLOSED_PASS_LIVE_EXECUTED
S2_VERIFIER=CLOSED_PASS_LIVE_EXECUTED
S2_RECOVERY=CLOSED_PASS_LIVE_PROVEN
S2_LIVE_SELECTION=CLOSED_PASS_LIVE_RECORDED
S2_SCENARIO_CONFIG=CLOSED_PASS_LIVE_RECORDED
S2_SELECTED_FEED=samsung
S2_SELECTED_FEED_CURRENT_OFFERS=536
S2_SELECTED_ELIGIBLE_ROWS=536
S2_ELIGIBLE_COVERAGE_PERCENT=100
S2_CHANGE_PERCENT=100.000000
S2_RECOVERY_SNAPSHOT_ID=97
S2_LIVE_EXECUTION=CLOSED_PASS

Première tentative de preuve live recovery S2 (autorité 296714f89e24e519a53e711641921926ec144155) :

result                         FAIL_WORKLOAD_BEFORE_VERIFIER
reason                         S2 normalized upsert produced no writes
emergency recovery             PASS / double replay
exact business prestate        RESTORED
replay 1 run                   20260920_211406_67f8d00ce3
replay 2 run                   20260920_211439_cabc855fc7
current provenance             replay 2
failed synthetic run residue   NONE
benchmark executed             NO

L'incident a révélé une erreur de preuve du workload, pas une perte de données : le workload utilisait le compteur MySQL affected rows de l'upsert normalisé comme condition de succès, alors que le pipeline canonique le documente explicitement comme diagnostic potentiellement trompeur pour INSERT ... ON DUPLICATE KEY UPDATE.

La correction fail-closed conserve ce compteur comme diagnostic mais exige désormais deux preuves de provenance avant les fingerprints métier :

ccx_offer_items rows with run_id_last_seen=<synthetic-run> == expected eligible rows
ccx_offers_norm_v2 rows with run_id=<synthetic-run>        == expected eligible rows

Le nouveau contrat d'évidence mutation est P1_5G_S2_MUTATION_V2. Toute cardinalité différente de l'enveloppe sélectionnée reste un FAIL. La correction est Git-closed par la PR #343, head corrigé 3e8a279820e24a80c2539de2c0d97a359a61a728, merge commit b36f41ab94bd541217890ae553cc29cfa0844b58, tree b82319736bae36e6d2070d7d2a476f19db122f69. La recovery reproof a ensuite passé sur l'autorité d6c9c6c8fe1cef8cdfc75de33ab0b0fa966c2b5a, puis le benchmark S2 a passé 1 warm-up + 3 runs mesurés avec recovery PASS après chaque run et restauration exacte du préstate.

Clôture live Git-recorded :

status          CLOSED_PASS
git_sha         d6c9c6c8fe1cef8cdfc75de33ab0b0fa966c2b5a
git_tree        204622aacbba553331e0d41b533e547877f32ddf
feed            samsung
dataset         prod-s2-f468e1e82f3d1745
eligible_rows   536
change_percent  100.000000
warmup          1 PASS / 53836 ms
measured        3 PASS / 55941,54194,54652 ms
median_ms       54652
worst_ms        55941
business        PASS
recovery        PASS après chaque run

Autorité de clôture :

benchmarks/capacity/p1-5g-s2-live-closure.json

Les artefacts live restent hors dépôt sous :

/mnt/data/cmonchoix-benchmarks/p1-5g/live-certification/S2/20260920T215919Z-d6c9c6c8fe1c

Le result tree contient 101 fichiers et porte le SHA-256 :

035a06bd115b79f3304f705f8ba0f81ae65da6b701b346f63556507c39dabdc9

Cette clôture historique ne fermait pas P1.5G globalement. S3 et S6 ont depuis été certifiés séparément; S4 reste SKIPPED_NOT_AUTHORIZED.

S3 — Concurrent merchants

Objectif :

  • mesurer concurrence multi-marchands ;
  • queue depth / queue lag ;
  • fairness ;
  • absence de blocage global.

Préparation Git versionnée :

contract   benchmarks/capacity/p1-5g-s3-concurrent-merchants-contract.json
workload   scripts/capacity-workloads/p1-5g-s3-concurrent-merchants.sh
verifier   scripts/capacity-verifiers/p1-5g-s3-concurrent-merchants.sh
recovery   scripts/capacity-recovery/p1-5g-s3-concurrent-merchants.sh
config     benchmarks/capacity/p1-5g-s3-live-scenario-config.json
closure    benchmarks/capacity/p1-5g-s3-live-closure.json
status     CLOSED_PASS / LIVE EVIDENCE GIT RECORDED

S3 ne modifie ni le scheduler production ni le nombre de workers. Il lance exactement deux wp ccx sync replay --snapshot-id=... canoniques en parallèle dans le conteneur ccx-platform-worker existant. Les deux snapshots workload sont les snapshots gérés qui représentent exactement l'état business CURRENT des feeds sélectionnés ; le change_percent métier reste donc 0 tout en exerçant réellement ingestion, staging, normalisation, persistence, projections et queue.

Après le drift de production observé le 21 septembre 2026, la re-sélection live READ-ONLY est PASS sur l'autorité 6213e858949e8d195fbe2a231cbe3094f9ea05dd / tree 99f085b3eca28f6803310dbdb795f3a7adb9b208, avec preuve de re-sélection 2a8c7d263da3875e0673a516ac21d6091bcd0ead5740de9ac149e5ca1c5f3dd1. Le dataset est prod-s3-8bdb4a18727d1288 / 8bdb4a18727d12883234c6829e92ed3c25cd65927348d9a51b2fe1052e48ec96, soit 701 offres, 678 produits et 2 marchands. Le classement reste samsung,acer par cardinalité CURRENT et l'ordre d'exécution déterministe reste lexical acer,samsung. Les nouveaux snapshots exact-current sont Acer 100 / ad90fd29c1f1bcbdbe68598713ca19be5ad33b87e0e6cfc1a7abe2bc9e52b9f4 et Samsung 99 / b0d548cc56087b7cf6ad628e284b80ca9a97a070d86ad420c3e1aeee81154a4a. Le scenario-config rafraîchi a ensuite été exécuté one-shot sur l'autorité c67fba3f96af7614ed48551b47f04055b08ff5d6. Le recovery live, l'alignement d'autorité, le workload concurrent, le verifier et la clôture de certification ont tous terminé PASS.

Le workload exige un overlap temporel strictement positif des deux processus, deux run IDs distincts, zéro erreur et stabilité business exacte des deux feeds. Aucun ratio arbitraire de fairness n'est inventé. Le smoke CI prouve également qu'une panne d'un enfant n'empêche pas la collecte du résultat de l'autre enfant ni l'éligibilité au recovery.

Le recovery rejoue les deux snapshots exact-current en ordre lexical, exige le préstate exact des deux feeds, puis répète la paire de replays et exige une convergence identique.

S3_WORKLOAD=CLOSED_PASS_LIVE_EXECUTED
S3_VERIFIER=CLOSED_PASS_LIVE_EXECUTED
S3_RECOVERY=CLOSED_PASS_LIVE_PROVEN
S3_LIVE_SELECTION=CLOSED_PASS_LIVE_RECORDED
S3_SCENARIO_CONFIG=CLOSED_PASS_LIVE_RECORDED
S3_SELECTION_RANKING=samsung,acer
S3_EXECUTION_ORDER=acer,samsung
S3_ACER_SNAPSHOT_ID=100
S3_SAMSUNG_SNAPSHOT_ID=99
S3_WORKER_COUNT=1
S3_CONCURRENCY_WIDTH=2
S3_BUSINESS_CHANGE_PERCENT=0
S3_LIVE_EXECUTION=CLOSED_PASS

Clôture live Git-recorded :

status          CLOSED_PASS
git_sha         c67fba3f96af7614ed48551b47f04055b08ff5d6
git_tree        2168af002b2ae96b8a0de18b29884c48e208cc95
dataset         prod-s3-8bdb4a18727d1288
feeds           acer,samsung
warmup          1 PASS
measured        3 PASS
median_ms       54672
worst_ms        56640
min_overlap_ms  33882
max_overlap_ms  36148
run_ids         8 distinct
business        PASS
recovery        PASS après chaque run

Autorité de clôture :

benchmarks/capacity/p1-5g-s3-live-closure.json

Closure tree SHA-256 :

e3ee93178607e28c0c35bf68b65f5bbc36fd7821a1ab2361a613c8186ff96739

Cette clôture ferme S3 uniquement. La clôture globale P1.5G reste une gate distincte.

Le scénario doit prouver l'isolation d'une panne de marchand avant d'être certifié.

S4 — Worker scaling

Objectif théorique :

1 / 2 / 4 workers

La présence de ces valeurs dans le contrat n'autorise pas leur usage.

Pour chaque valeur > 1 :

runtime concurrency authority for exact revision
        ↓
explicit PASS
        ↓
scenario executable

Sinon :

SKIPPED_NOT_AUTHORIZED

Aucun benchmark ne doit modifier la concurrence live pour simplement "voir ce qui se passe".

S5 — Projection rebuild

Objectif :

  • mesurer un rebuild projection contrôlé ;
  • throughput ;
  • lag corrélé ;
  • CPU/RAM/DB ;
  • correction métier après rebuild.

Préparation Git versionnée :

benchmarks/capacity/p1-5g-s5-projection-rebuild-contract.json
scripts/capacity-workloads/p1-5g-s5-projection-rebuild.sh
scripts/capacity-verifiers/p1-5g-s5-projection-rebuild.sh
scripts/capacity-recovery/p1-5g-s5-projection-rebuild.sh

Le workload utilise l'orchestrateur canonique sous le lock ccx_product_projection_refresh_<vertical>. Le périmètre autorisé est limité aux quatre projections dérivées de la verticale sélectionnée : models, variants, specs et gallery. ccx_offers_norm_v2 reste une autorité source read-only pendant S5.

Le verifier recalcule un fingerprint sémantique des projections et exige la stabilité de la source canonique. Les identifiants auto-incrémentés et timestamps de projection sont exclus du fingerprint ; toutes les autres colonnes sont incluses.

Le recovery est une convergence canonique : les projections étant dérivées, il reconstruit depuis les offres normalisées inchangées. Après workload réussi, le fingerprint recovered doit être identique au fingerprint post-workload vérifié. Si le workload échoue avant de produire ce fingerprint, deux rebuilds recovery consécutifs doivent converger vers le même état sémantique.

Clôture live Git-recorded :

status          CLOSED_PASS
git_sha         7e97d18c6a211adee4f497062b9facffc5a0d70b
git_tree        325073c5a86f25127bf5609a2aed2fe0488be396
vertical        smartphone
dataset         prod-s5-f468e1e82f3d1745
warmup          1 PASS
measured        3 PASS
median_ms       23711
worst_ms        23782
workload        PASS
verifier        PASS
recovery        PASS

Autorité de clôture :

benchmarks/capacity/p1-5g-s5-live-closure.json

Les artefacts live restent immuables hors dépôt sous :

/mnt/data/cmonchoix-benchmarks/p1-5g/live-certification/S5/20260920T141847Z-7e97d18c6a21

Le proof tree certifié contient 85 fichiers et porte le SHA-256 :

b6bf76d7be309c125a3ca67edaae81fb1a4e49e56d8c16c0a9c5be58ccff2630

Cette clôture ne ferme pas P1.5G globalement et n'autorise pas S6.

S6 — Frontend during heavy sync

Objectif :

  • mesurer le frontend public pendant une sync lourde contrôlée ;
  • p95/p99 ;
  • 5xx ;
  • projection lag ;
  • contention CPU/RAM/DB.

Les objectifs de conception déjà documentés restent des design targets non validées tant que P1.5G/H ne les certifient pas.

État d'autorité S6 : CLOSED_PASS / LIVE EVIDENCE GIT RECORDED.

L'autorité de workload-source S6 est désormais fixée à :

S6_HEAVY_SYNC_SOURCE_AUTHORITY=S1_LARGE_FEED_CANONICAL_SNAPSHOT_REPLAY_MODEL
S6_DIRECT_REUSE_OF_HISTORICAL_S1_SNAPSHOT_IDS=NO

S6 réutilise le modèle S1 — replay d'un snapshot géré ccx_feed_files via wp ccx sync replay — sans hériter d'un ancien ID S1 par hypothèse. La sélection live READ-ONLY du 21 septembre 2026 est désormais fermée et enregistrée dans benchmarks/capacity/p1-5g-s6-live-scenario-config.json.

L'autorité retenue est le feed Acer sur son snapshot exact-current 100 (ad90fd29...) à la fois pour le workload et le recovery. L'état CURRENT comporte 171 offres Acer et porte le fingerprint sémantique a46b23ad...; le dataset global est prod-s6-8bdb4a18727d1288, soit 701 offres, 678 produits canoniques et 2 marchands. Le change_percent S6 est 0 : la première enveloppe mesure la contention frontend/sync sans introduire volontairement un churn métier supplémentaire.

L'autorité frontend est https://cmonchoix.com avec les routes /, /catalogue, /informatique, /smartphones-objets-connectes et /electromenager, toutes validées par GET live READ-ONLY. L'enveloppe initiale est bornée à concurrency=2, request_timeout_seconds=5, max_duration_seconds=120, max_requests=1000 et inter_request_delay_ms=250.

Pack Git S6 :

benchmarks/capacity/p1-5g-s6-frontend-heavy-sync-contract.json
scripts/capacity-lib/p1-5g-s6-frontend-heavy-sync-state.sh
scripts/capacity-lib/p1-5g-s6-frontend-traffic.sh
scripts/capacity-workloads/p1-5g-s6-frontend-heavy-sync.sh
scripts/capacity-verifiers/p1-5g-s6-frontend-heavy-sync.sh
scripts/capacity-recovery/p1-5g-s6-frontend-heavy-sync.sh
tests/Operations/capacity-p1-5g-s6-preparation-smoke.sh
benchmarks/capacity/p1-5g-s6-live-scenario-config.json

Le générateur frontend est borné, HTTPS-only, route-relative, et doit couvrir toute la fenêtre du replay heavy-sync. Le verifier exige notamment absence d'erreur transport/4xx, ratio 5xx direct <= 0,1 %, overlap complet, stabilité métier post-workload et projection health. Les séries Prometheus ccx_capacity_frontend_p95_seconds, ccx_capacity_frontend_p99_seconds, ccx_capacity_http_5xx_ratio et ccx_capacity_projection_lag_seconds restent l'autorité commune du harness pour la certification live.

Clôture live Git-recorded :

status          CLOSED_PASS
git_sha         aefa97e5ea82139ba12044ba3abf699f734113bd
git_tree        df5c0f0e5327a2fc74995d5cbd02055d2d1e3313
feed            acer
snapshot        100
dataset         prod-s6-8bdb4a18727d1288
warmup          1 PASS
measured        3 PASS
median_ms       41565
worst_ms        41811
business        PASS
recovery        PASS après chaque run
frontend        PASS / full overlap
measured 5xx    0
max client p95  0.097295 s
max client p99  0.110738 s

Autorité de clôture :

benchmarks/capacity/p1-5g-s6-live-closure.json

Les artefacts live certifiés restent immuables hors dépôt sous :

/mnt/data/cmonchoix-benchmarks/p1-5g/live-certification/S6/20260921T200715Z-aefa97e5ea82-live-certification-closure-v2

Le closure tree porte le SHA-256 :

c729c00f13667b2edd81868ec992e14de69b56851f89ffda74e42a70709933db

Cette clôture historique fermait S6 uniquement. Depuis, S3 a également été clôturé et la policy G a été fermée globalement ; S4 reste SKIPPED_NOT_AUTHORIZED sans Runtime Concurrency Authority.

Hard FAIL

Un scénario est FAIL indépendamment du débit si l'on observe notamment :

  • résultat métier différent ;
  • perte de données ;
  • projection incohérente ;
  • OOMKilled ;
  • restart inattendu ;
  • deadlock non récupéré ;
  • queue qui ne se draine pas ;
  • job silencieusement abandonné ;
  • recovery/rollback non vérifié ;
  • saturation disque provoquant un échec fonctionnel.

Artefacts obligatoires

Chaque scénario fournit à P1.5H :

  • manifest exact ;
  • médiane ;
  • pire run ;
  • business correctness ;
  • throughput ;
  • CPU/RAM/I/O ;
  • DB latency ;
  • queue depth + drain time ;
  • projection lag ;
  • frontend p95/p99 + 5xx ;
  • restart/OOM/deadlock evidence ;
  • recovery evidence ;
  • ressource limitante ;
  • marge observée.

État après clôture globale P1.5G

P1.5F live baseline             CLOSED_PASS
P1.5G global                    CLOSED_PASS
P1.5G S5 projection rebuild     CLOSED_PASS / LIVE EVIDENCE GIT RECORDED
P1.5G policy                    OWNER_POLICY G / ALL_AUTHORIZED_SCENARIOS
P1.5G S1                        CLOSED_PASS / LIVE EVIDENCE GIT RECORDED
P1.5G S2                        CLOSED_PASS / LIVE EVIDENCE GIT RECORDED
P1.5G S3                        CLOSED_PASS / LIVE EVIDENCE GIT RECORDED
P1.5G S4                        SKIPPED_NOT_AUTHORIZED UNTIL RUNTIME CONCURRENCY AUTHORITY
P1.5G S6                        CLOSED_PASS / LIVE EVIDENCE GIT RECORDED
P1.5G closure authority         benchmarks/capacity/p1-5g-global-closure.json
P1.5H certificate               NOT_CERTIFIED

Aucun plafond de capacité global n'est certifié par ce document.