185 lines
11 KiB
Markdown
185 lines
11 KiB
Markdown
# STEP20C — suivi contexte GLES et readback G3
|
|
|
|
2026-10-15. Rapport expérimental du ticket
|
|
`SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1`.
|
|
Le run GPU-G3 est **INCONCLUSIVE** ; son objectif diagnostic natif est
|
|
**NOT_EXERCISED**. La cause identifiée est un chemin de fixture non portable,
|
|
avant toute acquisition ; aucun défaut GPU/compositeur n'en est déduit.
|
|
|
|
```text
|
|
GPU_GLES_CAPABILITY_AND_READBACK_PREFLIGHT=ACCEPTED
|
|
GPU_GLES_ADMISSION=NOT_EXERCISED
|
|
GPU_G3_NATIVE_READBACK=NOT_EXERCISED
|
|
GPU_WHOLE_FIELD_CAUSALITY=NOT_PROVEN
|
|
```
|
|
|
|
La portée du preflight accepté est **OFFLINE_ONLY** ; elle ne qualifie pas
|
|
l'admission ou le readback natifs non exercés.
|
|
|
|
## Octets exécutés et préparation revue
|
|
|
|
Le [kit de suivi](../../tooling/probes/step20c-corec-v2-followup/README.md)
|
|
exécuté est celui du commit source publié
|
|
`c55373eab3c53132bf1157acc9cfc9edd451156e`, gel global V2 SHA256
|
|
`2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7`,
|
|
digest `f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140`.
|
|
La [publication](evidence/step20c-native-closure/source-publication.json)
|
|
et le [clone](evidence/step20c-native-closure/clone-validation.json)
|
|
précèdent les réservations : 49/49 fichiers et modes, 66 tests, six clients
|
|
compilés. Trois findings initiaux ont été corrigés avant acceptation source.
|
|
Ces faits ne qualifient pas le premier dessin client sous le nouveau LAB.
|
|
|
|
Le nouveau diagnostic G3 a sa propre identité : SHA256
|
|
`9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658`,
|
|
Build ID `afdde13d52f3a5fe07c096c1221fcf0c8ae223fc`, PID `3510983`.
|
|
Le client réellement lancé, PID `3511049`, porte le SHA256
|
|
`4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4` ;
|
|
sa source `clients-g2.c` porte le SHA256
|
|
`66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7`.
|
|
Le gel GPU séparé est
|
|
`03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2`.
|
|
Une correction offline ultérieure n'est pas la source de ce run.
|
|
|
|
La première préparation Meson échoue : les arguments C sont fusionnés et
|
|
`EGL_EGLEXT_VERSION` n'est pas obtenu. Le reçu FAIL reste archivé ; la
|
|
continuation explicitement autorisée corrige les arguments de la **même paire**,
|
|
sans changement source. Le [build réparé](evidence/step20c-native-closure/g3-build-repair.json)
|
|
et la [revue indépendante de build](evidence/step20c-native-closure/gpu-build-review.json)
|
|
portent sur cette identité, une paire et un DESTDIR de cinq fichiers.
|
|
Les 417 fichiers Mosaic restent ceux du CORE source compilé inchangé ; le
|
|
diagnostic SceneFX est distinct. Le stage privé comprend uniquement
|
|
`/usr/bin/swayfx-mosaic` et les quatre notices documentées sous
|
|
`/usr/share/licenses/swayfx-mosaic/`. Aucune installation ; licences
|
|
**LEGAL_NOT_APPROVED**. Le [contrôle final de build](evidence/step20c-native-closure/g3-build-validation.json)
|
|
est distinct d'une exécution du hook.
|
|
|
|
## Contrat B4 accepté et limite de sa couverture
|
|
|
|
La [revue sémantique B4](evidence/step20c-native-closure/gpu-b4-semantic.json)
|
|
accepte le vrai corps `g2_read` dans un périmètre offline : 29 cas FakeGL,
|
|
quatre mutants rejetés, 12 commandes de corpus source, plus 66 tests
|
|
d'admission/adapters. La revue n'a pas rejoué ces commandes une seconde fois :
|
|
elle a vérifié leur liaison aux sources effectivement compilées.
|
|
|
|
Le diagnostic préserve la divergence EGL/GL au lieu de l'effacer par une
|
|
supposition sur la version demandée à la création. Les queries de version et
|
|
capacités, leur fenêtre d'erreur propre et les queries supportées doivent
|
|
être qualifiées sur le contexte réel. L'ancien G2 observait
|
|
`EGL_CONTEXT_CLIENT_VERSION=2` face à `GL_VERSION=OpenGL ES 3.2` ; cette
|
|
divergence reste non résolue par G3. La préparation B4 acceptée ne constitue
|
|
pas une preuve universelle de conformité EGL.
|
|
|
|
Le plan garde les bits d'uniformes et la précision `mediump`, le DCC
|
|
modifier-aware et les modèles/résidus avant toute comparaison A/B/A. Un plan
|
|
auxiliaire DCC ne reçoit pas un stride d'image inventé `width*4`.
|
|
Les drains consomment la queue d'erreurs GL, qui n'est pas restaurable ; la
|
|
restauration des bindings ne restaure pas cette queue. Le readback synchrone
|
|
serait intrusif temporellement. Aucune tolérance, shader ou règle de fit n'est
|
|
changée sur la base du résultat non exercé.
|
|
|
|
La revue de préparation client était trop large : compilation, parsers,
|
|
armement et FakeGL n'exerçaient pas `draw()` avec le nouveau `TMPDIR`.
|
|
Cette lacune est reconnue dans la
|
|
[revue du résultat](evidence/step20c-native-closure/gpu-results-review.json),
|
|
sans invalider les observations offline effectivement couvertes ni convertir
|
|
une correction future en succès runtime rétroactif.
|
|
|
|
## Arrêt avant SHM et avant armement
|
|
|
|
Le client reçoit un configure XDG et envoie son ACK, puis sort à **2** avant
|
|
`create_pool`, `create_buffer`, `attach` et toute confirmation SHM. Dans les
|
|
octets c553 exécutés, `gpu/clients-g2.c:92`, fonction `draw`, compare
|
|
`TMPDIR` littéralement au scratch de l'ancien LAB
|
|
`/var/tmp/swayfx-mosaic-corec-v2-i516p6po/scratch`. La session fournit le scratch
|
|
du LAB neuf `/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/scratch`.
|
|
Cette branche source déterministe, l'environnement construit, le wire et
|
|
le code 2 attribuent l'arrêt à la fixture. Aucun errno ou message explicite
|
|
client n'a été journalisé ; aucun diagnostic de ce type n'est inventé.
|
|
Le runner attend une vue IPC qui ne se mappe jamais et atteint son attente
|
|
bornée. La réservation GPU-G3 reste consommée, sans retry ni remplacement
|
|
par GPU-CTRL.
|
|
|
|
| Niveau observé | Fait exact |
|
|
| --- | --- |
|
|
| Startup EGL | EGL 1.5 ; log de création de contexte OpenGL ES 2.0 |
|
|
| Startup GL | OpenGL ES 3.2 Mesa 26.2.4-arch1.1, vendor AMD |
|
|
| Renderer | AMD Radeon 780M, radeonsi/phoenix/ACO |
|
|
| Hook G3 | Zéro armement, zéro epoch, zéro raw ; acquisition vide |
|
|
| Budget output | 0/12 captures ; zéro hook et zéro mutation |
|
|
| `eglQueryContext` / major-minor du hook | NON OBSERVÉS |
|
|
| `READ_SUCCESS`, uniformes, DCC, erreurs/restauration du hook | NON OBSERVÉS |
|
|
| A/B/A, H1/H2, modèles/résidus nouveaux | NOT_EXERCISED |
|
|
|
|
Les logs startup ne sont pas une nouvelle mesure
|
|
`EGL_CONTEXT_CLIENT_VERSION=2` du hook. Zéro armement diagnostic ne signifie
|
|
pas absence d'appels GL ordinaires du renderer. Les valeurs de readback ou
|
|
de restauration absentes ne sont pas des zéros mesurés.
|
|
|
|
## Codes, conservation et revue
|
|
|
|
Le ledger mesure 7,623459039 s, outcome 7,614715491014067 s, enveloppe commande
|
|
8,184041837 s. Runner 1 ; compositeur PID 3510983 et pointeur PID 3511036
|
|
sortis à 0 ; référence PID 3511049 sortie à 2. IPC terminal 1 avec fin de
|
|
réponse/EOF, distinct du compositeur 0. Le cleanup scientifique est **false /
|
|
INCONCLUSIVE** : le client n'a ni `CLOSE_RECEIVED` ni `SHM_CLOSURE`.
|
|
Nettoyage mécanique PASS, processus récoltés, runtime privé supprimé, aucun
|
|
rescue ni watchdog. Le succès mécanique ne qualifie pas la fermeture client.
|
|
|
|
Les bruts restent sous le LAB neuf : `graphics-runs/GPU-G3/run/`, dont
|
|
`outcome.json`, `partial-failure.json`, `events.jsonl`, `g2-reference.log`,
|
|
`compositor.log`, identité et maps ; `execution/GPU-G3-command.json` conserve
|
|
l'enveloppe. La revue indépendante `reviews/gpu-results/receipt.json` porte
|
|
le SHA256 `78ce6fe03955d62d1b079b9a8e81161dcb5bfceef71bd2b71d13892bcf7e4d78`
|
|
et accepte l'interprétation **INCONCLUSIVE / objectif NOT_EXERCISED**.
|
|
Elle identifie le finding P2 `GPU-RUNTIME-FIXTURE-TMPDIR` et la limite de
|
|
l'admission antérieure. Le [résumé runtime](evidence/step20c-native-closure/runtime-summary.json)
|
|
et le [ledger](evidence/step20c-native-closure/ledger.json) préservent les codes.
|
|
|
|
## Suite limitée
|
|
|
|
La correction de portabilité et le diagnostic explicite FS-P sont un delta
|
|
**OFFLINE_ONLY** séparé, sans reconstruction de compositeur ni qualification
|
|
native. Le [reçu de réparation](evidence/step20c-native-closure/postcampaign-repair.json)
|
|
et la [validation indépendante](evidence/step20c-native-closure/postcampaign-offline-validation.json)
|
|
conservent 73 tests réussis : 66 existants, trois d'identité et quatre du vrai
|
|
helper C validation/template, sans dessin Wayland. Le reçu indépendant porte
|
|
le SHA256 `5905e2002041148d7a104e195132f56c8b4152952547be4ed0985da4eacc3852`.
|
|
|
|
Le [manifeste post-campagne final](evidence/step20c-native-closure/postcampaign-source-manifest-final.json)
|
|
de 50 fichiers mode0644 porte le SHA256
|
|
`1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080`,
|
|
digest `14e24501658f1c4c29e7d8c06db71ed07a77b8e80e283453420bbc5b3e2f03c8` ;
|
|
le [gel GPU final](evidence/step20c-native-closure/postcampaign-gpu-manifest-final.json)
|
|
porte le SHA256 `a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb`.
|
|
Les gels intermédiaires f13da722…/230f131a… restent archivés ; seul
|
|
`gpu/README.md` change ensuite pour donner la commande explicite SMX_LAB et
|
|
les quatre tests TMPDIR. La
|
|
[revue initiale du delta](evidence/step20c-native-closure/postcampaign-delta-initial-review.json)
|
|
conserve CORRECTION_REQUIRED. La
|
|
[revue documentaire finale du delta](evidence/step20c-native-closure/postcampaign-delta-review.json),
|
|
SHA256 `4d459c0963c6535a404bfaa68d11dff0cf738e2d21167c148c12315e954ffe86`,
|
|
accepte cette correction : code/tests identiques à ceux des 73 tests
|
|
indépendants, non réexécutés dans cette revue documentaire.
|
|
|
|
Le client corrigé compilé SHA256
|
|
`bfc7d47596d5f69b68cd7000e257c7819949081ee7c6d66635eb9accf9ad7f36`
|
|
n'a **jamais été exécuté** en campagne native. Ces gels finaux ne remplacent
|
|
ni le gel V2 ni le client c553 réellement exécutés ; ils ne requalifient
|
|
aucun run consommé. La [revue finale approfondie](evidence/step20c-native-closure/final-review.json)
|
|
du dossier est **PASS**, SHA256
|
|
`3b15b5093730d6c43897e0adad4a1b2987fbc1097694a03645e928023ba23814`,
|
|
zéro constat bloquant. Son unique remarque documentaire non bloquante
|
|
NB-ENUM-1 est corrigée ici : valeur `ACCEPTED`, portée OFFLINE_ONLY séparée ;
|
|
le reçu historique de revue reste inchangé. L'audit rejoue 69+4 tests réussis,
|
|
rejette six contre-exemples bruts et vérifie 86 hashes d'artefacts et les
|
|
316 hashes protégés. Les contrôles finaux après audit sont consignés dans le
|
|
[reçu de validation](evidence/step20c-native-closure/final-validation.json).
|
|
La publication effective est attestée séparément par
|
|
`LAB/final-publication.json` et le rapport final après vérification distante.
|
|
|
|
La [décision V4](STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) garde
|
|
**PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE**, GPU whole-field, buffer identity,
|
|
atomic generation, complete damage et GPU completion **NOT_PROVEN**.
|
|
G2 historique reste inchangé. Toute campagne future exige une instruction et
|
|
un budget distincts. STEP20C NEXT ; production multi-output
|
|
**NOT_YET_SUPPORTED**, `PRODUCTION_AUTHORIZED=FALSE`.
|