diff --git a/CHANGELOG.md b/CHANGELOG.md index 85174f2..4cfb4ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,21 @@ ### STEP20C experimental evidence +- Record the separate [CORE-C V2 follow-up V4](docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md): + five consumed runs/32 output captures, migration/refocus and root/nested OOM + SAMPLED_ONLY / PARTIALLY_FEASIBLE. FS-P and fullscreen comparison remain + NOT_EXERCISED, FS-C NOT_RUN; G3 INCONCLUSIVE after client exit2 before SHM, + with no diagnostic acquisition. Preserve scientific cleanup false for G3, + raw process/terminal IPC codes and the historical V2 results. +- Record c553 source publication before runs, distinct G3 build/stage identity, + scoped offline reviews and the separate OFFLINE_ONLY post-campaign fixture + repairs. No consumed run is retried or requalified. Result PARTIALLY_ADVANCED, + recommendation PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE, production OOM policy + UNDECIDED; STEP20C NEXT, production multi-output NOT_YET_SUPPORTED, + PRODUCTION_AUTHORIZED FALSE. Native buffer identity, atomic generation, + complete damage, GPU completion, legal approval and maintenance owners remain + open; no production, UX or package change. + - Record the [new CORE-C V2 integration decision](docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION.md): reconstructible source-only CORE/OOM/G2 kit, three private binary identities, 12 consumed runs and 102 output captures. C7/C8/O1/G2 stay INCONCLUSIVE, diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index b332618..01d5635 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1,15 +1,20 @@ # Architecture -The [new CORE-C V2 dossier](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) -records an experimental prepublication sidecar reservation, reviewed nullable -constructor rollback and sampled native clipping/input on its own binary SHA. -O1 observes zero initialized/published nodes and listeners plus bounded native -survival, but remains INCONCLUSIVE because its closure oracle rejects the -root-only lifecycle. Applied/input and damage evidence is partial; native -commit/present, exact presented-buffer identity, GPU completion and atomic -generation remain NOT_PROVEN. Compositor/tree authority and Row 0 borrowing -remain the accepted contracts. No public ABI, production OOM policy or -dependency is adopted; STEP20C NEXT, production NOT_YET_SUPPORTED. +The [CORE-C V2 follow-up decision V4](design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) +records PARTIALLY_ADVANCED private evidence: four migration/refocus states and +root/nested sidecar allocation failures are SAMPLED_ONLY / PARTIALLY_FEASIBLE. +The IPC snapshots remain pending candidates; pixels and delivered input +corroborate sampled states without exposing an atomic native generation. +OOM caller NULL, zero initialization/listeners/publication and live identity/ +IPC/neighbor input are observed before cleanup in the two targeted injections. +Availability production and OOM policy remain UNDECIDED. Fullscreen comparison +is NOT_EXERCISED; G3 stops on a client fixture before diagnostic acquisition. +Native buffer identity, atomic generation, complete damage and GPU completion +remain NOT_PROVEN. Compositor/tree authority and Row 0 borrowing remain the +accepted contracts; no public ABI, dependency or production mechanism is +adopted. STEP20C NEXT; production multi-output NOT_YET_SUPPORTED; +PRODUCTION_AUTHORIZED FALSE. The [parent V2 dossier](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) +and its consumed runs retain their historical verdicts. This is the canonical technical contract for SwayFX Mosaic. The current implementation is an experimental single-row compositor layout. [UX](UX.md) specifies user-visible behavior; [known limitations](KNOWN_LIMITATIONS.md) identifies unvalidated boundaries. diff --git a/docs/KNOWN_LIMITATIONS.md b/docs/KNOWN_LIMITATIONS.md index da47274..b80a8c7 100644 --- a/docs/KNOWN_LIMITATIONS.md +++ b/docs/KNOWN_LIMITATIONS.md @@ -1,15 +1,20 @@ # Known limitations -The [CORE-C V2 decision](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) -adds reproducible new sources and bounded private native evidence, without -recovering the historical deleted bytes. C7 migration uses an incomplete -camera oracle; C8 fails group comparability before captures; O1 survives the -injection but its root-only closure is rejected; G2 stops at first A on the -strict EGL/GLES capability guard, with no raw GPU readback. All four runs stay -INCONCLUSIVE; fullscreen comparison is NOT_EXERCISED, O2/R1 NOT_RUN. -Damage/lifetime/whole-field GPU gates, legal approval and release/security -ownership remain open. STEP20C NEXT; production multi-output -NOT_YET_SUPPORTED; PRODUCTION_AUTHORIZED FALSE. +The [CORE-C V2 follow-up decision V4](design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) +records five new consumed reservations and 32 output captures, separately from +the historical 12 runs/102 captures. Migration/refocus and root/nested OOM are +SAMPLED_ONLY / PARTIALLY_FEASIBLE. Fullscreen FS-P is NOT_EXERCISED before the +group/fullscreen stage; FS-C is NOT_RUN. The original FS-P errno was not saved; +a controlled dumpability probe supplies a plausible explanation, not proven +specific causality or a native fullscreen defect. G3 is INCONCLUSIVE after a +hardcoded historical TMPDIR makes its client exit2 before SHM; native diagnostic +admission/readback are NOT_EXERCISED. Its scientific cleanup is false despite +mechanical cleanup and compositor0. Post-campaign fixture repairs are OFFLINE_ONLY +and cannot qualify consumed runs. OOM availability is sampled, production +policy UNDECIDED; native buffer identity, atomic generation, complete damage, +GPU completion, legal approval and release/security/static-SceneFX ownership +remain open. Historical C7/C8/O1/G2 verdicts remain unchanged. STEP20C NEXT; +production multi-output NOT_YET_SUPPORTED; PRODUCTION_AUTHORIZED FALSE. This document describes the development tree at the documentation foundation pass. `EXPERIMENTAL` means implemented but incompletely validated; `PLANNED` means absent from runtime; `NOT YET SUPPORTED` means it must not be presented as ready for general use. diff --git a/docs/README.md b/docs/README.md index 1f37b1b..ca65f88 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,13 +1,18 @@ # Documentation -The [CORE-C V2 integration decision](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) -records the new Git-reconstructible experimental candidate, three private -binary identities and the reconciled 14-cell matrix (12 runs, 102 captures). -Disposition is PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE; OOM recommendation -C_FURTHER_NATIVE_REVIEW, production availability UNDECIDED. C7/C8/O1/G2 remain -INCONCLUSIVE, O2/R1 NOT_RUN. This later evidence does not rewrite the historical -blocked provenance ticket. STEP20C remains NEXT; production multi-output -NOT_YET_SUPPORTED; PRODUCTION_AUTHORIZED FALSE. +The [CORE-C V2 follow-up decision V4](design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) +records PARTIALLY_ADVANCED private evidence: five consumed runs, 32 output +captures, migration/refocus and root/nested OOM SAMPLED_ONLY / PARTIALLY_FEASIBLE. +[Fullscreen comparison](design/STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md) +is NOT_EXERCISED, FS-C NOT_RUN; [GLES/readback G3](design/STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md) +is INCONCLUSIVE after a fixture client exit2 before SHM, with native acquisition +NOT_EXERCISED. See the [migration report](design/STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md) +and [native OOM completion](design/STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md). +Disposition PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE; production OOM policy +UNDECIDED. Separate post-campaign fixture repairs are OFFLINE_ONLY; the +[parent V2 dossier](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md), 12 runs/102 +captures and historical verdicts remain unchanged. STEP20C NEXT; production +multi-output NOT_YET_SUPPORTED; PRODUCTION_AUTHORIZED FALSE. Documentation is a first-class project artifact. Architecture and UX contracts are updated before implementation when behavior changes. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index a767fc4..4ebf2e6 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,13 +1,20 @@ # Roadmap -The [CORE-C V2 handoff](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) -is PARTIALLY_ADVANCED, with a Git-reconstructible experimental kit and 12 -consumed runs / 102 captures. Disposition remains -PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE, recommendation C_FURTHER_NATIVE_REVIEW, -production availability UNDECIDED. The next smallest justified tranche is -prospective offline repair/review of the C7 migration, C8 group and O1 closure -fixtures plus targeted native C review; any later run requires separate -admission and budget. No consumed run may be retried under this ticket. +The [CORE-C V2 follow-up V4](design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) +is PARTIALLY_ADVANCED: five consumed runs/32 output captures, sampled migration/ +refocus and root/nested OOM progress, fullscreen comparison and native G3 +readback NOT_EXERCISED. Disposition remains +PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE; production OOM policy UNDECIDED. +The separate OFFLINE_ONLY fixture repair and its review are complete. The next +scientific evidence is an observable fullscreen client identity without +relaxing dumpability or the identity guard, before a new fullscreen campaign; +native readback acquisition also remains outstanding. Those campaigns require +a distinct instruction and budget; no retry, refund, optional-slot substitution +or reopening of either closed campaign is admitted. +The historical [V2 evidence](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md), +12 runs/102 captures and its failures remain unchanged. Buffer identity, +atomic generation, complete damage and GPU completion remain NOT_PROVEN; +legal approval and named maintenance owners remain open. STEP20A DONE; STEP20B EXPERIMENTAL; STEP20C NEXT; STEP20D–G PLANNED; PRODUCTION_MULTI_OUTPUT NOT_YET_SUPPORTED; PRODUCTION_AUTHORIZED FALSE. diff --git a/docs/design/STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md b/docs/design/STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md new file mode 100644 index 0000000..5e4efe1 --- /dev/null +++ b/docs/design/STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md @@ -0,0 +1,101 @@ +# STEP20C — gate comparative fullscreen CORE-C V2 + +2026-10-15. Preuve expérimentale du nouveau ticket +`SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1`. +Ce rapport complète la [décision historique V2](STEP20C_COREC_V2_INTEGRATION_DECISION.md) +sans réécrire P1/C8, leurs captures ni leurs budgets clos. +Les contrats canoniques gardent leur autorité. + +```text +FULLSCREEN_PRISTINE_NEW=NOT_EXERCISED +FULLSCREEN_COREC_V2_NEW=NOT_RUN +FULLSCREEN_COMPARABILITY=NOT_EXERCISED +``` + +## Périmètre et provenance + +Le [kit de suivi source-only](../../tooling/probes/step20c-corec-v2-followup/README.md) +dérive une fixture prospective, avec admission indépendante avant réservation. +La [revue de delta](evidence/step20c-native-closure/source-delta-review.json) +accepte les octets corrigés : 66 tests offline, zéro échec à cette version. +La première soumission avait trois findings corrigés ; cette acceptation ne +transforme pas la soumission initiale en succès. +Le [manifeste source V2](evidence/step20c-native-closure/source-manifest-v2.json) +a pour SHA256 `2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7` +et source digest `f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140`. + +La [publication source](evidence/step20c-native-closure/source-publication.json) +au commit `c55373eab3c53132bf1157acc9cfc9edd451156e` précède les quatre +nouveaux runs non GPU. La [reprise depuis clone](evidence/step20c-native-closure/clone-validation.json) +vérifie 49/49 fichiers et leurs modes, 66 tests et six clients compilés. +Ces preuves source/offline ne qualifient pas la comparabilité runtime. + +FS-P réutilise l'ELF pristine conservé, sans le reconstruire : +SHA256 `b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6`, +Build ID `ba9751c82e73d4043b7651354f20936d070c2227`, PID privé `3491656`. +Le LAB neuf est `/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39`. +Le LAB parent `/var/tmp/swayfx-mosaic-corec-v2-i516p6po` demeure clos, +en lecture seule : ses 12 runs et 102 captures restent historiques. + +## Arrêt observé et diagnostic borné + +`graphics-runs/FS-P/run/fullscreen-not-exercised.json` donne exactement +`reason="actual fullscreen client executable"`. Le guard s'arrête avant la +création du groupe non-feuille et l'activation fullscreen ; aucune capture +output n'est acquise. Une fenêtre toplevel démarrée ne constitue pas le groupe +fullscreen demandé. Aucun débordement fullscreen nouveau n'est mesuré. +FS-C n'a aucune réservation : sa dépendance à un FS-P qualifié n'est pas +satisfaite. La comparaison pristine/CORE-C V2 est donc **NOT_EXERCISED**. + +Le [probe contrôlé de dumpability](evidence/step20c-native-closure/fullscreen-dumpability-probe.json) +est hors campagne headless. Avec `dumpable=1`, `readlink(/proc//exe)` +et `Path.resolve(strict=False)` trouvent l'exécutable ; avec `dumpable=0`, +readlink retourne `errno=13` et resolve conserve le chemin `/proc//exe` +non résolu. C'est une explication cohérente et bornée du guard appliqué à un +client protégé par `PR_SET_DUMPABLE=0`. L'errno original FS-P n'a pas été +enregistré : **la causalité précise de cet arrêt reste NON_PROUVÉE**. +Ce probe ne démontre aucun défaut fullscreen natif du compositeur. +Il ne répare pas FS-P et n'autorise aucun retry. + +## Budget et fermeture + +| Élément | Observation conservée | +| --- | --- | +| Réservation FS-P | Une, consommée ; 0/12 captures output | +| Durée ledger | 6,097521916 s, de réservation à clôture | +| Durée outcome | 6,086245531041641 s, mesure interne du runner | +| Durée commande | 6,631161108 s, enveloppe `execution/FS-P-command.json` | +| Code commande runner | 1, avec statut scientifique NOT_EXERCISED | +| Cleanup scientifique / mécanique | PASS / PASS dans les reçus | +| Compositeur, clients, pointeur | Tous sortis à 0 ; aucun rescue ni watchdog | +| IPC terminal | `swaymsg` 1, fin de réponse/EOF ; distinct du compositeur 0 | +| Runtime privé | Supprimé après collecte | +| FS-C | NOT_RUN, non réservé, aucune capture | + +Ces trois durées ont des bornes différentes ; elles ne sont pas interchangeables. +Le [ledger](evidence/step20c-native-closure/ledger.json) et le +[résumé runtime](evidence/step20c-native-closure/runtime-summary.json) +conservent la consommation réelle. L'espace inutilisé ne rembourse aucun jeton. + +## Revue et limites + +La [revue indépendante non GPU](evidence/step20c-native-closure/nongpu-results-review.json) +accepte cette restitution bornée ; son reçu original +`reviews/nongpu-results/receipt.json`, sous le LAB neuf, porte le SHA256 +`a8a9ea6c9c1fab09687c1b43378d53d7add0eb421a9b2e626d60d59445578e86`. +Les bruts sont `graphics-runs/FS-P/run/{outcome.json,events.jsonl,owner.log,compositor.log}` +et `execution/FS-P-command.json`. Images, builds et logs lourds restent hors Git. + +P1 historique reste informatif sur son groupe pristine 400/400 ; C8 historique +reste INCONCLUSIVE. Aucun succès offline ne ferme cette comparaison runtime. +Identité des buffers natifs, génération atomique, damage complet et GPU +completion restent **NOT_PROVEN**. Les autres cellules non exercées restent +**NOT TESTED**. STEP20A DONE, STEP20B EXPERIMENTAL, STEP20C NEXT, +STEP20D–G PLANNED ; multi-output production **NOT_YET_SUPPORTED**, +`PRODUCTION_AUTHORIZED=FALSE`. + +La [migration/refocus](STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md) et la +[complétion OOM](STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md) sont indépendantes +de cet arrêt. La [décision V4](STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) +doit conserver cette gate ouverte ; toute nouvelle preuve fullscreen exige +une autorisation distincte, sans réutilisation du jeton FS-P. diff --git a/docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md b/docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md new file mode 100644 index 0000000..984d316 --- /dev/null +++ b/docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md @@ -0,0 +1,321 @@ +# SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1 + +2026-10-15. Décision expérimentale V4, subordonnée aux contrats canoniques. +Résultat global : **PARTIALLY_ADVANCED**. +Recommandation : **PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE**. +Politique OOM production et disponibilité générale : **UNDECIDED**. + +Le nouveau lot améliore migration/refocus et première/deuxième réservations +OOM dans des échantillons natifs revus. Le fullscreen comparatif reste non +exercé ; G3 s'arrête sur une fixture client avant acquisition. Il ne satisfait +donc pas la fermeture des gates d'intégration. Aucune readiness production +ne découle du progrès documentaire, offline, build ou échantillonné. + +```text +STEP20A=DONE +STEP20B=EXPERIMENTAL +STEP20C=NEXT +STEP20D–G=PLANNED +PRODUCTION_MULTI_OUTPUT=NOT_YET_SUPPORTED +PRODUCTION_AUTHORIZED=FALSE +SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1=PARTIALLY_ADVANCED +``` + +## 1. Deux tickets et deux provenances à conserver + +La [décision V2 historique](STEP20C_COREC_V2_INTEGRATION_DECISION.md) clôt +12 runs et 102 captures dans `/var/tmp/swayfx-mosaic-corec-v2-i516p6po`. +Ce LAB reste en lecture seule ; P1/C7/C8/O1/G2, leurs erreurs et budgets ne +sont pas réécrits. Aucun octet ancien disparu n'est recréé par récit. +Le nouveau LAB est `/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39` ; +artefacts lourds, captures, builds, sockets et logs restent hors Git. + +L'ouverture de ce ticket utilisait `main` propre à +`d46f854b3026e911659528fe94792aa13837a1d6`. Le nouveau +[kit de suivi source-only](../../tooling/probes/step20c-corec-v2-followup/README.md) +est publié à `c55373eab3c53132bf1157acc9cfc9edd451156e` avant les cinq runs. +La [publication source](evidence/step20c-native-closure/source-publication.json) +est une preuve distincte d'une publication finale de résultats. +`origin` reste Forgejo canonique, `github` miroir, `upstream` fetch-only. +État au contrôle documentaire prépublication du 2026-10-15 : la publication +source c553 est vérifiée ; la publication des résultats suit l'audit final. +Sa preuve sera extérieure au commit qu'elle décrit : +`LAB/final-publication.json` et rapport final après vérification directe des +refs distantes. Ce document n'anticipe ni son propre SHA ni des refs finales. + +Le [manifeste V2 exécuté](evidence/step20c-native-closure/source-manifest-v2.json) +porte le SHA256 `2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7`, +digest `f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140`. +La [reprise depuis clone](evidence/step20c-native-closure/clone-validation.json) +vérifie 49/49 fichiers et modes, 66 tests, six clients et reproduction source +G3. Les sources CORE/OOM/pristine ne sont pas reconstruites pour ces runs : +leurs ELF retenus sont requalifiés par identité. G3 est un nouvel ELF distinct. + +## 2. Corrections prospectives et revues avant runs + +Les fixtures dérivées apportent quatre corrections offline : groupe fullscreen +comparatif, calcul migration avec refocus natif, oracles root/nested adaptés +aux hiérarchies réellement créées et admission GLES/readback par capacités. +Les sources de production, UX, package et mécanismes CORE/OOM restent inchangés. +La revue initiale trouve trois findings ; la +[revue de delta](evidence/step20c-native-closure/source-delta-review.json) +accepte la version corrigée, 66 tests, sans effacer les refus initiaux. +Les validations C et mutations sont des preuves offline bornées ; elles ne +prouvent pas le moteur de scène natif complet. + +La [revue B4](evidence/step20c-native-closure/gpu-b4-semantic.json) couvre le +vrai `g2_read` : 29 cas FakeGL, quatre mutants, 12 commandes source et les +tests d'admission. Elle manque le premier `draw()` sous le nouveau TMPDIR. +FS-P manque également l'enregistrement de l'errno original de son guard. +Ces lacunes sont conservées, et motivent une réparation **OFFLINE_ONLY** +post-campagne ; elles ne changent pas les octets c553 réellement exécutés. + +## 3. Binaires, renderer et ABI exacts + +| Rôle | SHA256 ELF | Build ID | +| --- | --- | --- | +| Pristine | `b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6` | `ba9751c82e73d4043b7651354f20936d070c2227` | +| CORE-C V2 | `91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb` | `d5d304533f2c8db9d738365e9bd7f2c96779ef8d` | +| OOM V2 | `6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835` | `9bc3dc9055106b343c80a51ded111a382e98442d` | +| Diagnostic G3 | `9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658` | `afdde13d52f3a5fe07c096c1221fcf0c8ae223fc` | + +Les PID, `/proc/exe`, maps, SHA et Build IDs sont liés aux runs dans le +[résumé runtime](evidence/step20c-native-closure/runtime-summary.json). +Le renderer observé est GLES SceneFX sur AMD Radeon 780M/radeonsi ; son startup +ne prouve pas un readback diagnostic. Le fournisseur wlroots partagé exact +est `/usr/lib/libwlroots-0.20.so`, SHA256 +`7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837`. +Les pins restent Mosaic `cd550382b311efdbfe3ed892f4e1d281d852e754`, SwayFX +`fd71a6bdc061bd633b488ae7b83e8a6981d22f86`, SceneFX +`37ccd723bef49e6891156ffafce8f549f01446cc`, wlroots source +`d783533489e1f75d6886c2ab5c5960090ef268f8`. + +L'[audit ABI](evidence/step20c-native-closure/abi-baseline.json) et la +[revue build G3](evidence/step20c-native-closure/gpu-build-review.json) +qualifient uniquement la paire SceneFX statique/wlroots partagé exacte : +symboles privés, interpositions diagnostiques, structures et dépendances ELF. +Aucune ABI publique installée ni compatibilité avec une autre version n'est +adoptée. Le premier setup G3 échoue sur arguments fusionnés ; son FAIL reste +dans le ledger. Une continuation autorisée de la même paire corrige les flags, +puis build et stage passent : **une paire, un DESTDIR**, sans source CORE +modifiée. Le stage privé contient le binaire et quatre notices, cinq fichiers ; +aucune installation ni modification de PKGBUILD/patch production. +Licences **LEGAL_NOT_APPROVED**. + +## 4. Matrice des huit IDs et budget clos + +H1/H2 sont deux outputs headless privés, initialement `[-800,0,800,600]` et +`[0,0,800,600]`, scale 1, transform normal. DY-C change réellement la largeur +H1 puis migre le workspace. Les entrées ci-dessous utilisent les ELF du §3. + +| ID | ELF / PID compositeur | Input et objet réellement exercés | Résultat | Captures / cap nommé | Durée ledger | Cleanup scientifique | +| --- | --- | --- | --- | --- | ---: | --- | +| FS-P | Pristine / 3491656 | Guard client ; avant groupe/fullscreen | NOT_EXERCISED | 0/12 | 6,097521916 s | PASS | +| FS-C | CORE / aucun | Dépendance FS-P non satisfaite | NOT_RUN | 0/16, non réservé | — | NOT_RUN | +| DY-C | CORE / 3492726 | Deux grabs ; quatre mutations et quatre points B wire/local | PARTIALLY_FEASIBLE | 16/16 | 35,995476057 s | PASS | +| OM-ROOT | OOM / 3494614 | Panne A, un grab, input voisin | PARTIALLY_FEASIBLE | 8/10 | 17,761603037 s | PASS | +| OM-NESTED | OOM / 3497491 | Panne B, deux grabs, input A puis voisin | PARTIALLY_FEASIBLE | 8/10 | 20,408873591 s | PASS | +| GPU-G3 | G3 / 3510983 | Client avant SHM ; aucun armement | INCONCLUSIVE ; objectif NOT_EXERCISED | 0/12 | 7,623459039 s | false / INCONCLUSIVE | +| OM-EXTRA | Aucun | Pas de discriminant distinct revu ; NOT_ADMITTED | NOT_RUN | 0/12, non réservé | — | NOT_RUN | +| GPU-CTRL | Aucun | Pas d'attribution indépendante admise ; pas de substitut G3 | NOT_RUN | 0/12, non réservé | — | NOT_RUN | + +Le [ledger](evidence/step20c-native-closure/ledger.json) clôt **cinq réservations, +32 captures output**, sur plafonds huit runs/110 captures, 18 par run et +150 secondes par run. Les caps nommés totalisent 100. Aucun reset, refund, +retry ou transfert des jetons historiques ; aucun nouveau runtime autorisé. +Les actions brutes restent par ID dans le ledger : DY-C quatre mutations, +six clics/deux grabs ; OOM un hook par run ; G3 zéro hook, mutation et epoch. +Les runtimes et sockets sont privés avec IPC explicitement ciblé ; le LAB +lourd reste hors Git et conservé. Les écarts de workflow du §9 empêchent +d'affirmer une absence universelle d'écart de stockage. + +## 5. Fullscreen et migration : conclusion circonscrite + +Le [rapport fullscreen](STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md) +enregistre `actual fullscreen client executable` avant groupe et fullscreen, +zéro capture. Le probe contrôlé reproduit EACCES sur `/proc/exe` avec +dumpable=0, mais l'errno FS-P original reste **NOT_OBSERVED** ; causalité +précise **NON_PROUVÉE**, aucun défaut fullscreen natif établi. FS-C reste +non réservé. La preuve P1 historique ne remplace pas la comparaison nouvelle. + +Le [rapport migration/refocus](STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md) +recalcule 800→800→1120→1120, largeur cellule 640, ordre `[8,9,10]`, focus 10. +Les snapshots courants restent `IPC_PENDING_CANDIDATE`, génération native +APPLIED non observable. Quatre points B redérivés, pixels et livraison réelle +wire/local corroborent les étapes. H2 entière est exacte quand la référence +s'applique ; le workspace sur H2 n'est pas exigé vide. H2 finale exacte, +aucun résidu A/B sur H1/H2 ; C7 historique reste INCONCLUSIVE. + +## 6. OOM : absence de publication et disponibilité échantillonnée + +Le [rapport OOM](STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md) lie panne unique, +PID/nonce/rôle, `matched=1 failures=1`, retour caller NULL et +`initialized=listeners=published=0`. Root : successes0, enfants parent0, +A jamais MAP, B non créé, fermeture A→TOPLEVEL normale error0. +Nested : root A réussi/mappé avant panne B, successes1/enfants parent1, +xdg root correspondant au parent B ; B jamais MAP. A demeure peint et reçoit +le bouton droit réel `[-215,108]` avant le clic voisin ; fermeture +B→A→TOPLEVEL normale error0. Aucun disconnect `no_memory` observé. + +L'identité exacte, maps/wlroots, IPC tree/outputs et vraie livraison exclusive +au voisin sont archivés avant cleanup, sur le même PID. H2 entière pré/post/final +est exacte ; aucune couleur du rôle échoué sur H1/H2 et finales sans A/B. +Cette absence de fail-open est bornée aux injections observées. Disponibilité +générale, stale listeners universels et couverture OOM globale **NOT_PROVEN**. + +| Option OOM | Arbitrage restant | Preuve de ce lot | +| --- | --- | --- | +| A abort | Mort fail-closed, disponibilité sacrifiée | Aucun nouveau recovery qualifié | +| B bool + masque | Recovery, setters et masque à qualifier | Pas de nouvelle preuve native | +| C préallocation | NULL avant publication ; coût pour toute factory | Root/nested PARTIALLY_FEASIBLE, disponibilité SAMPLED_ONLY | + +Sidecar C : 64 octets par arbre, y compris inactif/non Mosaic, plus overhead +allocateur **NOT_MEASURED** ; lookup linéaire et coût global/performance +**NOT_MEASURED**. `OOM_PRODUCTION_POLICY=UNDECIDED`. Ce choix demande une +décision humaine ; aucun résultat n'adopte A, B ou C en production. + +## 7. GLES/readback : objectif non exercé, défaut de fixture établi + +Le [rapport G3](STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md) conserve startup +EGL1.5, log création ES2.0, GL3.2 Mesa26.2.4 AMD780M ; aucune query native du +hook, uniforme, DCC, READ_SUCCESS, erreur/restauration ou A/B/A nouveaux. +Le client SHA `4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4` +sort à 2 après configure/ACK avant SHM : `draw:92` exige le TMPDIR de l'ancien +LAB. Cette attribution combine source, environnement, wire et code brut ; +aucun errno/message client absent n'est inventé. Le runner atteint une attente +bornée. L'acquisition est vide, zéro capture/armement/epoch/raw. + +La divergence historique EGL_CONTEXT_CLIENT_VERSION2 / GL_VERSION3.2 n'est +pas résolue par des logs startup. Precision mediump, plans auxiliaires DCC, +queue d'erreurs consommée/non restaurable et intrusion du readback restent +des limites de méthode, sans nouvelle mesure native ni ajustement de shader. +L'acceptation B4 est offline ; la préparation client n'avait pas couvert ce +TMPDIR. G2 historique et son premier-A refusé restent inchangés. + +## 8. Input, générations, damage et cleanup : niveaux distincts + +| Niveau | Statut du lot | Portée | +| --- | --- | --- | +| Sources/offline corrigées et publiées avant runs | CLOSED, périmètre des reçus | Aucune équivalence avec qualification runtime | +| DY-C, OM-ROOT, OM-NESTED | SAMPLED_ONLY / PARTIALLY_FEASIBLE | Pixels stables, vrais événements input et OOM ciblé | +| Fullscreen comparatif et diagnostic G3 | NOT_EXERCISED | FS-C NOT_RUN ; G3 run INCONCLUSIVE | +| Buffer natif, génération atomique, damage complet, GPU completion | NOT_PROVEN | Aucune promotion par captures ou ordre des logs | +| Autres cellules non exécutées | NOT TESTED | Aucun succès extrapolé | + +Les corrélations nouvelles portent sur run/output/PID, serials, owner/workspace +IDs et nonce/xdg OOM. Aucun `commit_seq` ou identifiant natif de présentation +n'est instrumenté dans ces runs ; aucune identité de buffer soumis/présenté +ni génération universelle n'en découle. Saved buffers restent des preuves +historiques : aucun nouveau run saved dans ce lot. + +Les quatre runs non GPU ont cleanup scientifique/mécanique PASS, tous processus +0. G3 conserve runner1, client référence PID3511049=2 sans CLOSE_RECEIVED ni +SHM_CLOSURE, compositeur3510983=0 et pointeur3511036=0 ; scientifique false, +mécanique PASS. Les cinq IPC terminaux sont à 1/EOF, séparés des compositeurs +0. Aucun rescue ni watchdog ; processus récoltés et runtimes privés supprimés. +Ces codes ne sont ni masqués ni assimilés les uns aux autres. + +## 9. Réparations post-campagne, écarts et publication restante + +Un delta post-campagne vise seulement la portabilité du client GPU et le +diagnostic FS-P : validation d'un scratch fourni, canonique, UID propriétaire, +mode0700 sans symlink ; errno FS explicite et arrêt fail-closed si identité +non observable. Le guard d'identité n'est pas assoupli ; aucune identité +`/proc` inaccessible n'est inventée. Cette correction reste **OFFLINE_ONLY**, +sans rebuild compositeur, retry ni requalification d'un run consommé. +Le [manifeste post-campagne final](evidence/step20c-native-closure/postcampaign-source-manifest-final.json) +compte 50 fichiers mode0644, SHA256 +`1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080`, +digest `14e24501658f1c4c29e7d8c06db71ed07a77b8e80e283453420bbc5b3e2f03c8`. +Le [gel GPU final](evidence/step20c-native-closure/postcampaign-gpu-manifest-final.json) +porte le SHA256 `a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb`. +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), +SHA256 indépendant +`5905e2002041148d7a104e195132f56c8b4152952547be4ed0985da4eacc3852`, +enregistrent 73 tests réussis : 66 existants, trois d'identité et quatre du +vrai helper C validation/template, sans dessin Wayland. + +Les gels intermédiaires f13da722…/230f131a… restent immuables. Seul +`gpu/README.md` change ensuite pour expliciter SMX_LAB et la commande des +quatre tests TMPDIR. La +[revue initiale](evidence/step20c-native-closure/postcampaign-delta-initial-review.json) +reste CORRECTION_REQUIRED ; la +[revue documentaire finale du delta](evidence/step20c-native-closure/postcampaign-delta-review.json), +SHA256 `4d459c0963c6535a404bfaa68d11dff0cf738e2d21167c148c12315e954ffe86`, +est ACCEPTED, sur égalité des octets code/tests déjà validés, sans rejeu des +73 tests dans cette revue. Le nouveau client SHA256 +`bfc7d47596d5f69b68cd7000e257c7819949081ee7c6d66635eb9accf9ad7f36` +n'a jamais été exécuté en campagne native. Aucune preuve des runs c553 n'est +transférée à ce nouveau gel. + +Les [écarts de workflow](evidence/step20c-native-closure/workflow-deviations.json) +doivent conserver les faits suivants : deux pyc temporaires créés dans le kit +puis retirés ; fichier temporaire de lecture documentaire déplacé vers LAB ; +logs de premières tentatives G3 écrasés par index, avec note préservée ; +premier environnement Git sans SSH, puis refus de configuration d'identité +sans HOME avant commit, enfin lecture de la configuration utilisateur sans +modification. Aucun « zéro écart de stockage » ou succès initial fictif. + +Le [contrôle système de clôture](evidence/step20c-native-closure/system-audit.json) +vérifie 316 hashes protégés sans échec, 267 PID possédés absents et les cinq +runtimes `/tmp/smx-*` absents. La lecture seule du PID quotidien 2325, +`/usr/bin/sway`, startticks 2833, correspond à la baseline historique de clôture ; +ce n'est pas une nouvelle baseline pré-lancement ni une opération IPC. +Le LAB mesure alors 230680734 octets et le SSD dispose de 277259689984 octets +libres : mesures ponctuelles, susceptibles d'évoluer avec les reçus finaux. +Les 19612 entrées du manifeste historique initial et les reçus de clôture +restent vérifiés et inchangés. La +[requête coredump finale](evidence/step20c-native-closure/coredump-final.json) +depuis le bootstrap `2026-10-15 08:40:36 UTC` retourne 1, stderr +`No coredumps found`, dans le journal accessible à l'UID ; aucun nettoyage. +Le ledger reste SHA256 +`cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c` : +cinq runs, 32 captures, une paire G3 avec FAIL initial conservé/continuation +PASS et un stage de cinq fichiers. + +La [revue finale approfondie](evidence/step20c-native-closure/final-review.json) +est **PASS**, SHA256 +`3b15b5093730d6c43897e0adad4a1b2987fbc1097694a03645e928023ba23814`, +zéro constat bloquant, une remarque documentaire non bloquante NB-ENUM-1. +Cette remarque est corrigée dans le rapport GLES : marqueur `ACCEPTED`, +portée OFFLINE_ONLY séparée ; le reçu original reste inchangé. L'audit rejoue +69+4 tests réussis, rejette six contre-exemples bruts, vérifie 86 hashes +d'artefacts et les 316 hashes protégés. Une première assertion de son harnais +cherchait un mapping après fermeture ; elle est replacée avant +`CLOSE_RECEIVED`, avec l'erreur initiale conservée dans `raw-replay.json`. +Ce défaut d'oracle d'audit ne décrit pas un défaut de production. +Les contrôles finaux après audit sont consignés dans le +[reçu de validation finale](evidence/step20c-native-closure/final-validation.json). +La publication source pré-run vérifiée et la publication finale des résultats +restent distinctes. Cette dernière sera attestée par le reçu externe +`LAB/final-publication.json` et le rapport final, après push et vérification +directe des deux remotes, sans autoréférence au SHA de ce document. +Aucun changement production, installation, UX, PKGBUILD ou patch cumulatif +n'est autorisé par cette décision. + +## 10. Revues et prochaines décisions + +La [revue non GPU](evidence/step20c-native-closure/nongpu-results-review.json) +porte le SHA256 original +`a8a9ea6c9c1fab09687c1b43378d53d7add0eb421a9b2e626d60d59445578e86` ; +la [revue GPU](evidence/step20c-native-closure/gpu-results-review.json), +`78ce6fe03955d62d1b079b9a8e81161dcb5bfceef71bd2b71d13892bcf7e4d78`. +Elles acceptent les interprétations bornées des résultats, sans nouveau runtime. +Les contre-exemples pixels échoués et clamp hors bornes sont rejetés par les +validateurs ; aucune réussite du parser ne remplace les données natives absentes. + +Responsables release, sécurité et maintenance SceneFX statique : +**UNASSIGNED**. Une mise à jour future doit revoir pins et delta, ABI/ELF, +requalifier la paire par offline/headless ciblés, contrôler le manifeste DESTDIR +et permettre le retour vers SwayFX stock ; ces obligations ne désignent aucun +responsable et n'autorisent aucune installation. Revue humaine des licences +et politique OOM restent ouvertes. + +Le plus petit pas scientifique futur est d'établir une identité FS observable +sans relâcher dumpability ni le guard, avant toute nouvelle campagne +fullscreen ; une acquisition readback native demeure également nécessaire. +Ces campagnes exigent une instruction et un budget distincts, sans réouverture +des IDs clos. Les gates native buffer identity, atomic generation, complete +damage et GPU completion restent **NOT_PROVEN** ; la recommandation demeure +**PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE**. diff --git a/docs/design/STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md b/docs/design/STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md new file mode 100644 index 0000000..5ec76e8 --- /dev/null +++ b/docs/design/STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md @@ -0,0 +1,114 @@ +# STEP20C — migration et refocus CORE-C V2 + +2026-10-15. Rapport expérimental du ticket +`SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1`. +DY-C est **PARTIALLY_FEASIBLE**, avec niveau de preuve **SAMPLED_ONLY**. +Il apporte des mesures nouvelles après quatre mutations et ne réécrit pas le +C7 **INCONCLUSIVE** de la [décision historique V2](STEP20C_COREC_V2_INTEGRATION_DECISION.md). + +## Sources, binaire et oracle + +Le [kit source-only de suivi](../../tooling/probes/step20c-corec-v2-followup/README.md) +était publié au commit `c55373eab3c53132bf1157acc9cfc9edd451156e` avant +réservation. Le [manifeste source V2](evidence/step20c-native-closure/source-manifest-v2.json) +porte le SHA256 `2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7` +et le digest `f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140`. +La [revue de delta](evidence/step20c-native-closure/source-delta-review.json) +accepte la version corrigée et ses 66 tests ; les trois findings initiaux +restent conservés. La [publication](evidence/step20c-native-closure/source-publication.json) +et la [reprise depuis clone](evidence/step20c-native-closure/clone-validation.json) +documentent les 49/49 fichiers, modes, 66 tests et six clients compilés. + +DY-C réutilise le CORE-C V2 conservé, sans nouveau build CORE : SHA256 +`91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb`, +Build ID `d5d304533f2c8db9d738365e9bd7f2c96779ef8d`, PID privé `3492726`. +Les identités runtime, mappings et fournisseur wlroots sont archivés dans le +LAB neuf `/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39`. +Le fournisseur exact reste `/usr/lib/libwlroots-0.20.so`, SHA256 +`7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837`. + +L'oracle recalcule depuis chaque snapshot IPC courant les largeurs, les bornes +de scroll et le refocus natif. Il conserve la distinction explicite +`IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE` : l'IPC lu à cet +instant n'est pas une observation native de génération APPLIED. Les pixels +stabilisés et l'input livré corroborent séparément les états échantillonnés. +Sway garde arbre, focus, caméra, transactions, scène et IPC ; Row 0 emprunte +`workspace->tiling`. + +## Quatre mutations effectivement mesurées + +Le workspace conserve l'ID `6`, l'ordre `[8,9,10]` et le focus `10` ; chaque +cellule mesure 640 px, contenu total 1920 px, gap 0. La cellule focalisée +occupe les bornes logiques 1280..1920. Après migration, son refocus impose +1120 pour un viewport de 800 ; l'ancien attendu 800 de C7 omettait ce refocus. + +| État après mutation | Output / viewport logique `[x,y,w,h]` | Scroll recalculé et observé | Nouveau point B global | +| --- | --- | ---: | --- | +| Resize 800→960 | H1 `[-960,0,960,600]` | 800 | `[-273,168]` | +| Retour 960→800 | H1 `[-800,0,800,600]` | 800 | `[-113,168]` | +| Migration H1→H2 | H2 `[0,0,800,600]` | 1120 | `[366,168]` | +| Retour H2→H1 | H1 `[-800,0,800,600]` | 1120 | `[-434,168]` | + +Les quatre points B sont redérivés après invalidation des anciennes coordonnées. +Chaque point correspond au contenu peint sur l'output courant et reçoit une +vraie paire press/release, corroborée par le wire et les coordonnées locales +du pointeur. Les mêmes objets TOPLEVEL/A/B demeurent identifiés ; deux grabs +XDG réels sont comptés. Il ne s'agit pas d'une seule assertion synthétique +de l'oracle géométrique. + +Les captures vérifient l'exclusion des couleurs popup hors viewport. H2 entière +est exacte contre sa référence aux deux resize et au retour H1. Pendant que +le workspace owner est réellement sur H2, la comparaison avec une H2 vide +est **NOT_APPLICABLE** ; sa présence y est attendue. Après fermeture, H2 est +exacte et aucun résidu A/B n'est observé sur H1 ni H2. Ces captures stables +ne couvrent pas toutes les frames de transition. + +## Consommation, fermeture et revue + +DY-C consomme une réservation, 16/16 captures output, quatre mutations, +six clics et deux grabs. Le ledger mesure **35,995476057 s** ; outcome mesure +35,98416800098494 s. Le [ledger](evidence/step20c-native-closure/ledger.json) +et le [résumé runtime](evidence/step20c-native-closure/runtime-summary.json) +conservent les compteurs. La fermeture réelle suit B→A→TOPLEVEL, avec +`EXIT error=0`, SHM 3/3 pour l'owner ; les autres clients ferment aussi normalement. +Tous les processus, compositeur et pointeur inclus, sortent à 0, sans rescue +ni watchdog ; cleanup scientifique/mécanique PASS et runtime privé supprimé. +L'IPC terminal `swaymsg=1` avec fin de réponse/EOF est enregistré séparément +du code compositeur 0. + +La [revue indépendante non GPU](evidence/step20c-native-closure/nongpu-results-review.json) +recalcule les quatre caméras, les pixels et les livraisons wire ; elle accepte +la conclusion **SAMPLED_ONLY/PARTIALLY_FEASIBLE**. Le reçu original du LAB, +`reviews/nongpu-results/receipt.json`, a pour SHA256 +`a8a9ea6c9c1fab09687c1b43378d53d7add0eb421a9b2e626d60d59445578e86`. +La [validation offline](evidence/step20c-native-closure/offline-validation.json) +et cette revue conservent les négatifs : quatre mutations de clamp hors +bornes et deux mutations de pixels échoués sont rejetées. Ce rejeu des +validateurs n'est pas une nouvelle exécution headless. + +Les bruts sont `graphics-runs/DY-C/run/` : `dynamic-ownership.json`, snapshots +des quatre étapes, `events.jsonl`, `owner.log`, `compositor.log`, captures et +`dynamic-final-restoration.json`, plus `execution/DY-C-command.json`. +Les artefacts lourds restent hors Git. L'ancien LAB clos, ses 12 runs et +102 captures restent inchangés. + +## Portée de la conclusion + +```text +DYNAMIC_MIGRATION_APPLIED=PARTIALLY_FEASIBLE +DYNAMIC_INPUT_AFTER_MIGRATION=PARTIALLY_FEASIBLE +ATOMIC_GENERATION=NOT_PROVEN +COMPLETE_DAMAGE=NOT_PROVEN +NATIVE_BUFFER_IDENTITY=NOT_PROVEN +GPU_COMPLETION=NOT_PROVEN +``` + +Le marqueur APPLIED décrit la corroboration échantillonnée rendu/input ; aucune +génération native atomique n'est exposée par cette fixture. Les topologies ou +mutations hors de cette séquence restent **NOT TESTED**. STEP20A DONE, +STEP20B EXPERIMENTAL, STEP20C NEXT, STEP20D–G PLANNED ; multi-output production +**NOT_YET_SUPPORTED**, `PRODUCTION_AUTHORIZED=FALSE`. +La [gate fullscreen](STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md) reste +non exercée ; la [complétion OOM](STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md) +et la [décision V4](STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) gardent leurs +périmètres distincts. Aucune conclusion GPU globale n'est tirée ici. diff --git a/docs/design/STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md b/docs/design/STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md new file mode 100644 index 0000000..09e4182 --- /dev/null +++ b/docs/design/STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md @@ -0,0 +1,141 @@ +# STEP20C — complétion native OOM root et nested CORE-C V2 + +2026-10-15. Rapport expérimental du ticket +`SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1`. +OM-ROOT et OM-NESTED sont **PARTIALLY_FEASIBLE**, avec disponibilité +**SAMPLED_ONLY**. Ils complètent deux oracles hiérarchiques nouveaux ; le +O1 **INCONCLUSIVE** de la [décision historique V2](STEP20C_COREC_V2_INTEGRATION_DECISION.md) +et son cleanup scientifique rejeté restent inchangés. + +## Provenance et périmètre natif + +Le [kit de suivi source-only](../../tooling/probes/step20c-corec-v2-followup/README.md) +a été publié au commit `c55373eab3c53132bf1157acc9cfc9edd451156e` avant +les runs. Le [manifeste V2](evidence/step20c-native-closure/source-manifest-v2.json) +porte le SHA256 `2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7`, +digest `f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140`. +La [revue de delta](evidence/step20c-native-closure/source-delta-review.json) +accepte les octets corrigés et 66 tests ; trois findings de la soumission +initiale ont été corrigés, sans effacer cette première revue. +Les reçus de [publication](evidence/step20c-native-closure/source-publication.json) +et de [clone](evidence/step20c-native-closure/clone-validation.json) +conservent 49/49 fichiers/modes, 66 tests et six clients compilés. + +Les deux runs utilisent le **même ELF OOM natif V2 conservé**, sans rebuild : +SHA256 `6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835`, +Build ID `9bc3dc9055106b343c80a51ded111a382e98442d`. +L'injection est une panne sidecar ciblée par PID, nonce et rôle, pas un +épuisement global de mémoire. Le fournisseur partagé exact est +`/usr/lib/libwlroots-0.20.so`, SHA256 +`7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837`. +Le LAB neuf `/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39` conserve +les observations ; le LAB parent clos reste en lecture seule, 12 runs et +102 captures historiques inchangés. + +## Première et deuxième réservations effectivement ciblées + +| Mesure | OM-ROOT | OM-NESTED | +| --- | --- | --- | +| PID compositeur | 3494614 | 3497491 | +| Nonce unique | `0a825259ea7740c5a7704f149dfa0649` | `39b4767924344003ad80fb9b87da4e20` | +| Rôle échoué | `root_popup` A | `nested_popup` B | +| matched / failures | 1 / 1 | 1 / 1 | +| successes avant panne | 0 | 1, root A | +| initialized / listeners / published du chemin échoué | 0 / 0 / 0 | 0 / 0 / 0 | +| children du parent existant | 0 | 1 | +| Résultat caller lié au même xdg/parent/PID | NULL | NULL | +| Mapping client du rôle échoué | A jamais MAP ; B non créé | B jamais MAP ; A déjà MAP | +| Ordre effectif de destruction | A→TOPLEVEL | B→A→TOPLEVEL | +| Fermeture owner | Normale, `EXIT error=0`, SHM 1/1 | Normale, `EXIT error=0`, SHM 2/2 | +| `no_memory` disconnect | NOT_OBSERVED | NOT_OBSERVED | + +Le compteur `children=1` nested désigne les enfants du **parent existant** ; +il ne décrit pas un nœud échoué partiellement publié. Le root A réussit et +est mappé avant l'injection B ; le xdg du root natif correspond au +`xdg_parent` du B échoué. Les lignes natives de factory et de résultat caller +sont corrélées. Les compteurs n'autorisent pas à substituer un schéma IPC +popup inexistant à cette preuve source/native. + +Avant le clic extérieur du voisin, A reste peint et reçoit réellement une +paire bouton droit press/release au point global `[-215,108]` dans OM-NESTED, +corroborée par le wire et les coordonnées locales. L'oracle root ne réclame +pas un B qui n'a jamais été créé. L'oracle nested exige le root préalable et +la séquence B→A→TOPLEVEL. Les deux clients ferment normalement : aucun code +d'erreur protocolaire `no_memory` n'est inventé à partir du NULL natif. + +## Disponibilité archivée avant cleanup et pixels + +Chaque run sauvegarde **avant cleanup** l'identité du même PID : `/proc/exe`, +SHA ELF, Build ID, mappings et wlroots exact ; les réponses `get_tree` et +`get_outputs` passent par le socket privé explicite. Le certificat +`oom-availability-live.json` conserve aussi une vraie paire bouton du voisin, +avec exclusivité et fraîcheur de livraison wire. Cette archive post-injection +est plus précise que les maps de startup seules d'O1 ; elle ne prouve pas +une disponibilité générale sous toutes les pannes OOM. + +H1 est à `[-800,0,800,600]`, H2 à `[0,0,800,600]`, scale 1, transform normal. +Les huit captures de chaque run comprennent H2 référence entière et les +échantillons pré/post/final : H2 est exacte à chaque comparaison. Aucune +couleur du rôle échoué n'est observée sur H1/H2 ; les captures finales après +fermeture ne contiennent aucune couleur A/B. Ces égalités stables n'établissent +ni toutes les frames damage ni une identité native de buffer présenté. + +La [revue indépendante non GPU](evidence/step20c-native-closure/nongpu-results-review.json) +rejoue les validateurs sur les bruts, y compris les vrais événements wire et +les pixels RGB exacts. Deux contre-exemples de pixels échoués et quatre +mutations hors bornes sont rejetés ; la +[validation offline](evidence/step20c-native-closure/offline-validation.json) +en conserve le périmètre. Le reçu original de revue du LAB, +`reviews/nongpu-results/receipt.json`, porte le SHA256 +`a8a9ea6c9c1fab09687c1b43378d53d7add0eb421a9b2e626d60d59445578e86`. + +## Budget et terminaison + +| Run | Captures output / plafond nommé | Durée ledger | Durée outcome | +| --- | --- | ---: | ---: | +| OM-ROOT | 8/10 | 17,761603037 s | 17,750482999021187 s | +| OM-NESTED | 8/10 | 20,408873591 s | 20,39799604000291 s | + +Chacun consomme une seule réservation et un hook ciblé, sans retry. Le +[ledger](evidence/step20c-native-closure/ledger.json) et le +[résumé runtime](evidence/step20c-native-closure/runtime-summary.json) +séparent les codes : clients, pointeur et compositeur tous 0 ; cleanup +scientifique et mécanique PASS ; aucun rescue ni watchdog ; runtimes privés +supprimés après collecte. `swaymsg` terminal 1 avec fin de réponse/EOF demeure +distinct du compositeur 0. Les quatre runs non GPU totalisent 32 captures +et quatre réservations ; cette somme ne qualifie aucune campagne GPU. + +Les bruts sont sous `graphics-runs/{OM-ROOT,OM-NESTED}/run/` : mesures natives, +`oom-measurements.json`, certificats `oom-availability-*`, snapshots IPC, +`oom-rootA-post-input.json`, événements, logs et captures ; les enveloppes +commandes sont `execution/{OM-ROOT,OM-NESTED}-command.json`. Les artefacts +lourds restent dans le LAB hors Git. + +## Politique encore indécise et limites + +| Option | Propriété / coût à décider | État de preuve | +| --- | --- | --- | +| A abort | Fail-closed par arrêt du processus ; disponibilité sacrifiée | Option source historique, recovery non qualifié | +| B bool + masque | Recovery et masque fail-closed à qualifier ; callers/setters à traiter | Pas de nouvelle qualification native ici | +| C préallocation | Réservation avant init/publication, NULL en panne ; setter sans allocation | Root/nested ciblés PARTIALLY_FEASIBLE, disponibilité SAMPLED_ONLY | + +La réservation C coûte un sidecar de 64 octets par arbre de factory, y compris +inactif/non Mosaic, plus overhead allocateur **NOT_MEASURED** ; lookup linéaire, +coût global et performance **NOT_MEASURED**. Cette disponibilité ciblée ne +choisit pas la politique production. `OOM_PRODUCTION_POLICY=UNDECIDED`. +L'absence universelle de stale listeners, un état popup partiel via IPC sans +schéma natif, la génération atomique, le damage complet, l'identité des buffers +natifs et GPU completion restent **NOT_PROVEN**. Les autres pannes et matrices +non exécutées restent **NOT TESTED**. + +Les licences restent **LEGAL_NOT_APPROVED** ; responsables release, sécurité +et maintenance SceneFX statique **UNASSIGNED**. Aucun résultat de ces injections +ne décide une UX popup/offscreen. STEP20A DONE, STEP20B EXPERIMENTAL, +STEP20C NEXT, STEP20D–G PLANNED ; production multi-output +**NOT_YET_SUPPORTED**, `PRODUCTION_AUTHORIZED=FALSE`. + +La [gate fullscreen](STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md), la +[migration/refocus](STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md) et la +[décision V4](STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md) gardent les +conclusions séparées. Aucune readiness production ni conclusion GPU globale +n'est déduite de cette complétion native bornée. diff --git a/docs/design/STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md b/docs/design/STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md new file mode 100644 index 0000000..f7784ab --- /dev/null +++ b/docs/design/STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md @@ -0,0 +1,185 @@ +# 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`. diff --git a/docs/design/evidence/step20c-native-closure/abi-baseline.json b/docs/design/evidence/step20c-native-closure/abi-baseline.json new file mode 100644 index 0000000..bc04bdd --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/abi-baseline.json @@ -0,0 +1,454 @@ +{ + "scope": "exact retained binary pair only; no future ABI or legal approval", + "results": { + "core": { + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "commands": [ + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/core-needed.txt", + "sha256": "99d0fc6a70b68f32fb879989e395c9f8401408202c28e0b3ae0b9d23535aca93" + }, + { + "argv": [ + "readelf", + "-Ws", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/core-symbols.txt", + "sha256": "20617fb1b1c4bc249e6f7f62c5f7ba3dd31fb1433eb969dd01b15334531806ae" + }, + { + "argv": [ + "ldd", + "-r", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/core-relocations.txt", + "sha256": "22539eeb4e0f425eeba74ca72700d46a2fe8244d3bca18342f1bbadb5d42b725" + } + ], + "shared_wlroots_overlapping_exports": [ + "wlr_color_primaries_from_named", + "wlr_color_primaries_to_xyz", + "wlr_color_primaries_transform_absolute_colorimetric", + "wlr_color_transfer_function_get_default_luminance", + "wlr_color_transform_eval", + "wlr_color_transform_init", + "wlr_color_transform_init_linear_to_icc", + "wlr_color_transform_init_linear_to_inverse_eotf", + "wlr_color_transform_init_lut_3x1d", + "wlr_color_transform_init_matrix", + "wlr_color_transform_init_pipeline", + "wlr_color_transform_inverse_eotf_from_base", + "wlr_color_transform_ref", + "wlr_color_transform_unref", + "wlr_egl_create_image_from_dmabuf", + "wlr_egl_create_sync", + "wlr_egl_create_with_context", + "wlr_egl_create_with_drm_fd", + "wlr_egl_destroy", + "wlr_egl_destroy_image", + "wlr_egl_destroy_sync", + "wlr_egl_dup_drm_fd", + "wlr_egl_dup_fence_fd", + "wlr_egl_get_context", + "wlr_egl_get_display", + "wlr_egl_get_dmabuf_render_formats", + "wlr_egl_get_dmabuf_texture_formats", + "wlr_egl_make_current", + "wlr_egl_restore_context", + "wlr_egl_unset_current", + "wlr_egl_wait_sync", + "wlr_matrix_identity", + "wlr_matrix_multiply", + "wlr_matrix_project_box", + "wlr_matrix_scale", + "wlr_matrix_transform", + "wlr_matrix_translate", + "wlr_scene_buffer_create", + "wlr_scene_buffer_from_node", + "wlr_scene_buffer_send_frame_done", + "wlr_scene_buffer_set_buffer", + "wlr_scene_buffer_set_buffer_with_damage", + "wlr_scene_buffer_set_buffer_with_options", + "wlr_scene_buffer_set_color_encoding", + "wlr_scene_buffer_set_color_range", + "wlr_scene_buffer_set_dest_size", + "wlr_scene_buffer_set_filter_mode", + "wlr_scene_buffer_set_opacity", + "wlr_scene_buffer_set_opaque_region", + "wlr_scene_buffer_set_primaries", + "wlr_scene_buffer_set_source_box", + "wlr_scene_buffer_set_transfer_function", + "wlr_scene_buffer_set_transform", + "wlr_scene_create", + "wlr_scene_get_scene_output", + "wlr_scene_node_at", + "wlr_scene_node_coords", + "wlr_scene_node_destroy", + "wlr_scene_node_for_each_buffer", + "wlr_scene_node_lower_to_bottom", + "wlr_scene_node_place_above", + "wlr_scene_node_place_below", + "wlr_scene_node_raise_to_top", + "wlr_scene_node_reparent", + "wlr_scene_node_set_enabled", + "wlr_scene_node_set_position", + "wlr_scene_output_build_state", + "wlr_scene_output_commit", + "wlr_scene_output_create", + "wlr_scene_output_destroy", + "wlr_scene_output_for_each_buffer", + "wlr_scene_output_needs_frame", + "wlr_scene_output_send_frame_done", + "wlr_scene_output_set_position", + "wlr_scene_rect_create", + "wlr_scene_rect_from_node", + "wlr_scene_rect_set_color", + "wlr_scene_rect_set_size", + "wlr_scene_set_color_manager_v1", + "wlr_scene_set_gamma_control_manager_v1", + "wlr_scene_set_linux_dmabuf_v1", + "wlr_scene_timer_finish", + "wlr_scene_timer_get_duration_ns", + "wlr_scene_tree_create", + "wlr_scene_tree_from_node" + ], + "private_clip_set_get_exported": false, + "historical_stage_rechecked": { + "usr/bin/swayfx-mosaic": { + "sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "mode": "0o755" + }, + "usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE": { + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE": { + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/wlroots-LICENSE": { + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES": { + "sha256": "e8deaa846abebbde21beb3a6ba2924833f0f3233d358b2744cb677bfb048260f", + "mode": "0o644" + } + }, + "new_stage": false + }, + "oom": { + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "commands": [ + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/oom-needed.txt", + "sha256": "a843b228b5ab61a45a43c1bcd18156eda8c728d33748d0e6085b9159237506f2" + }, + { + "argv": [ + "readelf", + "-Ws", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/oom-symbols.txt", + "sha256": "7a7dd6a7f7f2aedfca2ccb3458802248892022d87f774144557fc095823a1297" + }, + { + "argv": [ + "ldd", + "-r", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/oom-relocations.txt", + "sha256": "5a70bb929b60953a64a313aebd4c55a429cd0ebf7333dc9f09db73cff4d76278" + } + ], + "shared_wlroots_overlapping_exports": [ + "wlr_color_primaries_from_named", + "wlr_color_primaries_to_xyz", + "wlr_color_primaries_transform_absolute_colorimetric", + "wlr_color_transfer_function_get_default_luminance", + "wlr_color_transform_eval", + "wlr_color_transform_init", + "wlr_color_transform_init_linear_to_icc", + "wlr_color_transform_init_linear_to_inverse_eotf", + "wlr_color_transform_init_lut_3x1d", + "wlr_color_transform_init_matrix", + "wlr_color_transform_init_pipeline", + "wlr_color_transform_inverse_eotf_from_base", + "wlr_color_transform_ref", + "wlr_color_transform_unref", + "wlr_egl_create_image_from_dmabuf", + "wlr_egl_create_sync", + "wlr_egl_create_with_context", + "wlr_egl_create_with_drm_fd", + "wlr_egl_destroy", + "wlr_egl_destroy_image", + "wlr_egl_destroy_sync", + "wlr_egl_dup_drm_fd", + "wlr_egl_dup_fence_fd", + "wlr_egl_get_context", + "wlr_egl_get_display", + "wlr_egl_get_dmabuf_render_formats", + "wlr_egl_get_dmabuf_texture_formats", + "wlr_egl_make_current", + "wlr_egl_restore_context", + "wlr_egl_unset_current", + "wlr_egl_wait_sync", + "wlr_matrix_identity", + "wlr_matrix_multiply", + "wlr_matrix_project_box", + "wlr_matrix_scale", + "wlr_matrix_transform", + "wlr_matrix_translate", + "wlr_scene_buffer_create", + "wlr_scene_buffer_from_node", + "wlr_scene_buffer_send_frame_done", + "wlr_scene_buffer_set_buffer", + "wlr_scene_buffer_set_buffer_with_damage", + "wlr_scene_buffer_set_buffer_with_options", + "wlr_scene_buffer_set_color_encoding", + "wlr_scene_buffer_set_color_range", + "wlr_scene_buffer_set_dest_size", + "wlr_scene_buffer_set_filter_mode", + "wlr_scene_buffer_set_opacity", + "wlr_scene_buffer_set_opaque_region", + "wlr_scene_buffer_set_primaries", + "wlr_scene_buffer_set_source_box", + "wlr_scene_buffer_set_transfer_function", + "wlr_scene_buffer_set_transform", + "wlr_scene_create", + "wlr_scene_get_scene_output", + "wlr_scene_node_at", + "wlr_scene_node_coords", + "wlr_scene_node_destroy", + "wlr_scene_node_for_each_buffer", + "wlr_scene_node_lower_to_bottom", + "wlr_scene_node_place_above", + "wlr_scene_node_place_below", + "wlr_scene_node_raise_to_top", + "wlr_scene_node_reparent", + "wlr_scene_node_set_enabled", + "wlr_scene_node_set_position", + "wlr_scene_output_build_state", + "wlr_scene_output_commit", + "wlr_scene_output_create", + "wlr_scene_output_destroy", + "wlr_scene_output_for_each_buffer", + "wlr_scene_output_needs_frame", + "wlr_scene_output_send_frame_done", + "wlr_scene_output_set_position", + "wlr_scene_rect_create", + "wlr_scene_rect_from_node", + "wlr_scene_rect_set_color", + "wlr_scene_rect_set_size", + "wlr_scene_set_color_manager_v1", + "wlr_scene_set_gamma_control_manager_v1", + "wlr_scene_set_linux_dmabuf_v1", + "wlr_scene_timer_finish", + "wlr_scene_timer_get_duration_ns", + "wlr_scene_tree_create", + "wlr_scene_tree_from_node" + ], + "private_clip_set_get_exported": false, + "historical_stage_rechecked": { + "usr/bin/swayfx-mosaic": { + "sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "mode": "0o755" + }, + "usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE": { + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE": { + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/wlroots-LICENSE": { + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES": { + "sha256": "2df3fb19dd2fadb92b3b81e4048566603f6971b0a388bf36e43450bc56c8c093", + "mode": "0o644" + } + }, + "new_stage": false + }, + "gpu": { + "binary_sha256": "b2ba890908e385b0a8884e786b279bfb2e582eed38c7fcd0587b418326eca5bc", + "commands": [ + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/gpu-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/gpu-needed.txt", + "sha256": "6786cc65b9e019e92e3897d6a6e98592620218c6a845ef37736642f4046489c9" + }, + { + "argv": [ + "readelf", + "-Ws", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/gpu-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/gpu-symbols.txt", + "sha256": "bd384ac7d5eb56de15907c2725b16553cadc1a4172548d4724187e02159d317c" + }, + { + "argv": [ + "ldd", + "-r", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/gpu-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "log": "evidence/abi/gpu-relocations.txt", + "sha256": "8ffb71517708309933d0296f24c161b6002f9afda69f0207c3c9dfd052ac79e5" + } + ], + "shared_wlroots_overlapping_exports": [ + "wlr_color_primaries_from_named", + "wlr_color_primaries_to_xyz", + "wlr_color_primaries_transform_absolute_colorimetric", + "wlr_color_transfer_function_get_default_luminance", + "wlr_color_transform_eval", + "wlr_color_transform_init", + "wlr_color_transform_init_linear_to_icc", + "wlr_color_transform_init_linear_to_inverse_eotf", + "wlr_color_transform_init_lut_3x1d", + "wlr_color_transform_init_matrix", + "wlr_color_transform_init_pipeline", + "wlr_color_transform_inverse_eotf_from_base", + "wlr_color_transform_ref", + "wlr_color_transform_unref", + "wlr_egl_create_image_from_dmabuf", + "wlr_egl_create_sync", + "wlr_egl_create_with_context", + "wlr_egl_create_with_drm_fd", + "wlr_egl_destroy", + "wlr_egl_destroy_image", + "wlr_egl_destroy_sync", + "wlr_egl_dup_drm_fd", + "wlr_egl_dup_fence_fd", + "wlr_egl_get_context", + "wlr_egl_get_display", + "wlr_egl_get_dmabuf_render_formats", + "wlr_egl_get_dmabuf_texture_formats", + "wlr_egl_make_current", + "wlr_egl_restore_context", + "wlr_egl_unset_current", + "wlr_egl_wait_sync", + "wlr_matrix_identity", + "wlr_matrix_multiply", + "wlr_matrix_project_box", + "wlr_matrix_scale", + "wlr_matrix_transform", + "wlr_matrix_translate", + "wlr_scene_buffer_create", + "wlr_scene_buffer_from_node", + "wlr_scene_buffer_send_frame_done", + "wlr_scene_buffer_set_buffer", + "wlr_scene_buffer_set_buffer_with_damage", + "wlr_scene_buffer_set_buffer_with_options", + "wlr_scene_buffer_set_color_encoding", + "wlr_scene_buffer_set_color_range", + "wlr_scene_buffer_set_dest_size", + "wlr_scene_buffer_set_filter_mode", + "wlr_scene_buffer_set_opacity", + "wlr_scene_buffer_set_opaque_region", + "wlr_scene_buffer_set_primaries", + "wlr_scene_buffer_set_source_box", + "wlr_scene_buffer_set_transfer_function", + "wlr_scene_buffer_set_transform", + "wlr_scene_create", + "wlr_scene_get_scene_output", + "wlr_scene_node_at", + "wlr_scene_node_coords", + "wlr_scene_node_destroy", + "wlr_scene_node_for_each_buffer", + "wlr_scene_node_lower_to_bottom", + "wlr_scene_node_place_above", + "wlr_scene_node_place_below", + "wlr_scene_node_raise_to_top", + "wlr_scene_node_reparent", + "wlr_scene_node_set_enabled", + "wlr_scene_node_set_position", + "wlr_scene_output_build_state", + "wlr_scene_output_commit", + "wlr_scene_output_create", + "wlr_scene_output_destroy", + "wlr_scene_output_for_each_buffer", + "wlr_scene_output_needs_frame", + "wlr_scene_output_send_frame_done", + "wlr_scene_output_set_position", + "wlr_scene_rect_create", + "wlr_scene_rect_from_node", + "wlr_scene_rect_set_color", + "wlr_scene_rect_set_size", + "wlr_scene_set_color_manager_v1", + "wlr_scene_set_gamma_control_manager_v1", + "wlr_scene_set_linux_dmabuf_v1", + "wlr_scene_timer_finish", + "wlr_scene_timer_get_duration_ns", + "wlr_scene_tree_create", + "wlr_scene_tree_from_node" + ], + "private_clip_set_get_exported": false, + "historical_stage_rechecked": { + "usr/bin/swayfx-mosaic": { + "sha256": "b2ba890908e385b0a8884e786b279bfb2e582eed38c7fcd0587b418326eca5bc", + "mode": "0o755" + }, + "usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE": { + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE": { + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/wlroots-LICENSE": { + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES": { + "sha256": "68859b1a1088a6b4e084b6ba611a1487e3d71130ef75544bc33a2c746727d45f", + "mode": "0o644" + } + }, + "new_stage": false + } + }, + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "legal": "LEGAL_NOT_APPROVED", + "release_owner": "UNASSIGNED", + "security_owner": "UNASSIGNED", + "sidecar_bytes": 64, + "tree_bytes": 128, + "allocator_overhead": "NOT_MEASURED", + "new_runtime_native_buffer_identity": "NOT_PROVEN", + "atomic_generation": "NOT_PROVEN", + "complete_damage": "NOT_PROVEN", + "gpu_completion": "NOT_PROVEN" +} diff --git a/docs/design/evidence/step20c-native-closure/clone-acceptance-review.json b/docs/design/evidence/step20c-native-closure/clone-acceptance-review.json new file mode 100644 index 0000000..4646f4c --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/clone-acceptance-review.json @@ -0,0 +1,15 @@ +{ + "schema": "independent-nongpu-clone-condition-closure-v1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED", + "admission_receipt_sha256": "dcbd9c8259153c33f33dbfb2c7761794defa92ab86a21a514f7aeb28ae94b3d7", + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "clone_condition": "CLOSED PASS: published49SHA/modes and6clients checked against actual clone artifacts,66test receipt/log verified", + "transposition": "ACCEPTED", + "runtime": "NOT_RUN", + "reservation": "NOT_RUN", + "dependencies": "unchanged: FS-C after qualified FS-P; OM-NESTED after safe OM-ROOT or separately accepted explicit override; no override currently", + "note": "Initial GPU client missing generated header is retained as failed command in clone receipt; corrected compile passes; it does not affect nonGPU admission and no nativeG3build accepted here" +} diff --git a/docs/design/evidence/step20c-native-closure/clone-validation.json b/docs/design/evidence/step20c-native-closure/clone-validation.json new file mode 100644 index 0000000..20a8063 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/clone-validation.json @@ -0,0 +1,423 @@ +{ + "clients": { + "fullscreen-client": { + "mode": "0o755", + "sha256": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a" + }, + "nested-client": { + "mode": "0o755", + "sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82" + }, + "pointer-daemon": { + "mode": "0o755", + "sha256": "3188215af9ee0e2c79e1a5efc1b023ee8be47d0cade28f7c1ebe56ff140ae7db" + }, + "saved-client": { + "mode": "0o755", + "sha256": "10d766c660b0ed35cd5e002d594fc776ebc4754c6b596cf61dd53facaa29d875" + }, + "static-reference": { + "mode": "0o755", + "sha256": "3eebddbc3989ce0d9d2987382c8232a9cc6444cdfb29a5ca3a09e37251f6443c" + }, + "vertical-client": { + "mode": "0o755", + "sha256": "49f4999aafc800192c50d5d1439ba5dd80c22a1e994dee591d9a780e018f0383" + } + }, + "clone_clean": true, + "commands": [ + { + "argv": [ + "cc", + "--version" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-00.log", + "log_sha256": "52fa390d1b33ef5e0b20f39de6624190ade494b52dd543bd8121f350ec88e0e5", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "--version" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-01.log", + "log_sha256": "7781d4bdaabd8c59b362476a40f44a32c136372c265defc11595f5f347797e1d", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--version" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-02.log", + "log_sha256": "7bb9bbd2e2162e7c4db854f8740421fd7f8e6a2113a09dc1ef4711aec644536a", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-03.log", + "log_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-04.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-05.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/wlr-virtual-pointer-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/virtual-pointer-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-06.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/wlr-virtual-pointer-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/virtual-pointer-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-07.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/fullscreen-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/fullscreen-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-08.log", + "log_sha256": "00ff2f84ac3a7591528700a862eb951b7d1f6c2ce89c0f61a5c5758180f6a904", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/nested-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/nested-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-09.log", + "log_sha256": "acf128becf44469df920dd8d820b110c9a0672085f62a0efd1019a51e41fad63", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/vertical-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/vertical-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-10.log", + "log_sha256": "6240d00c893497ecd72c7eae9153ded3d7493ac5ef72f4aa2c850b5798efb800", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/saved-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/saved-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-11.log", + "log_sha256": "f0e47bff26bcdf6726ada4dc0aa3b2a32ec7a7f35131cef0cfe02b0985e0b286", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/static-reference.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/static-reference", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-12.log", + "log_sha256": "cfc61da356155edf0c44b257f80f724324a465bbf20e54dfe92c055e9ef9ba6c", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/pointer-daemon.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/virtual-pointer-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/pointer-daemon", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-13.log", + "log_sha256": "b324274d7a22b156a98faf45514a8985f826cb52107f553b267b0d1a499a44aa", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-14.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-15.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-16.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-17.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-18.log", + "log_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "-Wno-unused-parameter", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-protocol.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/clients-g2", + "-lwayland-client", + "-lm" + ], + "failure": "fatal error: layer-shell-client.h: No such file or directory", + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-19.log", + "log_sha256": "2f339fe1a8f78a2670936ab271300f6e613a0537b3cf94067fff0a89c1face8b", + "rc": 1, + "resolution": "generated required header layer-shell-client.h, then compilation passed" + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/layer-shell-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/followup-00.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/followup-01.log", + "log_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "-Wno-unused-parameter", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-protocol.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/clients-g2", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/followup-02.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "/usr/bin/python", + "-B", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/reproduce.py", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--core", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/replay-core/scene", + "--destination", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/g3-scene" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/g3-reproduce.log", + "log_sha256": "af3d75d1ad42e47bf960fcf57bd58818af9f5cf80b097c948adbeb3f78722fa1", + "rc": 0 + } + ], + "compositor_or_wayland_client_execution": "NOT_RUN", + "g3_reproduction": { + "exact_tree_match_lab_g3_source": true, + "files": 87, + "source_receipt_sha256": "af3d75d1ad42e47bf960fcf57bd58818af9f5cf80b097c948adbeb3f78722fa1", + "status": "PASS" + }, + "gpu_client": { + "mode": "0o755", + "sha256": "b764164b936c4046b0d61b3614b12c9d9c77ee623eefc51b8f437168d6901f48" + }, + "graphics_tests": { + "argv": [ + "/usr/bin/python", + "-B", + "-m", + "unittest", + "discover", + "-s", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/offline", + "-p", + "test_followup.py", + "-v" + ], + "failures": 0, + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/graphics-clone-tests.log", + "log_sha256": "d7d70b9d2b53121d5b3deea5c90274a7820eb33b7794cb07a071d1a422875692", + "rc": 0, + "tests_run": 66 + }, + "origin_url": "ssh://git@git.labfytools.com:2223/fy59/swayfx-mosaic.git", + "parent_commit": "d46f854b3026e911659528fe94792aa13837a1d6", + "parent_kit_files": 116, + "parent_kit_match_retained_extraction": true, + "publication_receipt_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "publication_refs": { + "github": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "origin": "c55373eab3c53132bf1157acc9cfc9edd451156e" + }, + "review_receipt_sha256": "895dfc1870b70c49039c773cbc6012b742514f30da508a2997c352d9ea12f781", + "runtime": "NOT_RUN", + "schema": "followup-clone-gate-v1", + "source_bytes_modes_match": true, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_files": 49, + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "status": "PASS", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/coredump-final.json b/docs/design/evidence/step20c-native-closure/coredump-final.json new file mode 100644 index 0000000..d3692c1 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/coredump-final.json @@ -0,0 +1,13 @@ +{ + "argv": [ + "coredumpctl", + "--no-pager", + "--since", + "2026-10-15 08:40:36 UTC", + "list" + ], + "exit": 1, + "scope": "journal visible to invoking user, since immutable bootstrap mtime; no cleanup", + "stderr": "No coredumps found.\n", + "stdout": "" +} diff --git a/docs/design/evidence/step20c-native-closure/final-review.json b/docs/design/evidence/step20c-native-closure/final-review.json new file mode 100644 index 0000000..67858d5 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/final-review.json @@ -0,0 +1,69 @@ +{ + "schema": "native-closure-final-independent-review-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-final-closure-audit-independent", + "agent": "/root/final_closure_audit", + "independent": true, + "authors": [ + "codex-native-closure-implementation", + "codex-postcampaign-offline-repair" + ], + "decision": "PASS", + "status": "PASS", + "classifications": { + "BLOCKING": 0, + "NON_BLOCKING": 1, + "FUTURE_SCOPE": 1 + }, + "findings": [ + { + "id": "NB-ENUM-1", + "classification": "NON_BLOCKING", + "file": "docs/design/STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md", + "line": 10, + "finding": "ACCEPTED_OFFLINE_ONLY differs from ticket exact enum ACCEPTED|INCONCLUSIVE|BLOCKED; scientifically prudent, no changed qualification.", + "recommendation": "Use ACCEPTED plus separate OFFLINE_ONLY scope in final report; preserve historical receipts." + }, + { + "id": "FS-1", + "classification": "FUTURE_SCOPE", + "finding": "Known native fullscreen/G3, buffer identity, atomic generation, complete damage, GPU completion, OOM policy, legal and ownership gates remain open; no new campaign or redesign." + } + ], + "head": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "inventory": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/final/inventory.json", + "sha256": "93e0004838f09c4397740058e5d9875fd6895cc5e1d7fe9de88f3562fd593b3c", + "tracked_delta": 10, + "untracked": 40, + "total_paths": 50, + "total_bytes": 711160 + }, + "source_manifest_final_sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080", + "runtime_source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "ledger_sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c", + "source_unchanged_during_review": true, + "tests_run": 73, + "tests_failures": 0, + "tests_skipped": 0, + "tests_scope": "69 graphics offline and 4 extracted actual C17 path helpers; no native acquisition", + "offline_commands_sha256": "76216751785e7d8ee5633be00ae27296b232ed6e782850ec4af678829c1e2ba7", + "raw_replay_sha256": "91626d2973bb47e8e97f275b9f2103b31c39a129b9110ec8e872507c1211cb74", + "negative_mutations_rejected": 6, + "reviewed_raw_artifacts_rehashed": 86, + "protected_files_unchanged": 316, + "git_diff_check": "PASS", + "pending_closure_actions": [ + "create final validation and public final review receipts", + "resynchronize factual post-audit status", + "normal result commit and origin then github publication with direct ref checks", + "external final-publication.json outside Git" + ], + "native_runtime": "NOT_RUN", + "meson_build": "NOT_RUN", + "stage": "NOT_RUN", + "production_authorized": false, + "source_edits": false, + "commit_push": "NOT_RUN", + "notes_sha256": "0f731f2158d7a315e1fd1a4328df16fe301bd06908b17ffdd6d3ad421f61c278" +} diff --git a/docs/design/evidence/step20c-native-closure/final-validation.json b/docs/design/evidence/step20c-native-closure/final-validation.json new file mode 100644 index 0000000..64409fd --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/final-validation.json @@ -0,0 +1,201 @@ +{ + "commands": [ + { + "argv": [ + "git", + "status", + "--short", + "--branch" + ], + "result": "PASS; expected documentation/probe changes are visible.", + "returncode": 0 + }, + { + "argv": [ + "git", + "diff", + "--check" + ], + "result": "PASS.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "PASS; 52 paths, 16 Markdown/C/header/Python files scanned, zero trailing whitespace.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "PASS; 661 local links, 0 missing; 36 public evidence JSON files parse, ordinary regular files, mode 0644.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "PASS; final source and GPU hashes match; final audit and prior 73-test receipt match expected SHA.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "PASS; 316 protected hashes match; 52 changed/new paths are regular portable-mode files with no binary/generated suffix or NUL.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "PASS negative contract; rejected before reservation with source changed/added/removed/mode after freeze; ledger SHA identical before and after.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "PASS reused immutable prior evidence: 19,612/19,612 entries match old manifest; old LAB not modified.", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "Non-blocking diagnostic: three pre-existing trailing-whitespace lines in unchanged INSTALL-deb.md:93, tooling/probes/step20c-minimal-core-gate/graphics/cases.py:27, sway/desktop/output.c:324. None is in changed/new paths; git diff --check passes.", + "returncode": 1 + }, + { + "argv": [ + "python3", + "-B", + "" + ], + "result": "Non-blocking checker path mistake: looked under followup-work; actual frozen GPU manifest is at LAB root and then matched expected SHA.", + "returncode": 1 + } + ], + "files_created_by_this_validator": [ + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/final-normal-validation/receipt.json" + ], + "historical_lab": { + "closeout_sha256": "4411aa97a16996e70f97f91e67adb0484a1759509e153a008dcee0f640504b59", + "entries_verified_by_prior_receipt": 19612, + "expected_closeout_sha256": "4411aa97a16996e70f97f91e67adb0484a1759509e153a008dcee0f640504b59", + "expected_manifest_sha256": "f16c6bfa4bbd46474193401c64521d05240a52fc2d2bfe050875a6881407626a", + "manifest_sha256": "f16c6bfa4bbd46474193401c64521d05240a52fc2d2bfe050875a6881407626a", + "modified": false, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po", + "status": "PASS_REUSED_PRIOR_IMMUTABLE_VERIFICATION" + }, + "independent_review": { + "audit_source_manifest_sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080", + "blocking_findings": 0, + "decision": "PASS", + "future_scope_findings": 1, + "historical_test_failures": 0, + "non_blocking_findings": 1, + "path": "/home/fy59/Documents/Development/swayfx-mosaic/docs/design/evidence/step20c-native-closure/final-review.json", + "sha256": "3b15b5093730d6c43897e0adad4a1b2987fbc1097694a03645e928023ba23814", + "status": "PASS", + "tests_rerun_this_stage": 0, + "tests_run_historically": 73 + }, + "ledger": { + "capture_limit": 110, + "captures_used": 32, + "changed_by_negative_preflight": false, + "expected_sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c", + "operations": [ + "G3_BUILD_PAIR initial FAIL, same-pair continuation PASS", + "G3_DESTDIR PASS, exactly five staged files" + ], + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/native-closure-budget.json", + "runs_completed": 5, + "sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c" + }, + "offline_tests": { + "docs_only_source_delta_after_tests": [ + "gpu/README.md" + ], + "failures": 0, + "prior_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/receipt.json", + "prior_receipt_sha256": "5905e2002041148d7a104e195132f56c8b4152952547be4ed0985da4eacc3852", + "replayed_this_stage": false, + "source_digest_at_test": "96d02f7f90f46fcd4572850b826a894c02d0061f2014d1b2c257c43ed3577897", + "status": "PASS", + "tests_run_historically": 73 + }, + "protected_files": { + "baseline_path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/evidence/protected-before.json", + "baseline_receipt_sha256": "ad6696e7114a128cd5e7b5456c04f85b5ca9b3c22b5945d0ff387d9f50af324a", + "count": 316, + "matches": 316, + "mismatches": 0 + }, + "public_final_validation_marker": { + "note": "Placeholder remains pending for parent replacement with the actual validation receipt.", + "path": "/home/fy59/Documents/Development/swayfx-mosaic/docs/design/evidence/step20c-native-closure/final-validation.json", + "status": "VALIDATION_PENDING" + }, + "repository": { + "changed_tracked_paths": 10, + "commit_or_push": "NOT_RUN", + "generated_or_binary_changed_paths": 0, + "git_diff_check": "PASS", + "invalid_json_or_modes": 0, + "local_markdown_links_checked": 661, + "missing_local_links": 0, + "preexisting_ignored_build_and_cache_artifacts_preserved": true, + "public_json_count": 36, + "targeted_whitespace": "PASS", + "total_changed_or_new_paths": 52, + "untracked_paths": 42, + "validator_changed_repo_files": false + }, + "runtime_build_stage": { + "meson_build": false, + "production_authorized": false, + "runtime_or_IPC": false, + "stage": false, + "tests_rerun": false + }, + "schema": "step20c-native-closure-final-normal-validation-v1", + "scope": "Post-audit, read-only final validation; no test/build/runtime/stage replay.", + "source": { + "HEAD": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "all_bytes_and_modes_match": true, + "file_count": 50, + "gpu_freeze_path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/g3-source-freeze-v5-postcampaign-docfix.json", + "gpu_freeze_sha256": "a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb", + "manifest_path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v4-postcampaign-docfix.json", + "manifest_sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080", + "modes": { + "0644": 50 + }, + "source_digest": "14e24501658f1c4c29e7d8c06db71ed07a77b8e80e283453420bbc5b3e2f03c8", + "tested_C_and_Python_sources_unchanged": true, + "v3_to_v4_delta": [ + "gpu/README.md" + ] + }, + "status": "PASS", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/fullscreen-dumpability-probe.json b/docs/design/evidence/step20c-native-closure/fullscreen-dumpability-probe.json new file mode 100644 index 0000000..f053e0b --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/fullscreen-dumpability-probe.json @@ -0,0 +1,21 @@ +{ + "child_exit": 0, + "fixture_guard": "engine.launch_client reads /proc/exe from a PR_SET_DUMPABLE0 client; Path.resolve returns unresolved proc path on EACCES", + "not_a_headless_run": true, + "observations": [ + { + "Path.resolve_strict_false": "/usr/bin/python3.14", + "child_dumpable": 1, + "readlink": "/usr/bin/python3.14" + }, + { + "Path.resolve_strict_false": "/proc/3498194/exe", + "child_dumpable": 0, + "errno": 13, + "error": "Permission denied" + } + ], + "scope": "controlled permission reproduction; original FS-P guard did not save readlink errno", + "source_unchanged": true, + "status": "PASS_BOUNDED_OFFLINE" +} diff --git a/docs/design/evidence/step20c-native-closure/g3-build-initial.json b/docs/design/evidence/step20c-native-closure/g3-build-initial.json new file mode 100644 index 0000000..d6ada08 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/g3-build-initial.json @@ -0,0 +1,128 @@ +{ + "binary_elf_audit": "NOT_RUN", + "build_pair_operation": "FAIL", + "clone_head": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "clone_tests": { + "failures": 0, + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/graphics-clone-tests.log", + "status": "PASS", + "tests_run": 66 + }, + "destdir_operation": "NOT_RESERVED", + "g3_destdir_reservation": "NOT_RUN", + "g3_stage": "NOT_RUN", + "legal_status": "LEGAL_NOT_APPROVED", + "license_notice_stage": "NOT_RUN", + "mosaic_setup_compile_test": "NOT_RUN", + "notes": "Arr\u00eat apr\u00e8s l\u2019unique \u00e9chec de meson setup SceneFX. Aucun retry, changement de flags, compile ou stage.", + "repo_source_mutations": false, + "runs_after_finalization": [ + { + "id": "FS-P", + "status": "COMPLETED" + }, + { + "id": "DY-C", + "status": "COMPLETED" + }, + { + "id": "OM-ROOT", + "status": "RESERVED" + } + ], + "runs_before_finalization": [ + { + "id": "FS-P", + "status": "COMPLETED" + }, + { + "id": "DY-C", + "status": "COMPLETED" + }, + { + "id": "OM-ROOT", + "status": "RESERVED" + } + ], + "scene_compile": "NOT_RUN", + "scene_setup": { + "argv": [ + "meson", + "setup", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/g3-source", + "--prefix=/usr", + "--wrap-mode=nodownload", + "-Ddefault_library=static", + "-Dexamples=false", + "-Dc_args=-D_XOPEN_SOURCE=700,-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"" + ], + "error": "g3-source/render/fx_renderer/meson.build:23:22: ERROR: Could not get define 'EGL_EGLEXT_VERSION'", + "meson_log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene/meson-logs/meson-log.txt", + "meson_log_sha256": "c65ea6823f9fca4558cc6a45c5ee989515d445524cdefd48590f6427df6204d3", + "returncode": 1, + "status": "FAIL", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3/scene-setup.stdout", + "stdout_sha256": "8504d3be38ff4de6e82bf9e8826e2e8520d4875150f3e4148bcc7e4896e3ecb4" + }, + "source_changed": false, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_file_count": 49, + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "status": "FAIL", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/g3-build-repair.json b/docs/design/evidence/step20c-native-closure/g3-build-repair.json new file mode 100644 index 0000000..78c76e5 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/g3-build-repair.json @@ -0,0 +1,266 @@ +{ + "actual_compile_macro_commands": 23, + "commands": [ + { + "argv": [ + "cc", + "--version" + ], + "name": "compiler-version", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/compiler-version.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/compiler-version.stdout" + }, + { + "argv": [ + "cc", + "-D_XOPEN_SOURCE=700", + "-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"", + "-E", + "-P", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/macro-check.c" + ], + "name": "macro-preprocess", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/macro-preprocess.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/macro-preprocess.stdout" + }, + { + "argv": [ + "cc", + "-D_XOPEN_SOURCE=700", + "-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"", + "-fsyntax-only", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/macro-check.c" + ], + "name": "macro-syntax", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/macro-syntax.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/macro-syntax.stdout" + }, + { + "argv": [ + "meson", + "setup", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/g3-source", + "--prefix=/usr", + "--wrap-mode=nodownload", + "-Ddefault_library=static", + "-Dexamples=false", + "-Dc_args=['-D_XOPEN_SOURCE=700', '-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"']" + ], + "name": "scene-setup", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/scene-setup.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/scene-setup.stdout" + }, + { + "argv": [ + "meson", + "compile", + "-C", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene", + "-j", + "8" + ], + "name": "scene-compile", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/scene-compile.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/scene-compile.stdout" + }, + { + "argv": [ + "meson", + "setup", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/replay-core/mosaic", + "--prefix=/usr", + "--bindir=bin", + "--wrap-mode=nodownload", + "-Dmosaic-package=true", + "-Dsd-bus-provider=libsystemd", + "-Dswaybar=false", + "-Dswaynag=false", + "-Dman-pages=disabled", + "-Ddefault-wallpaper=false", + "-Dc_args=-Wno-error=switch" + ], + "name": "mosaic-setup", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-setup.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-setup.stdout" + }, + { + "argv": [ + "meson", + "compile", + "-C", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic", + "-j", + "8" + ], + "name": "mosaic-compile", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-compile.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-compile.stdout" + }, + { + "argv": [ + "meson", + "test", + "-C", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic", + "--print-errorlogs", + "mosaic-model" + ], + "name": "mosaic-model", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-model.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-model.stdout" + }, + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "name": "elf-dynamic", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-dynamic.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-dynamic.stdout" + }, + { + "argv": [ + "ldd", + "-r", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "name": "elf-ldd", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-ldd.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-ldd.stdout" + }, + { + "argv": [ + "nm", + "-a", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "name": "elf-symbols", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-symbols.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-symbols.stdout" + }, + { + "argv": [ + "ninja", + "-C", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic", + "-t", + "commands" + ], + "name": "mosaic-ninja-commands", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-ninja-commands.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-ninja-commands.stdout" + }, + { + "argv": [ + "readelf", + "-n", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "name": "elf-buildid", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-buildid.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/elf-buildid.stdout" + }, + { + "argv": [ + "meson", + "install", + "-C", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic", + "--no-rebuild" + ], + "name": "mosaic-stage", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-stage.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-stage.stdout" + } + ], + "identity": { + "archive": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene/libscenefx-0.5.a", + "archive_sha256": "e8995f125c3eba6669aa3a8a44be1e075f6807e91055243e67731118303faec5", + "binary": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "build_id": "afdde13d52f3a5fe07c096c1221fcf0c8ae223fc", + "dynamic_scenefx": false, + "rpath": false, + "runpath": false, + "source_mosaic_sha256": "70fb049bc28522783c9b6a76dc3d66e944a25dc5e6f5fa7f52d56665917b4125", + "source_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da", + "unresolved": false, + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "legal_status": "LEGAL_NOT_APPROVED", + "license_sources": { + "SceneFX-LICENSE": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/g3-source/LICENSE", + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b" + }, + "SwayFX-LICENSE": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/replay-core/mosaic/LICENSE", + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b" + }, + "wlroots-LICENSE": { + "path": "/usr/share/licenses/wlroots0.20/LICENSE", + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df" + } + }, + "macro_proof": { + "flags": [ + "-D_XOPEN_SOURCE=700", + "-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"" + ], + "root": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition", + "status": "PASS", + "xopen": 700 + }, + "original_receipt_sha256": "cba4f3380e88c9d2facfb468d26d1d8831b875fe2dea7722a36b118ca877d4ae", + "runtime": "NOT_RUN", + "source_changed": false, + "sources_after": { + "mosaic": "70fb049bc28522783c9b6a76dc3d66e944a25dc5e6f5fa7f52d56665917b4125", + "scene": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da" + }, + "sources_before": { + "mosaic": "70fb049bc28522783c9b6a76dc3d66e944a25dc5e6f5fa7f52d56665917b4125", + "scene": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da" + }, + "stage_manifest": { + "usr/bin/swayfx-mosaic": { + "mode": "0o755", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658" + }, + "usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES": { + "mode": "0o644", + "sha256": "a46f71dccc10aec01844fc59974e3094b2951365b191b8b3819ed93effcc3919" + }, + "usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE": { + "mode": "0o644", + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b" + }, + "usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE": { + "mode": "0o644", + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b" + }, + "usr/share/licenses/swayfx-mosaic/wlroots-LICENSE": { + "mode": "0o644", + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df" + } + }, + "status": "PASS" +} diff --git a/docs/design/evidence/step20c-native-closure/g3-build-validation.json b/docs/design/evidence/step20c-native-closure/g3-build-validation.json new file mode 100644 index 0000000..ac18d64 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/g3-build-validation.json @@ -0,0 +1,207 @@ +{ + "all_frozen_modes_0644": true, + "audits": [ + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/readelf-dynamic.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/readelf-dynamic.stdout", + "stdout_sha256": "0580e1345ccc1b4764d62a55f00e6168baa91338868dedab8dedfb3fa1f1112c" + }, + { + "argv": [ + "ldd", + "-r", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/ldd-relocations.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/ldd-relocations.stdout", + "stdout_sha256": "fffc12cad740a17834277e81ef04ab07c6fc779553fc942cd46b6a0fd70629a2" + }, + { + "argv": [ + "nm", + "-a", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/nm-symbols.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/nm-symbols.stdout", + "stdout_sha256": "be8bb80e683637762d31d82d2cb75570759db533d758055ae8c7fa471772fd26" + }, + { + "argv": [ + "readelf", + "-n", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/readelf-buildid.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-g3-final/readelf-buildid.stdout", + "stdout_sha256": "51b4e850e7e14cfdca8bea0a2a4da375c031ed270924e0351a77e8ea13e417fa" + } + ], + "binary": { + "build_id": "afdde13d52f3a5fe07c096c1221fcf0c8ae223fc", + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "runtime": "NOT_RUN", + "scene_archive_sha256": "e8995f125c3eba6669aa3a8a44be1e075f6807e91055243e67731118303faec5", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "elf_properties": { + "dynamic_scenefx": false, + "required_symbols": [ + "wlr_scene_tree_set_clip", + "g2_read", + "wlr_scene_xdg_surface_create" + ], + "rpath": false, + "runpath": false, + "unresolved": false + }, + "ledger": { + "capture_actions_total": 32, + "capture_limit": 110, + "mutated": false, + "operations": [ + { + "continuations": [ + { + "authorization": "parent explicit same reserved pair continuation; original FAIL retained", + "finished_monotonic_ns": 327835502157972, + "id": "same-pair-argument-repair", + "receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/receipt.json", + "reserved_monotonic_ns": 327815215522156, + "state": "PASS" + } + ], + "failure": "SceneFX Meson setup rc=1: Could not get define EGL_EGLEXT_VERSION", + "finished_monotonic_ns": 327600914563309, + "id": "G3_BUILD_PAIR", + "mosaic_builds": 1, + "reserved_monotonic_ns": 327510465794426, + "scene_builds": 1, + "setup_retried": false, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "state": "FAIL" + }, + { + "destination": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/stage-g3", + "finished_monotonic_ns": 327835502199749, + "id": "G3_DESTDIR", + "reserved_monotonic_ns": 327834532865939, + "state": "PASS" + } + ], + "runs": [ + { + "capture_actions": 0, + "capture_limit": 12, + "id": "FS-P", + "status": "COMPLETED" + }, + { + "capture_actions": 16, + "capture_limit": 16, + "id": "DY-C", + "status": "COMPLETED" + }, + { + "capture_actions": 8, + "capture_limit": 10, + "id": "OM-ROOT", + "status": "COMPLETED" + }, + { + "capture_actions": 8, + "capture_limit": 10, + "id": "OM-NESTED", + "status": "COMPLETED" + } + ] + }, + "legal_status": "LEGAL_NOT_APPROVED", + "macro_flags": { + "compile_commands_checked": 23, + "flags": [ + "-D_XOPEN_SOURCE=700", + "-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"" + ], + "root": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition", + "standalone_preprocess_syntax": "PASS", + "xopen_source": 700 + }, + "mosaic_model_test": { + "command": { + "argv": [ + "meson", + "test", + "-C", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic", + "--print-errorlogs", + "mosaic-model" + ], + "name": "mosaic-model", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-model.stderr", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/mosaic-model.stdout" + }, + "rerun": "NOT_RUN", + "status": "PASS" + }, + "repair_receipt_sha256": "61455c537183a7c70b8a64949dbb67050f8aa076f1ebed62e514f0e961e93e24", + "repo_source_changed": false, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_file_count": 49, + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_tree_digests": { + "mosaic": "70fb049bc28522783c9b6a76dc3d66e944a25dc5e6f5fa7f52d56665917b4125", + "scene": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da" + }, + "stage": { + "file_count": 5, + "files": { + "usr/bin/swayfx-mosaic": { + "mode": "0o755", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "size": 6790360 + }, + "usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES": { + "mode": "0o644", + "sha256": "a46f71dccc10aec01844fc59974e3094b2951365b191b8b3819ed93effcc3919", + "size": 325 + }, + "usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE": { + "mode": "0o644", + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b", + "size": 1096 + }, + "usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE": { + "mode": "0o644", + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b", + "size": 1061 + }, + "usr/share/licenses/swayfx-mosaic/wlroots-LICENSE": { + "mode": "0o644", + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df", + "size": 1140 + } + }, + "matches_repair_manifest": true, + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/stage-g3" + }, + "status": "PASS", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/gpu-b4-semantic.json b/docs/design/evidence/step20c-native-closure/gpu-b4-semantic.json new file mode 100644 index 0000000..751c69c --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/gpu-b4-semantic.json @@ -0,0 +1,20 @@ +{ + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "status": "PASS", + "tests_run": 66, + "failures": 0, + "scope": "Adapter/admission66 tests already executed under final source; exact native source supports retained independent29FakeGL/4mutants plus12command source offline suite", + "execution_this_review": "NOT_RERUN; SHA equality and actual compiled source verified", + "adapter_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/followup-offline-receipt.json", + "adapter_receipt_sha256": "f026a1fa3fe6f2a8471de4ee9693a70a807b3ed79cd52dd26f5651ed52f582b6", + "native_fakegl_cases": 29, + "native_mutants_rejected": 4, + "native_offline_commands": 12, + "initial_independent_receipt_sha256": "58ee0ef4535c0e5e47cc68cb2bc35e20b73563e47438b3dee718d24194c535cc", + "gpu_runtime": "NOT_RUN" +} diff --git a/docs/design/evidence/step20c-native-closure/gpu-build-review.json b/docs/design/evidence/step20c-native-closure/gpu-build-review.json new file mode 100644 index 0000000..676b1ce --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/gpu-build-review.json @@ -0,0 +1,142 @@ +{ + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "schema": "independent-g3-build-admission-review-v1", + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "findings": [], + "gpu_identity": { + "binary": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "build_id": "afdde13d52f3a5fe07c096c1221fcf0c8ae223fc", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "scene_archive": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene/libscenefx-0.5.a", + "scene_archive_sha256": "e8995f125c3eba6669aa3a8a44be1e075f6807e91055243e67731118303faec5", + "reviewed_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da", + "scope": "new distinct G3 intrusive diagnostic only; native GL and GPU runtime NOT_RUN" + }, + "runs": { + "GPU-G3": { + "decision": "ACCEPTED", + "client_build_review": "ACCEPTED", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "gpu_source_review": "ACCEPTED", + "gl_observability_preflight": "ACCEPTED", + "build_review": "ACCEPTED", + "native_gl_status": "NOT_RUN", + "gpu_source_manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/g3-source-freeze-v3.json", + "gpu_source_manifest_sha256": "03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2", + "gpu_client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-client-build-normalized.json", + "gpu_client_build_receipt_sha256": "d1f5e51b463963b8c0804aaaa7a3216f8f4e439350ac8fee7ab405e0c9a3ad5b", + "reviewed_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da", + "binding": { + "binary": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "client": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-client-guard/clients-g2", + "client_sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "reviewed_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da" + } + } + }, + "artifacts": { + "followup-work/source-manifest-v2.json": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "g3-source-freeze-v3.json": "03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2", + "build-g3-repair/receipt.json": "61455c537183a7c70b8a64949dbb67050f8aa076f1ebed62e514f0e961e93e24", + "build-g3/receipt.json": "cba4f3380e88c9d2facfb468d26d1d8831b875fe2dea7722a36b118ca877d4ae", + "gpu-client-build-normalized.json": "d1f5e51b463963b8c0804aaaa7a3216f8f4e439350ac8fee7ab405e0c9a3ad5b", + "gpu-client-guard/receipt.json": "7dc827169937b2dfeadad9d0a802527c4e43d58b3457d07f3a25b39c56e59475", + "tester-g3-final/receipt.json": "27b886227043621098c56b16e4e6501ff7cbf34151c3c937e5580ee10e035147", + "reviews/source-review/receipt.json": "58ee0ef4535c0e5e47cc68cb2bc35e20b73563e47438b3dee718d24194c535cc", + "reviews/source-delta/receipt.json": "895dfc1870b70c49039c773cbc6012b742514f30da508a2997c352d9ea12f781", + "reviews/admission-nongpu/clone-acceptance.json": "c926c727ee56bcf850076d77c2b9db43e08a742bfeddbb742092b5177793008b", + "g3-offline/receipt.json": "8578ad7ad8a1188b0e215c49684034e1acdc59702bfc85c2162451e163c3b93e", + "builds/g3-scene/compile_commands.json": "628580188f76708c076976c4473ede4edbdaccb4924f81bddc2a7ae3bd4bc486", + "build-g3-repair/macro-compile-commands.json": "07814ebb470091006ea0140044f14a8eb984daf0528c4fe069715918fa0e38d9" + }, + "stage": { + "usr/bin/swayfx-mosaic": { + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "mode": "0o755" + }, + "usr/share/licenses/swayfx-mosaic/SceneFX-LICENSE": { + "sha256": "ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/SwayFX-LICENSE": { + "sha256": "bd35722bff46327f5eded1d211207277bbe043d2a22048b282c42ef801593b8b", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/wlroots-LICENSE": { + "sha256": "35d427c043dcafe8893b9e7247348f599847c81d9a067703587c80707f3d58df", + "mode": "0o644" + }, + "usr/share/licenses/swayfx-mosaic/INCORPORATED-NOTICES": { + "sha256": "a46f71dccc10aec01844fc59974e3094b2951365b191b8b3819ed93effcc3919", + "mode": "0o644" + } + }, + "legal_status": "LEGAL_NOT_APPROVED", + "macro_flags": [ + "-D_XOPEN_SOURCE=700", + "-DG3_ROOT=\"/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-work/acquisition\"" + ], + "compile_macro_commands": 23, + "source_tree_digests": { + "scene": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da", + "mosaic": "70fb049bc28522783c9b6a76dc3d66e944a25dc5e6f5fa7f52d56665917b4125" + }, + "audit": { + "dynamic": { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "0580e1345ccc1b4764d62a55f00e6168baa91338868dedab8dedfb3fa1f1112c" + }, + "buildid": { + "argv": [ + "readelf", + "-n", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "51b4e850e7e14cfdca8bea0a2a4da375c031ed270924e0351a77e8ea13e417fa" + }, + "symbols": { + "argv": [ + "nm", + "-a", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "be8bb80e683637762d31d82d2cb75570759db533d758055ae8c7fa471772fd26" + } + }, + "b4_semantic_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/g3-build/b4-semantic.json", + "b4_semantic_receipt_sha256": "72f3528fc34a19f50525a1665aa965e56998170d1d406b632b0fd8c5834e6d5d", + "historical_initial_build": "FAIL retained; no compilation before argument repair", + "continuation": "single explicitly authorized same-pair argument repair PASS; original FAIL unchanged; no new source", + "native_preflight": "ACCEPTED scoped diagnostic: EGL divergence preserved; clean GL version/capability windows and lifecycle/restoration; errors nonrestorable; unchanged A refusal stops before B/return", + "adapter": "unchanged source accepted: compositor-only diagnostic env, exact module roots, separate GPU identity", + "reviewer_runtime": "NOT_RUN", + "native_gl_runtime": "NOT_RUN", + "gpu_readback": "NOT_RUN", + "g2_qualification_transferred": false, + "reviewer_build_stage": "NOT_RUN", + "reviewer_git_mutation": "NOT_RUN", + "conditions": [ + "Parent must bind this independent receipt and semantic receipt, source/global/GPU freezes and exact ELF/client to GPU-specific runtime manifest", + "External gate must bind final binary and acquisition root; acquisition remains empty/unarmed during review", + "Unique GPU-G3 reservation150s/captures12/hook3 and strict A/B/A; first A refusal stops without retry", + "Native capability and actual mappings/renderer/readback remain to be observed; no GL runtime FEASIBLE claim from build" + ] +} diff --git a/docs/design/evidence/step20c-native-closure/gpu-results-review.json b/docs/design/evidence/step20c-native-closure/gpu-results-review.json new file mode 100644 index 0000000..5f01941 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/gpu-results-review.json @@ -0,0 +1,115 @@ +{ + "schema": "independent-gpu-results-review-v1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED_RESULT_INTERPRETATION", + "runtime_result": "INCONCLUSIVE", + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "historical_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_used": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup", + "findings": [ + { + "id": "GPU-RUNTIME-FIXTURE-TMPDIR", + "severity": "P2", + "file": "gpu/clients-g2.c", + "symbol": "draw", + "line": 92, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "violated_requirement": "Phase C portable new LAB source kit without historical absolute paths; Phase G setup must permit reference SHM draw before GPU acquisitions", + "evidence": "Old source compares TMPDIR literally to /var/tmp/swayfx-mosaic-corec-v2-i516p6po/scratch then exit(2); Session supplies /var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/scratch. Client wire ends after configure ACK before SHM; actual client exit2, no closure/SHM receipts. This deterministic path blocks the intended experiment before arming.", + "smallest_correction": "For future offline-only fixture: validate caller-supplied new owned private LAB scratch with bounded creation and diagnostics; test actual draw environment branch. Separate review/freeze; no runtime retry and no reclassification of this run." + } + ], + "scope_note": "Concrete historical fixture failure recorded; no requalification from ongoing offline correction", + "actual_binary": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "build_id": "afdde13d52f3a5fe07c096c1221fcf0c8ae223fc", + "pid": 3510983 + }, + "actual_client": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-client-guard/clients-g2", + "sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "source_sha256": "66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7", + "pid": 3511049 + }, + "observed_startup": [ + "00:00:00.544 [INFO] [wlr] [render/egl.c:369] Using EGL 1.5", + "00:00:00.555 [DEBUG] [wlr] [render/egl.c:439] Created EGL context using OpenGL ES 2.0", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:474] Using OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:475] GL vendor: AMD", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:476] GL renderer: AMD Radeon 780M Graphics (radeonsi, phoenix, ACO, DRM 3.64, 7.2.9-zen1-1-zen)" + ], + "native_hook_measurements": "NOT_EXERCISED", + "markers": { + "GPU_GLES_CAPABILITY_AND_READBACK_PREFLIGHT": "ACCEPTED_OFFLINE_ONLY", + "GPU_GLES_ADMISSION": "NOT_EXERCISED", + "GPU_G3_NATIVE_READBACK": "NOT_EXERCISED", + "GPU_WHOLE_FIELD_CAUSALITY": "NOT_PROVEN" + }, + "actions": { + "configuration": 2, + "spawn": 3, + "tool": 29 + }, + "acquisition": "EMPTY; no epoch/arm/raw", + "captures": 0, + "raw_codes": { + "runner": 1, + "processes": [ + { + "exit": 0, + "name": "compositor", + "pid": 3510983 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3511036 + }, + { + "exit": 2, + "name": "g2-reference", + "pid": 3511049 + } + ], + "terminal": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "scientific_cleanup": false, + "mechanical_cleanup": "PASS", + "rescue": false, + "watchdog": false, + "seconds": { + "outcome": 7.614715491014067, + "execution": 8.184041837, + "ledger": 7.623459039 + }, + "total_runs": 5, + "total_captures": 32, + "retry_authorized": false, + "artifacts": { + "graphics-runs/GPU-G3/run/outcome.json": "df0fd1028dfe0e48bf20a74fafb964fd14f6f0f76fb46b82791a45b3269c44eb", + "graphics-runs/GPU-G3/run/partial-failure.json": "418bd295830dbe15568695de751aaa4be6246496fdb9a167a8cea211bf461bff", + "graphics-runs/GPU-G3/run/runtime-identity.json": "323d1ba4cba45ee9d6c5270431516edf6389e4e713fe0a960fee9f053b245bfd", + "graphics-runs/GPU-G3/run/events.jsonl": "c2866efe46406b5b025d340d8fd69ac91c02d0e0fb7eb2f2156ffe2d34f55e1e", + "graphics-runs/GPU-G3/run/g2-reference.log": "b4b0fb7cb7b3fa5b62abad70fc26fea8f0b70ec80d93dd12847b927408a1a0cc", + "graphics-runs/GPU-G3/run/g2-reference-closed-3511049.log": "b4b0fb7cb7b3fa5b62abad70fc26fea8f0b70ec80d93dd12847b927408a1a0cc", + "graphics-runs/GPU-G3/run/compositor.log": "ebe27849e576b13ad900ece6d7d4884388d4107d8a4126337229e7821873b5db", + "graphics-runs/GPU-G3/run/proc-maps.txt": "c2a1b48db5791ba6a2350f08f912a2e65c9d9ef1ab2445f1299dc4218166d55c", + "execution/GPU-G3-command.json": "c21049d1e22b769f8467a9a86794e5a51654f325ba913efdec199baeaaf07cbf", + "execution/GPU-G3-runner.log": "c0b113182d60f107a4d8aa90d3ff4f71bcd78403062ba6877a6f98abf06044c0", + "followup-work/source-manifest-v2.json": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "reviews/gpu-admission.json": "b3109371c1fe54c545291742f91432d38f70e77fa54f93abae536a5ae29c03de", + "reviews/g3-build/receipt.json": "f0a2f8089977da0039afe2fcf9203f38dfc3752d373b3c76ad9b453f6a6b123e", + "reviews/g3-build/b4-semantic.json": "72f3528fc34a19f50525a1665aa965e56998170d1d406b632b0fd8c5834e6d5d", + "g3-source-freeze-v3.json": "03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2" + }, + "notes_sha256": "22553811a3dbdff89c9f4e271e03e41866144f6764b05957eb3481c2c66ea39e", + "reviewer_actions": "READ_ONLY plus exclusive review receipts; no runtime/build/stage/source edits", + "previous_review_limit": "Hardcoded historical TMPDIR missed; offline coverage did not execute first client draw with new LAB environment" +} diff --git a/docs/design/evidence/step20c-native-closure/gpu-source-manifest-v3.json b/docs/design/evidence/step20c-native-closure/gpu-source-manifest-v3.json new file mode 100644 index 0000000..9fbe130 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/gpu-source-manifest-v3.json @@ -0,0 +1,82 @@ +{ + "schema": "G3-relative-source-freeze-v1", + "status": "EXPERIMENTAL_SOURCE_ONLY", + "review": "PENDING_INDEPENDENT", + "build": "NOT_RUN", + "runtime": "NOT_RUN", + "no_inherited_G2_qualification": true, + "files": { + "README.md": { + "sha256": "83e333c6718ef05c9009ac8340c564f39094abb8353393576f9464ea2a70042c", + "mode": "0o644" + }, + "clients-g2.c": { + "sha256": "66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7", + "mode": "0o644" + }, + "freeze.py": { + "sha256": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "mode": "0o644" + }, + "g2_gl.h": { + "sha256": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "mode": "0o644" + }, + "g2_native.h": { + "sha256": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "mode": "0o644" + }, + "g3-admission.patch": { + "sha256": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "mode": "0o644" + }, + "protocol.py": { + "sha256": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "mode": "0o644" + }, + "protocols/wlr-layer-shell-unstable-v1.xml": { + "sha256": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "mode": "0o644" + }, + "protocols/xdg-shell.xml": { + "sha256": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "mode": "0o644" + }, + "reproduce.py": { + "sha256": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "mode": "0o644" + }, + "scenario.py": { + "sha256": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "mode": "0o644" + }, + "test-targeted.py": { + "sha256": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "mode": "0o644" + }, + "test_begin.py": { + "sha256": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "mode": "0o644" + }, + "test_gl.c": { + "sha256": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "mode": "0o644" + }, + "test_mutations.py": { + "sha256": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "mode": "0o644" + }, + "test_native.c": { + "sha256": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "mode": "0o644" + }, + "test_protocol.py": { + "sha256": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "mode": "0o644" + }, + "validate_source.py": { + "sha256": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "mode": "0o644" + } + } +} diff --git a/docs/design/evidence/step20c-native-closure/ledger.json b/docs/design/evidence/step20c-native-closure/ledger.json new file mode 100644 index 0000000..4a2b815 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/ledger.json @@ -0,0 +1,585 @@ +{ + "campaign_closure": { + "closed_ns": 328443332204579, + "consumed": [ + "FS-P", + "DY-C", + "OM-ROOT", + "OM-NESTED", + "GPU-G3" + ], + "consumed_runs": 5, + "executed_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "executed_source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "no_further_runtime_authorized": true, + "no_reset_refund_retry": true, + "not_run": { + "FS-C": "qualified FS-P dependency not satisfied", + "GPU-CTRL": "cannot replace failed GPU-G3; no new attribution question or equivalent reviewed control", + "OM-EXTRA": "no distinct reviewed discriminant; NOT_ADMITTED" + }, + "output_captures": 32, + "postcampaign_source_repair": "OFFLINE_ONLY; no runtime qualification or reservation" + }, + "lab": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "limits": { + "captures": 110, + "captures_per_run": 18, + "duration_s": 150, + "runs": 8 + }, + "namespace": "REAL", + "operations": [ + { + "continuations": [ + { + "authorization": "parent explicit same reserved pair continuation; original FAIL retained", + "finished_monotonic_ns": 327835502157972, + "id": "same-pair-argument-repair", + "receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/receipt.json", + "reserved_monotonic_ns": 327815215522156, + "state": "PASS" + } + ], + "failure": "SceneFX Meson setup rc=1: Could not get define EGL_EGLEXT_VERSION", + "finished_monotonic_ns": 327600914563309, + "id": "G3_BUILD_PAIR", + "mosaic_builds": 1, + "reserved_monotonic_ns": 327510465794426, + "scene_builds": 1, + "setup_retried": false, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "state": "FAIL" + }, + { + "destination": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/stage-g3", + "finished_monotonic_ns": 327835502199749, + "id": "G3_DESTDIR", + "reserved_monotonic_ns": 327834532865939, + "state": "PASS" + } + ], + "runs": [ + { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "actions": { + "chain": 1, + "configuration": 8, + "spawn": 5, + "tool": 15 + }, + "bindings": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway", + "binary_sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "build_id": "ba9751c82e73d4043b7651354f20936d070c2227", + "build_review": "ACCEPTED", + "client_binary_sha256": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a", + "manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "pristine_scene": "/usr/lib/libscenefx-0.5.so", + "pristine_scene_sha256": "63586ffbe268c6830b5782d5327e8ca3624dbd9b9c9b0e93e591e94ca28a6e62", + "prospective": { + "build_review": "ACCEPTED", + "client": "fullscreen-client", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "client_build_review": "ACCEPTED", + "client_sha256": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a", + "decision": "ACCEPTED", + "identity": "pristine", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_qualification": "ACCEPTED" + }, + "publication": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json", + "publication_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "review": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "review_sha256": "1e0f95eea63e4178b413e5f62190bae28f91c1b68a6530d485e42a675010caf0", + "runtime_manifest_sha256": "cbfd1ac0d2453f3144d566efa227639f648840093179bfc70ad9f53fcf52cf3c", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_qualification": "ACCEPTED", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "capture_limit": 12, + "finished_ns": 327481893644422, + "id": "FS-P", + "outcome": { + "mechanical_rescue": false, + "processes": [ + { + "exit": 0, + "name": "compositor", + "pid": 3491656 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3491708 + }, + { + "exit": 0, + "name": "reference", + "pid": 3491722 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3491772 + }, + { + "exit": 0, + "name": "owner", + "pid": 3491797 + } + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "NOT_EXERCISED", + "terminal": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "started_ns": 327475796122506, + "status": "COMPLETED", + "token": "e0ce392108fe4003ad35117f515135ee" + }, + { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "actions": { + "camera": 1, + "capture": 16, + "chain": 1, + "click": 6, + "configuration": 18, + "grab": 2, + "move": 7, + "mutation": 4, + "spawn": 6, + "tool": 96 + }, + "bindings": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic", + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "build_id": "d5d304533f2c8db9d738365e9bd7f2c96779ef8d", + "build_review": "ACCEPTED", + "client_binary_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "prospective": { + "build_review": "ACCEPTED", + "client": "nested-client", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "client_build_review": "ACCEPTED", + "client_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "decision": "ACCEPTED", + "identity": "core", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_qualification": "ACCEPTED" + }, + "publication": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json", + "publication_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "review": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "review_sha256": "1e0f95eea63e4178b413e5f62190bae28f91c1b68a6530d485e42a675010caf0", + "runtime_manifest_sha256": "cbfd1ac0d2453f3144d566efa227639f648840093179bfc70ad9f53fcf52cf3c", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_qualification": "ACCEPTED", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "capture_limit": 16, + "finished_ns": 327550717540527, + "id": "DY-C", + "outcome": { + "mechanical_rescue": false, + "processes": [ + { + "exit": 0, + "name": "compositor", + "pid": 3492726 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3492769 + }, + { + "exit": 0, + "name": "reference", + "pid": 3492782 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3492817 + }, + { + "exit": 0, + "name": "filler1", + "pid": 3492833 + }, + { + "exit": 0, + "name": "owner", + "pid": 3492898 + } + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "started_ns": 327514722064470, + "status": "COMPLETED", + "token": "375adfc1bcef41088ebcb381f44d9db0" + }, + { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "actions": { + "camera": 1, + "capture": 8, + "chain": 1, + "click": 2, + "configuration": 10, + "grab": 1, + "hook": 1, + "move": 3, + "spawn": 5, + "tool": 49 + }, + "bindings": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "build_review": "ACCEPTED", + "client_binary_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "prospective": { + "build_review": "ACCEPTED", + "client": "nested-client", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "client_build_review": "ACCEPTED", + "client_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "decision": "ACCEPTED", + "identity": "oom", + "oom_source_review": "ACCEPTED", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_qualification": "ACCEPTED", + "variant_identity": "COREC_V2_NATIVE_OOM_DIAGNOSTIC" + }, + "publication": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json", + "publication_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "review": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "review_sha256": "1e0f95eea63e4178b413e5f62190bae28f91c1b68a6530d485e42a675010caf0", + "runtime_manifest_sha256": "cbfd1ac0d2453f3144d566efa227639f648840093179bfc70ad9f53fcf52cf3c", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_qualification": "ACCEPTED", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "capture_limit": 10, + "finished_ns": 327602262992266, + "id": "OM-ROOT", + "outcome": { + "mechanical_rescue": false, + "processes": [ + { + "exit": 0, + "name": "compositor", + "pid": 3494614 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3494653 + }, + { + "exit": 0, + "name": "reference", + "pid": 3494681 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3494717 + }, + { + "exit": 0, + "name": "owner", + "pid": 3494749 + } + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "started_ns": 327584501389229, + "status": "COMPLETED", + "token": "0a825259ea7740c5a7704f149dfa0649" + }, + { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "actions": { + "camera": 1, + "capture": 8, + "chain": 1, + "click": 4, + "configuration": 10, + "grab": 2, + "hook": 1, + "move": 5, + "spawn": 5, + "tool": 54 + }, + "bindings": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "build_review": "ACCEPTED", + "client_binary_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "prospective": { + "build_review": "ACCEPTED", + "client": "nested-client", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "client_build_review": "ACCEPTED", + "client_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "decision": "ACCEPTED", + "identity": "oom", + "oom_source_review": "ACCEPTED", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_qualification": "ACCEPTED", + "variant_identity": "COREC_V2_NATIVE_OOM_DIAGNOSTIC" + }, + "publication": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json", + "publication_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "review": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "review_sha256": "1e0f95eea63e4178b413e5f62190bae28f91c1b68a6530d485e42a675010caf0", + "runtime_manifest_sha256": "cbfd1ac0d2453f3144d566efa227639f648840093179bfc70ad9f53fcf52cf3c", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_qualification": "ACCEPTED", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "capture_limit": 10, + "finished_ns": 327723731507334, + "id": "OM-NESTED", + "outcome": { + "mechanical_rescue": false, + "processes": [ + { + "exit": 0, + "name": "compositor", + "pid": 3497491 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3497533 + }, + { + "exit": 0, + "name": "reference", + "pid": 3497545 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3497579 + }, + { + "exit": 0, + "name": "owner", + "pid": 3497605 + } + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "started_ns": 327703322633743, + "status": "COMPLETED", + "token": "39b4767924344003ad80fb9b87da4e20" + }, + { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "actions": { + "configuration": 2, + "spawn": 3, + "tool": 29 + }, + "bindings": { + "binary": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "build_id": "afdde13d52f3a5fe07c096c1221fcf0c8ae223fc", + "build_review": "ACCEPTED", + "client_binary_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "prospective": { + "binding": { + "binary": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "client": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-client-guard/clients-g2", + "client_sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "gate_file": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/g3-native-gate.json", + "reviewed_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + }, + "build_review": "ACCEPTED", + "build_review_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/g3-build/receipt.json", + "build_review_receipt_sha256": "f0a2f8089977da0039afe2fcf9203f38dfc3752d373b3c76ad9b453f6a6b123e", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "client_build_review": "ACCEPTED", + "decision": "ACCEPTED", + "gate_file": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/g3-native-gate.json", + "gate_file_sha256": "46630653e1989c02bbfa0a7cc5b01bed8358cd23327efbbf23eec0f551302595", + "gl_observability_preflight": "ACCEPTED", + "gl_observability_preflight_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/g3-build/receipt.json", + "gl_observability_preflight_receipt_sha256": "f0a2f8089977da0039afe2fcf9203f38dfc3752d373b3c76ad9b453f6a6b123e", + "gpu_client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-client-build-normalized.json", + "gpu_client_build_receipt_sha256": "d1f5e51b463963b8c0804aaaa7a3216f8f4e439350ac8fee7ab405e0c9a3ad5b", + "gpu_source_manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/g3-source-freeze-v3.json", + "gpu_source_manifest_sha256": "03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2", + "gpu_source_review": "ACCEPTED", + "gpu_source_review_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/g3-build/receipt.json", + "gpu_source_review_receipt_sha256": "f0a2f8089977da0039afe2fcf9203f38dfc3752d373b3c76ad9b453f6a6b123e", + "native_gl_status": "NOT_RUN", + "reviewed_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da" + }, + "publication": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json", + "publication_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "review": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/gpu-admission.json", + "review_sha256": "b3109371c1fe54c545291742f91432d38f70e77fa54f93abae536a5ae29c03de", + "reviewed_scene_sha256": "5e56b9de119941ac4a09c39d12d9ba4e350417d285cf7804947e58b6ecf625da", + "runtime_manifest_sha256": "9bf1922a175853d9ba4a8a0186cf6e67d01511e91cdddb102740ed7c05131cb9", + "scene_archive": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-scene/libscenefx-0.5.a", + "scene_archive_sha256": "e8995f125c3eba6669aa3a8a44be1e075f6807e91055243e67731118303faec5", + "scope": "new distinct G3 intrusive diagnostic only; native GL and GPU runtime NOT_RUN", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_qualification": "ACCEPTED", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "capture_limit": 12, + "finished_ns": 328206095687183, + "id": "GPU-G3", + "outcome": { + "mechanical_rescue": false, + "processes": [ + { + "exit": 0, + "name": "compositor", + "pid": 3510983 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3511036 + }, + { + "exit": 2, + "name": "g2-reference", + "pid": 3511049 + } + ], + "runner_failure": "Ambiguous: bounded wait timeout", + "scientific_cleanup": false, + "status": "INCONCLUSIVE", + "terminal": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "started_ns": 328198472228144, + "status": "COMPLETED", + "token": "f0083b48774a4d9e83b607a95be914aa" + } + ], + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "uid": 1000 +} diff --git a/docs/design/evidence/step20c-native-closure/manifest.json b/docs/design/evidence/step20c-native-closure/manifest.json new file mode 100644 index 0000000..23a94e9 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/manifest.json @@ -0,0 +1,190 @@ +{ + "contract": "Entry hashes seal the small published receipts; this index excludes its own bytes to avoid a self-reference. Heavy originals stay in the retained LAB.", + "entries": { + "abi-baseline.json": { + "bytes": 17280, + "mode": "0o644", + "sha256": "d7661a1b4e1db35069d47bd9f74fa4d20ac03d2fadf05a9299c44f700114b55e" + }, + "clone-acceptance-review.json": { + "bytes": 1024, + "mode": "0o644", + "sha256": "c926c727ee56bcf850076d77c2b9db43e08a742bfeddbb742092b5177793008b" + }, + "clone-validation.json": { + "bytes": 18117, + "mode": "0o644", + "sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282" + }, + "coredump-final.json": { + "bytes": 272, + "mode": "0o644", + "sha256": "0af38848c5908959227455290d38014f4deafd01ed407ae7a1f370cb675c419f" + }, + "final-review.json": { + "bytes": 2955, + "mode": "0o644", + "sha256": "3b15b5093730d6c43897e0adad4a1b2987fbc1097694a03645e928023ba23814" + }, + "final-validation.json": { + "bytes": 7596, + "mode": "0o644", + "sha256": "aeef27c8f92f1939c0db868bab17a0175cf5c2e5c2a734f2854ad09b28ba1da2" + }, + "fullscreen-dumpability-probe.json": { + "bytes": 669, + "mode": "0o644", + "sha256": "fdcca6d786067f0bd91d3c728e4db7926e23e87c1c104ae3cb8d8295756a7a7d" + }, + "g3-build-initial.json": { + "bytes": 4750, + "mode": "0o644", + "sha256": "cba4f3380e88c9d2facfb468d26d1d8831b875fe2dea7722a36b118ca877d4ae" + }, + "g3-build-repair.json": { + "bytes": 10562, + "mode": "0o644", + "sha256": "61455c537183a7c70b8a64949dbb67050f8aa076f1ebed62e514f0e961e93e24" + }, + "g3-build-validation.json": { + "bytes": 7915, + "mode": "0o644", + "sha256": "27b886227043621098c56b16e4e6501ff7cbf34151c3c937e5580ee10e035147" + }, + "gpu-b4-semantic.json": { + "bytes": 1140, + "mode": "0o644", + "sha256": "72f3528fc34a19f50525a1665aa965e56998170d1d406b632b0fd8c5834e6d5d" + }, + "gpu-build-review.json": { + "bytes": 8021, + "mode": "0o644", + "sha256": "f0a2f8089977da0039afe2fcf9203f38dfc3752d373b3c76ad9b453f6a6b123e" + }, + "gpu-results-review.json": { + "bytes": 6139, + "mode": "0o644", + "sha256": "78ce6fe03955d62d1b079b9a8e81161dcb5bfceef71bd2b71d13892bcf7e4d78" + }, + "gpu-source-manifest-v3.json": { + "bytes": 2706, + "mode": "0o644", + "sha256": "03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2" + }, + "ledger.json": { + "bytes": 23987, + "mode": "0o644", + "sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c" + }, + "nongpu-admission-review.json": { + "bytes": 23730, + "mode": "0o644", + "sha256": "dcbd9c8259153c33f33dbfb2c7761794defa92ab86a21a514f7aeb28ae94b3d7" + }, + "nongpu-results-review.json": { + "bytes": 15929, + "mode": "0o644", + "sha256": "a8a9ea6c9c1fab09687c1b43378d53d7add0eb421a9b2e626d60d59445578e86" + }, + "offline-validation.json": { + "bytes": 17393, + "mode": "0o644", + "sha256": "f026a1fa3fe6f2a8471de4ee9693a70a807b3ed79cd52dd26f5651ed52f582b6" + }, + "postcampaign-delta-initial-review.json": { + "bytes": 3003, + "mode": "0o644", + "sha256": "bc188f87b012c8acdb5c5a8cdb4ca7db0f0266d9597d6c170ec24ba7615d5afa" + }, + "postcampaign-delta-review.json": { + "bytes": 1910, + "mode": "0o644", + "sha256": "4d459c0963c6535a404bfaa68d11dff0cf738e2d21167c148c12315e954ffe86" + }, + "postcampaign-gpu-manifest-final.json": { + "bytes": 2843, + "mode": "0o644", + "sha256": "a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb" + }, + "postcampaign-gpu-manifest.json": { + "bytes": 2843, + "mode": "0o644", + "sha256": "230f131aae824dfafb938f38f77aad08d225ea2fa5496ee65a3b45f3062e8df1" + }, + "postcampaign-offline-validation.json": { + "bytes": 7887, + "mode": "0o644", + "sha256": "5905e2002041148d7a104e195132f56c8b4152952547be4ed0985da4eacc3852" + }, + "postcampaign-repair.json": { + "bytes": 15323, + "mode": "0o644", + "sha256": "eae6bb85b21cbd6876e8340384314c21749040cadad89b313eae4b2d9bf7e7a4" + }, + "postcampaign-source-manifest-final.json": { + "bytes": 18962, + "mode": "0o644", + "sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080" + }, + "postcampaign-source-manifest.json": { + "bytes": 18962, + "mode": "0o644", + "sha256": "f13da7228c0c9f61cdefa23fa80f3dea3322cb8551edb62f459aa69a1ba7c20f" + }, + "pre-freeze-validation.json": { + "bytes": 20434, + "mode": "0o644", + "sha256": "ad6696e7114a128cd5e7b5456c04f85b5ca9b3c22b5945d0ff387d9f50af324a" + }, + "provenance-replay.json": { + "bytes": 20273, + "mode": "0o644", + "sha256": "e09a9da09141903fad33da178272c52fac7a29ee7cf0e9bed5b718619bf1f543" + }, + "runtime-summary.json": { + "bytes": 28666, + "mode": "0o644", + "sha256": "8bebfdb30c0eaa3c7f4df95bcbf7590557b7b74fc05353b5afe77a1339c7c202" + }, + "source-binding-review.json": { + "bytes": 10088, + "mode": "0o644", + "sha256": "afdeb78d8d0e60f78c3f7f25e7b66ef92bbc34dfb02ac1e37020e501f8d14766" + }, + "source-delta-review.json": { + "bytes": 1708, + "mode": "0o644", + "sha256": "895dfc1870b70c49039c773cbc6012b742514f30da508a2997c352d9ea12f781" + }, + "source-initial-review.json": { + "bytes": 8590, + "mode": "0o644", + "sha256": "58ee0ef4535c0e5e47cc68cb2bc35e20b73563e47438b3dee718d24194c535cc" + }, + "source-manifest-v2.json": { + "bytes": 18835, + "mode": "0o644", + "sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + }, + "source-publication.json": { + "bytes": 1138, + "mode": "0o644", + "sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2" + }, + "system-audit.json": { + "bytes": 579, + "mode": "0o644", + "sha256": "8053a9a21a910432aea9dde8fc344d11dfa34485747d46c49a2cdb962760ce92" + }, + "workflow-deviations.json": { + "bytes": 2547, + "mode": "0o644", + "sha256": "dc99325d5d1b97d0b4c2f5a88f4b78a083edb50fc6adfd3f5556d8722faf9f3b" + } + }, + "excludes": [ + "manifest.json" + ], + "schema": "native-closure-public-evidence-index-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/nongpu-admission-review.json b/docs/design/evidence/step20c-native-closure/nongpu-admission-review.json new file mode 100644 index 0000000..cf75add --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/nongpu-admission-review.json @@ -0,0 +1,496 @@ +{ + "schema": "independent-nongpu-admission-review-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED", + "scope": "literal accepted source/client/retained ELF bindings and published Git bytes; no new source audit", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "artifacts": { + "manifest": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + }, + "review": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "sha256": "1e0f95eea63e4178b413e5f62190bae28f91c1b68a6530d485e42a675010caf0" + }, + "publication": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json", + "sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2" + }, + "runtime": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/runtime-identities-nongpu.json", + "sha256": "cbfd1ac0d2453f3144d566efa227639f648840093179bfc70ad9f53fcf52cf3c" + }, + "binding": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/source-delta/bindings.json", + "sha256": "afdeb78d8d0e60f78c3f7f25e7b66ef92bbc34dfb02ac1e37020e501f8d14766" + }, + "source_review": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/source-delta/receipt.json", + "sha256": "895dfc1870b70c49039c773cbc6012b742514f30da508a2997c352d9ea12f781" + }, + "tests": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/followup-offline-receipt.json", + "sha256": "f026a1fa3fe6f2a8471de4ee9693a70a807b3ed79cd52dd26f5651ed52f582b6" + } + }, + "transcription": "PASS: exact per-run bindings; identity base fields unchanged; pristine SceneFX extra path/SHA verified against actual shared file", + "publication": "PASS: validated recorded direct origin/github observations; actual commit inventory/type/modes/49blobs verified through real gate.published_sources", + "pure_preflight": { + "FS-P": "PASS pure validate_review; no reservation", + "FS-C": "PASS pure validate_review; no reservation", + "DY-C": "PASS pure validate_review; no reservation", + "OM-ROOT": "PASS pure validate_review; no reservation", + "OM-NESTED": "PASS pure validate_review; no reservation" + }, + "reservation": "NOT_RUN", + "ledger_unchanged": true, + "dependencies": [ + "FS-C requires completed PARTIALLY_FEASIBLE FS-P via Ledger.admit", + "OM-NESTED requires completed PARTIALLY_FEASIBLE OM-ROOT plus scientific_cleanup true; no override in admission", + "per-action sealed source/receipt identity checks preserved" + ], + "clone": { + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/receipt.json", + "sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "receipt": { + "clients": { + "fullscreen-client": { + "mode": "0o755", + "sha256": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a" + }, + "nested-client": { + "mode": "0o755", + "sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82" + }, + "pointer-daemon": { + "mode": "0o755", + "sha256": "3188215af9ee0e2c79e1a5efc1b023ee8be47d0cade28f7c1ebe56ff140ae7db" + }, + "saved-client": { + "mode": "0o755", + "sha256": "10d766c660b0ed35cd5e002d594fc776ebc4754c6b596cf61dd53facaa29d875" + }, + "static-reference": { + "mode": "0o755", + "sha256": "3eebddbc3989ce0d9d2987382c8232a9cc6444cdfb29a5ca3a09e37251f6443c" + }, + "vertical-client": { + "mode": "0o755", + "sha256": "49f4999aafc800192c50d5d1439ba5dd80c22a1e994dee591d9a780e018f0383" + } + }, + "clone_clean": true, + "commands": [ + { + "argv": [ + "cc", + "--version" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-00.log", + "log_sha256": "52fa390d1b33ef5e0b20f39de6624190ade494b52dd543bd8121f350ec88e0e5", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "--version" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-01.log", + "log_sha256": "7781d4bdaabd8c59b362476a40f44a32c136372c265defc11595f5f347797e1d", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--version" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-02.log", + "log_sha256": "7bb9bbd2e2162e7c4db854f8740421fd7f8e6a2113a09dc1ef4711aec644536a", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-03.log", + "log_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-04.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-05.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/wlr-virtual-pointer-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/virtual-pointer-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-06.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/protocols/wlr-virtual-pointer-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/virtual-pointer-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-07.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/fullscreen-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/fullscreen-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-08.log", + "log_sha256": "00ff2f84ac3a7591528700a862eb951b7d1f6c2ce89c0f61a5c5758180f6a904", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/nested-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/nested-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-09.log", + "log_sha256": "acf128becf44469df920dd8d820b110c9a0672085f62a0efd1019a51e41fad63", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/vertical-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/vertical-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-10.log", + "log_sha256": "6240d00c893497ecd72c7eae9153ded3d7493ac5ef72f4aa2c850b5798efb800", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/saved-client.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/saved-client", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-11.log", + "log_sha256": "f0e47bff26bcdf6726ada4dc0aa3b2a32ec7a7f35131cef0cfe02b0985e0b286", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/static-reference.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/xdg-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/static-reference", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-12.log", + "log_sha256": "cfc61da356155edf0c44b257f80f724324a465bbf20e54dfe92c055e9ef9ba6c", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/clients/pointer-daemon.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/virtual-pointer-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/client-build/pointer-daemon", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-13.log", + "log_sha256": "b324274d7a22b156a98faf45514a8985f826cb52107f553b267b0d1a499a44aa", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-14.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-15.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-16.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-protocol.c" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-17.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-18.log", + "log_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "-Wno-unused-parameter", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-protocol.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/clients-g2", + "-lwayland-client", + "-lm" + ], + "failure": "fatal error: layer-shell-client.h: No such file or directory", + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/command-19.log", + "log_sha256": "2f339fe1a8f78a2670936ab271300f6e613a0537b3cf94067fff0a89c1face8b", + "rc": 1, + "resolution": "generated required header layer-shell-client.h, then compilation passed" + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/layer-shell-client.h" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/followup-00.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/followup-01.log", + "log_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236", + "rc": 0 + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "-Wno-unused-parameter", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/xdg-shell-protocol.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/wlr-layer-shell-unstable-v1-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/gpu-client-build/clients-g2", + "-lwayland-client", + "-lm" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/followup-02.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + }, + { + "argv": [ + "/usr/bin/python", + "-B", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/gpu/reproduce.py", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--core", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/replay-core/scene", + "--destination", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/g3-scene" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/g3-reproduce.log", + "log_sha256": "af3d75d1ad42e47bf960fcf57bd58818af9f5cf80b097c948adbeb3f78722fa1", + "rc": 0 + } + ], + "compositor_or_wayland_client_execution": "NOT_RUN", + "g3_reproduction": { + "exact_tree_match_lab_g3_source": true, + "files": 87, + "source_receipt_sha256": "af3d75d1ad42e47bf960fcf57bd58818af9f5cf80b097c948adbeb3f78722fa1", + "status": "PASS" + }, + "gpu_client": { + "mode": "0o755", + "sha256": "b764164b936c4046b0d61b3614b12c9d9c77ee623eefc51b8f437168d6901f48" + }, + "graphics_tests": { + "argv": [ + "/usr/bin/python", + "-B", + "-m", + "unittest", + "discover", + "-s", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-c/tooling/probes/step20c-corec-v2-followup/graphics/offline", + "-p", + "test_followup.py", + "-v" + ], + "failures": 0, + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/clone-validation/graphics-clone-tests.log", + "log_sha256": "d7d70b9d2b53121d5b3deea5c90274a7820eb33b7794cb07a071d1a422875692", + "rc": 0, + "tests_run": 66 + }, + "origin_url": "ssh://git@git.labfytools.com:2223/fy59/swayfx-mosaic.git", + "parent_commit": "d46f854b3026e911659528fe94792aa13837a1d6", + "parent_kit_files": 116, + "parent_kit_match_retained_extraction": true, + "publication_receipt_sha256": "3dbdfc66fa48e61ef8593ac9e85481baf9dab8fff30f480e8ad38b75cb1231a2", + "publication_refs": { + "github": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "origin": "c55373eab3c53132bf1157acc9cfc9edd451156e" + }, + "review_receipt_sha256": "895dfc1870b70c49039c773cbc6012b742514f30da508a2997c352d9ea12f781", + "runtime": "NOT_RUN", + "schema": "followup-clone-gate-v1", + "source_bytes_modes_match": true, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_files": 49, + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "status": "PASS", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" + }, + "condition": "parent must verify actual PASS and same commit/kit before reservation" + }, + "runtime": "NOT_RUN", + "build": "NOT_RUN", + "stage": "NOT_RUN", + "git_mutation": "NOT_RUN", + "conditions": [ + "clone PASS on exact published source before any runtime reservation", + "existing fixed per-ID ledger dependencies and budgets remain mandatory", + "actual private compositor startup, outputs, executable and mappings checks remain mandatory" + ], + "authorization": "ACCEPTED admission transcription conditionally on clone PASS; no runtime started or budget consumed by reviewer", + "findings": [] +} diff --git a/docs/design/evidence/step20c-native-closure/nongpu-results-review.json b/docs/design/evidence/step20c-native-closure/nongpu-results-review.json new file mode 100644 index 0000000..2bce867 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/nongpu-results-review.json @@ -0,0 +1,310 @@ +{ + "schema": "independent-nongpu-results-review-v1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "rows": { + "FS-P": { + "runtime_status": "NOT_EXERCISED", + "review_status": "NOT_EXERCISED", + "captures": 0, + "seconds_outcome": 6.086245531041641, + "seconds_ledger": 6.097521916, + "scientific_cleanup": true, + "all_process_exit0": true, + "terminal_swaymsg_exit": 1, + "compositor_exit": 0, + "reason": "actual fullscreen client executable" + }, + "DY-C": { + "runtime_status": "PARTIALLY_FEASIBLE", + "review_status": "SAMPLED_ONLY", + "captures": 16, + "seconds_outcome": 35.98416800098494, + "seconds_ledger": 35.995476057, + "scientific_cleanup": true, + "all_process_exit0": true, + "terminal_swaymsg_exit": 1, + "compositor_exit": 0, + "stages": [ + { + "tag": "resized960", + "scroll": 800.0, + "expected": 800.0, + "viewport": [ + -960, + 0, + 960, + 600 + ], + "point": [ + -273, + 168 + ] + }, + { + "tag": "resized-back", + "scroll": 800.0, + "expected": 800.0, + "viewport": [ + -800, + 0, + 800, + 600 + ], + "point": [ + -113, + 168 + ] + }, + { + "tag": "migrated-H2", + "scroll": 1120.0, + "expected": 1120, + "viewport": [ + 0, + 0, + 800, + 600 + ], + "point": [ + 366, + 168 + ] + }, + { + "tag": "migrated-back-H1", + "scroll": 1120.0, + "expected": 1120.0, + "viewport": [ + -800, + 0, + 800, + 600 + ], + "point": [ + -434, + 168 + ] + } + ] + }, + "OM-ROOT": { + "runtime_status": "PARTIALLY_FEASIBLE", + "review_status": "SAMPLED_ONLY", + "captures": 8, + "seconds_outcome": 17.750482999021187, + "seconds_ledger": 17.761603037, + "scientific_cleanup": true, + "all_process_exit0": true, + "terminal_swaymsg_exit": 1, + "compositor_exit": 0, + "native": { + "role": "root_popup", + "nonce": "0a825259ea7740c5a7704f149dfa0649", + "pid": "3494614", + "xdg": "0x564dbd1ab920", + "xdg_parent": "0x564dbd196260", + "parent": "0x564dbc49ec90", + "tree": "0x564dbd18fc20", + "children": "0", + "matched": "1", + "failures": "1", + "successes": "0", + "initialized": "0", + "listeners": "0", + "published": "0", + "parent_children": "0", + "children_scope": "existing parent children, not failed tree", + "caller_result": { + "role": "root_popup", + "pid": "3494614", + "xdg": "0x564dbd1ab920", + "xdg_parent": "0x564dbd196260", + "parent": "0x564dbc49ec90", + "tree": "(nil)", + "successes": "0", + "failures": "1" + } + }, + "availability": "SAMPLED_ONLY before cleanup with actual neighbor wire", + "no_memory_disconnect": "NOT_OBSERVED", + "normal_error0_closure": true + }, + "OM-NESTED": { + "runtime_status": "PARTIALLY_FEASIBLE", + "review_status": "SAMPLED_ONLY", + "captures": 8, + "seconds_outcome": 20.39799604000291, + "seconds_ledger": 20.408873591, + "scientific_cleanup": true, + "all_process_exit0": true, + "terminal_swaymsg_exit": 1, + "compositor_exit": 0, + "root_A_input": { + "point": [ + -215, + 108 + ], + "before_neighbor": true + }, + "native": { + "role": "nested_popup", + "nonce": "39b4767924344003ad80fb9b87da4e20", + "pid": "3497491", + "xdg": "0x55a818139b10", + "xdg_parent": "0x55a8180816e0", + "parent": "0x55a81812bc80", + "tree": "0x55a818143120", + "children": "1", + "matched": "1", + "failures": "1", + "successes": "1", + "initialized": "0", + "listeners": "0", + "published": "0", + "parent_children": "1", + "children_scope": "existing parent children, not failed tree", + "caller_result": { + "role": "nested_popup", + "pid": "3497491", + "xdg": "0x55a818139b10", + "xdg_parent": "0x55a8180816e0", + "parent": "0x55a81812bc80", + "tree": "(nil)", + "successes": "1", + "failures": "1" + } + }, + "availability": "SAMPLED_ONLY before cleanup with actual neighbor wire", + "no_memory_disconnect": "NOT_OBSERVED", + "normal_error0_closure": true + }, + "FS-C": { + "review_status": "NOT_RUN", + "reason": "FS-P not qualified; no reservation present" + } + }, + "actual_ELFs": { + "FS-P": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway", + "sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "pid": 3491656, + "build_id": "ba9751c82e73d4043b7651354f20936d070c2227" + }, + "DY-C": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic", + "sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "pid": 3492726, + "build_id": "d5d304533f2c8db9d738365e9bd7f2c96779ef8d" + }, + "OM-ROOT": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "pid": 3494614, + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d" + }, + "OM-NESTED": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "pid": 3497491, + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d" + } + }, + "run_entries_sha256": "2e655b9853edf81acc4520fe3ff3f81657fb0edf3b5f91a2b8bd83c487bb3d10", + "capture_total": 32, + "reservations": 4, + "artifacts": { + "graphics-runs/FS-P/run/outcome.json": "11b37750569c1fae4aa6a9c21e3f0166461bbdcfd9c8f46e90ef8ffede72b597", + "graphics-runs/FS-P/run/runtime-identity.json": "d8ed953f80ef80c5460ad1d90b48876c01082ca964522f21ad6c2c68ac6c3639", + "graphics-runs/FS-P/run/events.jsonl": "14c4747726cf78f5e71495c74d2896a5793c98065446b0da9eba6bc023b33f00", + "graphics-runs/FS-P/run/owner.log": "f3297192c0c0a9b82b5e967646979a23dd8e85cb162eaa6ba0f9492c95a13119", + "graphics-runs/FS-P/run/compositor.log": "32b1edc16301407f5306293feff5b95e1363c7094f9695c68a55a19890044a15", + "graphics-runs/FS-P/run/reference-closed-3491722.log": "fc807a050dfd9e9bd7d911253315cc5b1e2a2b3d2484236da762426f1e097295", + "graphics-runs/FS-P/run/filler0-closed-3491772.log": "86c812f2395303b127e399682da5a8c2dcc522dad2f692372bae5bc7572d3513", + "graphics-runs/FS-P/run/owner-closed-3491797.log": "f3297192c0c0a9b82b5e967646979a23dd8e85cb162eaa6ba0f9492c95a13119", + "graphics-runs/DY-C/run/outcome.json": "13539848fa063c022115824df894be2d0c6c215720c66ce94b7aaa9d644736e4", + "graphics-runs/DY-C/run/runtime-identity.json": "979882ea1e838eff80875f63ebf233e60f559876bec809fa2c11326a172dc110", + "graphics-runs/DY-C/run/events.jsonl": "6c8570c1b79696a65b089f4084980d144cef326a156c91c35547e0b654eb37a1", + "graphics-runs/DY-C/run/owner.log": "f1f8b23c37a49d11167b92bee64280618952bb40d34e755509f370238a194939", + "graphics-runs/DY-C/run/compositor.log": "07a54ce232c3c07998d439f34fe23257eb6bcac7def5aaac07ce35a125d5deee", + "graphics-runs/DY-C/run/owner-closed-3492898.log": "f1f8b23c37a49d11167b92bee64280618952bb40d34e755509f370238a194939", + "graphics-runs/DY-C/run/filler0-closed-3492817.log": "07227b87dd7f0879cf5d205dbde4aadd19371539c92321fbc8454054223fb16a", + "graphics-runs/DY-C/run/filler1-closed-3492833.log": "12f871052bbec431e8488692ca65c60bc3a9ce39b936ef5078ee7869a79ca06d", + "graphics-runs/DY-C/run/reference-closed-3492782.log": "1cb3a812c66490eff3265f3541e38844e7c687d51e8b7d048c1ffa2ebc0471c9", + "graphics-runs/DY-C/run/H2-reference1.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/DY-C/run/H2-reference2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/DY-C/run/owner-top-1.png": "c8d50e1a0e52074bf595a82a56d5db9f1790cf0cfd7e510c32ceceeba4295802", + "graphics-runs/DY-C/run/popup-A-1.png": "35072322e2a22c1fd73e20c67593080266df0fe42b7b6320808f17fb47f98250", + "graphics-runs/DY-C/run/mapped-1-H1.png": "1d502191e74f449a3cc9d89db52708a45e9c225d7be814fe839d1513c892dc72", + "graphics-runs/DY-C/run/mapped-1-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/DY-C/run/resized960-H1.png": "6257eecea214da92d7107809fe5b54323cd6cf653e3083401c5028652f673aba", + "graphics-runs/DY-C/run/resized960-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/DY-C/run/resized-back-H1.png": "1d502191e74f449a3cc9d89db52708a45e9c225d7be814fe839d1513c892dc72", + "graphics-runs/DY-C/run/resized-back-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/DY-C/run/migrated-H2-H1.png": "0e78e1e00e1b64efefcadff280b26c47573f6b85aa1a36b6d7773abfbc2088f9", + "graphics-runs/DY-C/run/migrated-H2-H2.png": "1f9f0839bdc2bbdc8964e17ffd004c274647b81d03bd1d08cc5968cbc00c9331", + "graphics-runs/DY-C/run/migrated-back-H1-H1.png": "1f9f0839bdc2bbdc8964e17ffd004c274647b81d03bd1d08cc5968cbc00c9331", + "graphics-runs/DY-C/run/migrated-back-H1-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/DY-C/run/dynamic-final-H1.png": "0e78e1e00e1b64efefcadff280b26c47573f6b85aa1a36b6d7773abfbc2088f9", + "graphics-runs/DY-C/run/dynamic-final-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-ROOT/run/outcome.json": "4308cbf00c96c2c93bd228f5544b5f812c2e12253c59bb52b301e7b73ecd5d7b", + "graphics-runs/OM-ROOT/run/runtime-identity.json": "03e01bcf01b157b42b9d25063fafd3c5133f1e65fc09792012c3f9a527e51f10", + "graphics-runs/OM-ROOT/run/events.jsonl": "c02928d8399b79c3e5252046c08ad783a55ef63504166e48c7253636f74a4b12", + "graphics-runs/OM-ROOT/run/owner.log": "03a5cbe24d52d5c0c8b5404b0854801630de7e535141d3fa0f716b39094225ac", + "graphics-runs/OM-ROOT/run/compositor.log": "451ff086ec386269d3e7d71b4bd538994896203ecef5c5fb80bf6719abc16dd1", + "graphics-runs/OM-ROOT/run/owner-closed-3494749.log": "03a5cbe24d52d5c0c8b5404b0854801630de7e535141d3fa0f716b39094225ac", + "graphics-runs/OM-ROOT/run/reference-closed-3494681.log": "6923db619273958cac59e22d47da665d26f715deaae81438c08858309710169b", + "graphics-runs/OM-ROOT/run/filler0-closed-3494717.log": "fa7754fcaf73f05fda9473ca6cceeca8519118f88cbbceb2e90622cf638b45a0", + "graphics-runs/OM-ROOT/run/H2-reference1.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-ROOT/run/H2-reference2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-ROOT/run/oom-pre-H1.png": "c8d50e1a0e52074bf595a82a56d5db9f1790cf0cfd7e510c32ceceeba4295802", + "graphics-runs/OM-ROOT/run/oom-pre-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-ROOT/run/oom-post-H1.png": "c8d50e1a0e52074bf595a82a56d5db9f1790cf0cfd7e510c32ceceeba4295802", + "graphics-runs/OM-ROOT/run/oom-post-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-ROOT/run/oom-final-H1.png": "b3897b09ce71283b2c2ce13faa09f0431352d8c52c28de21f0cfce376ed66ff9", + "graphics-runs/OM-ROOT/run/oom-final-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-ROOT/run/oom-measurements.json": "63f158c4c0a293d36f2681238b48491b53fdb9a86e18976d7d2a2c391d291833", + "graphics-runs/OM-ROOT/run/oom-availability-live.json": "4015b0b7d366028b360e831100abfdd66d44ebfcd438744f917a09e348ea4968", + "graphics-runs/OM-ROOT/run/oom-rootA-post-input.json": "b5cb544247a8a8a80df6f24b2086a540fdaaadb8551d94964817ab3606a6c0bf", + "graphics-runs/OM-NESTED/run/outcome.json": "287ab59fb71a401df92b43f63976190913c1b4e313624863a2bd87195077294e", + "graphics-runs/OM-NESTED/run/runtime-identity.json": "be908a665bc604fb74e238ebf83583b5c1be93d0d12410e1f368a0004b885042", + "graphics-runs/OM-NESTED/run/events.jsonl": "44a209ed9a5d202460d2f14e93f303e0bd150234b17db3949a49bbd70078b7de", + "graphics-runs/OM-NESTED/run/owner.log": "db671e81532c906361843c0943af4122ff8b97c7657bc175f953f01b7d9afa5c", + "graphics-runs/OM-NESTED/run/compositor.log": "ec3b767b0f015a21cbe54a5d3afae28923e34a87a1418bd64381fe88c8bba18e", + "graphics-runs/OM-NESTED/run/owner-closed-3497605.log": "db671e81532c906361843c0943af4122ff8b97c7657bc175f953f01b7d9afa5c", + "graphics-runs/OM-NESTED/run/reference-closed-3497545.log": "e3fde099dbbb645dd3df20664ae75f2e62688534fdcb67882c9dd07f77064f98", + "graphics-runs/OM-NESTED/run/filler0-closed-3497579.log": "8869d75d7057c1a098d06467f39b0f78e3fadd16fa0ab215db01a1c09bc5bb0d", + "graphics-runs/OM-NESTED/run/H2-reference1.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-NESTED/run/H2-reference2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-NESTED/run/oom-pre-H1.png": "35072322e2a22c1fd73e20c67593080266df0fe42b7b6320808f17fb47f98250", + "graphics-runs/OM-NESTED/run/oom-pre-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-NESTED/run/oom-post-H1.png": "35072322e2a22c1fd73e20c67593080266df0fe42b7b6320808f17fb47f98250", + "graphics-runs/OM-NESTED/run/oom-post-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-NESTED/run/oom-final-H1.png": "b3897b09ce71283b2c2ce13faa09f0431352d8c52c28de21f0cfce376ed66ff9", + "graphics-runs/OM-NESTED/run/oom-final-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/OM-NESTED/run/oom-measurements.json": "27852bd2945ad9f9b0cb6aec758ab6d5dfd195a5b604f297c0f7033e56ac2424", + "graphics-runs/OM-NESTED/run/oom-availability-live.json": "301511edc8dd1a8f1df0b62f48c6f24cf8b0f01e9de155c88aea042377e1c522", + "graphics-runs/OM-NESTED/run/oom-rootA-post-input.json": "e5f76ffe982b56eb12e468719723bb6ff298a7da2afb8e30cb8578ceb0052996" + }, + "tests_receipt_sha256": "f026a1fa3fe6f2a8471de4ee9693a70a807b3ed79cd52dd26f5651ed52f582b6", + "probe_sha256": "fdcca6d786067f0bd91d3c728e4db7926e23e87c1c104ae3cb8d8295756a7a7d", + "probe_causality": "BOUNDED_PLAUSIBLE_EXPLANATION; original FS errno NOT_OBSERVED", + "offline_revalidation": "PASS raw events, exact RGB, native/wire validators, camera4 stages, closures, availability;6 negative mutations rejected", + "findings": [], + "limitations": [ + "ATOMIC_GENERATION NOT_PROVEN", + "COMPLETE_DAMAGE NOT_PROVEN", + "NATIVE_BUFFER_IDENTITY NOT_PROVEN", + "GPU_COMPLETION NOT_PROVEN", + "OOM_PRODUCTION_POLICY UNDECIDED" + ], + "notes_sha256": "e87720c5b8f356a8e9449550ea8615606ddde6384f00b936c3b056fa469e2c20", + "reviewer_runtime": "NOT_RUN", + "source_edit": "NOT_RUN", + "commit_push": "NOT_RUN" +} diff --git a/docs/design/evidence/step20c-native-closure/offline-validation.json b/docs/design/evidence/step20c-native-closure/offline-validation.json new file mode 100644 index 0000000..b7ee907 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/offline-validation.json @@ -0,0 +1,306 @@ +{ + "commands": [ + { + "argv": [ + "/usr/bin/python", + "-B", + "-m", + "unittest", + "discover", + "-s", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/offline", + "-p", + "test_followup.py", + "-v" + ], + "environment": { + "CCACHE_DIR": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/ccache", + "PYTHONPYCACHEPREFIX": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/pycache", + "TEMP": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/scratch", + "TMP": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/scratch", + "TMPDIR": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/scratch", + "XDG_CACHE_HOME": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/cache", + "XDG_DATA_HOME": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/data" + }, + "failures": 0, + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/graphics-unittest-final.log", + "log_sha256": "0004a9fefa464ef8eee43158693308273c356e66f98586dffb4e26fd198b28d3", + "rc": 0, + "tests_run": 66 + }, + { + "argv": [ + "/usr/bin/python", + "-B", + "-c", + "import validate_offline; historical_replay(oldLAB/graphics-runs/C7/run)" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/historical-c7-final.log", + "log_sha256": "22b1529be7b3e37c1d64dd78141b35e2bf97745a9b6c4ea24d88dc84f9f3f538", + "negative_stale_camera_rejected": true, + "rc": 0, + "status": "PASS" + }, + { + "argv": [ + "git", + "diff", + "--check" + ], + "log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-delta/git-diff-check.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "rc": 0 + } + ], + "failures": 0, + "gpu_and_native": "NOT_REPEATED_UNCHANGED_PRIOR_VALIDATION", + "historical_C7": { + "inputs": { + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/graphics-runs/C7/run/migrated-H2-snapshot.json": "31edf269d83ad461ec6bb1e85402bf517bfea553f6d73eccde583e8943da3b97", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/graphics-runs/C7/run/resized-back-snapshot.json": "21581fe0065e08bbcf9763487530f5498c5db36217ec655075ff59773c0959fe" + }, + "negative_stale_camera_rejected": true, + "positive": { + "cell_width": 640, + "children": [ + 8, + 9, + 10 + ], + "clamp": "PASS", + "content_width": 1920, + "expected_scroll": 1120, + "focused": 10, + "gap": 0, + "geometry_status": "IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE", + "max_scroll": 1120, + "min_scroll": 0, + "minimum_width": 640, + "mutation": "migration", + "output": "HEADLESS-2", + "resize_candidate": 800.0, + "scroll": 1120.0, + "viewport": [ + 0, + 0, + 800, + 600 + ], + "workspace_id": 6 + }, + "scope": "historical IPC replay only; no runtime upgrade", + "status": "PASS" + }, + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_digest_after": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_digest_before": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "source_files_count": 49, + "source_files_sha256_after": { + "README.md": "3d4e66160ba6191a3ec381f7104b37f8bda6e378f6001110d6048fd79ad25515", + "gpu/README.md": "83e333c6718ef05c9009ac8340c564f39094abb8353393576f9464ea2a70042c", + "gpu/clients-g2.c": "66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7", + "gpu/freeze.py": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "gpu/g2_gl.h": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "gpu/g2_native.h": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "gpu/g3-admission.patch": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "gpu/protocol.py": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "gpu/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "gpu/reproduce.py": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "gpu/scenario.py": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "gpu/test-targeted.py": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "gpu/test_begin.py": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "gpu/test_gl.c": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "gpu/test_mutations.py": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "gpu/test_native.c": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "gpu/test_protocol.py": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "gpu/validate_source.py": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "graphics/README.md": "304c6dc3feaf7d48d7e1bddd0cae427bea8a75fe93a5c027f2defd45c2e9382a", + "graphics/cases.py": "1c5bc411a4fb0572955bdefa5fb67032c682a72788bb92d6d9a390cb7055bcc4", + "graphics/clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "graphics/clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "graphics/clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "graphics/clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "graphics/clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "graphics/clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "graphics/engine.py": "34a322aad76200a4ef497305ad47b6aeff7f3944fbc2500381e50cd9040c2bc4", + "graphics/freeze.py": "d41cf96717341a64c258d418043a5da5fdb35baa244231c5b0fca2199c8e60ca", + "graphics/fullscreen.py": "601388834f049c2baa0d4fee993437b0fe5b024abc6d07ea3bda27e3199b9953", + "graphics/gate.py": "33d2f61d3d75300774185c15c4426fafdbad803bf247718c640649643875b8ee", + "graphics/geometry.py": "76a80e98887d3a3707ee942b48a49c1850cdc4aeeb28237d9fea33fa3470fb12", + "graphics/gpu_handler.py": "9f8a1cb7bbb0dccea7d84f96bdd2ccdab9937030958c22ca1b996f99e0ab676c", + "graphics/ipc_predicates.py": "5354ba53e1b3f8d0026f4475beebee58d093a81db7d26304cad7085ae3efd352", + "graphics/lifecycle.py": "df0c11027b3b8b0ef371ddb6ec4bcfd28dac09835644d0c3ce6e273d5e565e92", + "graphics/model.py": "a578fc589fb092dae3ccdcf8c4eec12a97e515f721decc4c968078dedcb2367a", + "graphics/offline/test_followup.py": "8316d7804ef2afe88d6fb6e6ab07410481217d5daab23efbaf399bfb84850df4", + "graphics/oom.py": "bf4a07f0337be34c548a0f1752782b36b684bdf4e249f9f7bf757b4fb47c7607", + "graphics/oom_handler.py": "37c5852ad8e5a084b58ad1a5ae842445096eb104f59059b493687792f3e68d6a", + "graphics/pixels.py": "d315ddad978238ffbf1c8e4d712d4608ba23564703332d814f627f57f7b6e7f5", + "graphics/plans.py": "5fe84f4024aa0a8fa0d17a86343cd15d96131d30df3610094b86cfa0d045374c", + "graphics/predicates.py": "abe0c4c5b3b6d533d2714e13d317d68cd02e1f1c6180d2972ff94d00c9069cd1", + "graphics/prepare.py": "bf17e0019f5fa56b4c4c3b86d9a92ef1a6d1526fda64741cc2b5b62fc4a7f4a8", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "graphics/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "graphics/run.py": "27891c4e499457bfedceed623679addddb15e722259d976716e268800c72fb8f", + "graphics/validate_offline.py": "15e231eae78e38b38fa0edbec73b2f27440191f7c581f7eb9e4e413113473b1e", + "graphics/validators.py": "a7a19322bfeff1c1122e50f351aebfa46f4b144eb5b795c4389eae5c934e4b1d", + "graphics/wire-fixture.txt": "c6c9fc072f78fbcf9cfdeebcc5becdbdfb61824352495a0e767d7d390267f640" + }, + "source_files_sha256_before": { + "README.md": "3d4e66160ba6191a3ec381f7104b37f8bda6e378f6001110d6048fd79ad25515", + "gpu/README.md": "83e333c6718ef05c9009ac8340c564f39094abb8353393576f9464ea2a70042c", + "gpu/clients-g2.c": "66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7", + "gpu/freeze.py": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "gpu/g2_gl.h": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "gpu/g2_native.h": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "gpu/g3-admission.patch": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "gpu/protocol.py": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "gpu/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "gpu/reproduce.py": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "gpu/scenario.py": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "gpu/test-targeted.py": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "gpu/test_begin.py": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "gpu/test_gl.c": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "gpu/test_mutations.py": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "gpu/test_native.c": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "gpu/test_protocol.py": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "gpu/validate_source.py": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "graphics/README.md": "304c6dc3feaf7d48d7e1bddd0cae427bea8a75fe93a5c027f2defd45c2e9382a", + "graphics/cases.py": "1c5bc411a4fb0572955bdefa5fb67032c682a72788bb92d6d9a390cb7055bcc4", + "graphics/clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "graphics/clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "graphics/clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "graphics/clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "graphics/clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "graphics/clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "graphics/engine.py": "34a322aad76200a4ef497305ad47b6aeff7f3944fbc2500381e50cd9040c2bc4", + "graphics/freeze.py": "d41cf96717341a64c258d418043a5da5fdb35baa244231c5b0fca2199c8e60ca", + "graphics/fullscreen.py": "601388834f049c2baa0d4fee993437b0fe5b024abc6d07ea3bda27e3199b9953", + "graphics/gate.py": "33d2f61d3d75300774185c15c4426fafdbad803bf247718c640649643875b8ee", + "graphics/geometry.py": "76a80e98887d3a3707ee942b48a49c1850cdc4aeeb28237d9fea33fa3470fb12", + "graphics/gpu_handler.py": "9f8a1cb7bbb0dccea7d84f96bdd2ccdab9937030958c22ca1b996f99e0ab676c", + "graphics/ipc_predicates.py": "5354ba53e1b3f8d0026f4475beebee58d093a81db7d26304cad7085ae3efd352", + "graphics/lifecycle.py": "df0c11027b3b8b0ef371ddb6ec4bcfd28dac09835644d0c3ce6e273d5e565e92", + "graphics/model.py": "a578fc589fb092dae3ccdcf8c4eec12a97e515f721decc4c968078dedcb2367a", + "graphics/offline/test_followup.py": "8316d7804ef2afe88d6fb6e6ab07410481217d5daab23efbaf399bfb84850df4", + "graphics/oom.py": "bf4a07f0337be34c548a0f1752782b36b684bdf4e249f9f7bf757b4fb47c7607", + "graphics/oom_handler.py": "37c5852ad8e5a084b58ad1a5ae842445096eb104f59059b493687792f3e68d6a", + "graphics/pixels.py": "d315ddad978238ffbf1c8e4d712d4608ba23564703332d814f627f57f7b6e7f5", + "graphics/plans.py": "5fe84f4024aa0a8fa0d17a86343cd15d96131d30df3610094b86cfa0d045374c", + "graphics/predicates.py": "abe0c4c5b3b6d533d2714e13d317d68cd02e1f1c6180d2972ff94d00c9069cd1", + "graphics/prepare.py": "bf17e0019f5fa56b4c4c3b86d9a92ef1a6d1526fda64741cc2b5b62fc4a7f4a8", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "graphics/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "graphics/run.py": "27891c4e499457bfedceed623679addddb15e722259d976716e268800c72fb8f", + "graphics/validate_offline.py": "15e231eae78e38b38fa0edbec73b2f27440191f7c581f7eb9e4e413113473b1e", + "graphics/validators.py": "a7a19322bfeff1c1122e50f351aebfa46f4b144eb5b795c4389eae5c934e4b1d", + "graphics/wire-fixture.txt": "c6c9fc072f78fbcf9cfdeebcc5becdbdfb61824352495a0e767d7d390267f640" + }, + "source_modes_after": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "source_modes_before": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "status": "PASS", + "tests_run": 66, + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-delta-initial-review.json b/docs/design/evidence/step20c-native-closure/postcampaign-delta-initial-review.json new file mode 100644 index 0000000..ea453f0 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-delta-initial-review.json @@ -0,0 +1,43 @@ +{ + "schema": "independent-postcampaign-offline-delta-review-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "author": "codex-postcampaign-offline-repair", + "independent": true, + "decision": "CORRECTION_REQUIRED", + "manifest_sha256": "f13da7228c0c9f61cdefa23fa80f3dea3322cb8551edb62f459aa69a1ba7c20f", + "source_digest": "96d02f7f90f46fcd4572850b826a894c02d0061f2014d1b2c257c43ed3577897", + "source_files": 50, + "source_modes": "all0644", + "implementation": "ACCEPTED OFFLINE_ONLY", + "tests_run": 73, + "failures": 0, + "skipped": 0, + "tests_log_sha256": "87c65b39ada324e916898340d1db474eaea7b42e88aaef6b3e571b55b75e02c8", + "findings": [ + { + "id": "POST-DOC-1", + "severity": "P2", + "file": "gpu/README.md", + "symbol": "Source reconstruction and offline commands", + "line": 103, + "exact_requirement": "Parent bounded review explicitly requires README commands usable with SMX_LAB/TMPDIR and seven private temp/cache variables; new helper must be replayable from source kit", + "evidence": "New test_tmpdir.py reads os.environ[SMX_LAB], while README env-i example sets the seven temp/cache variables but no SMX_LAB; documented test-targeted.py does not invoke test_tmpdir.py and no README command names the new test. Following documented checks does not exercise the new repair; directly adding its command to the shown env fails missing SMX_LAB.", + "smallest_correction": "Add a bounded OFFLINE_ONLY command block exporting SMX_LAB=$LAB and all seven temp/cache vars, then python -B test_tmpdir.py (and graphics identity tests as appropriate). State exact extracted C-helper scope and no client/Wayland runtime, budget closed. No source implementation change needed." + } + ], + "gpu_freeze_sha256": "230f131aae824dfafb938f38f77aad08d225ea2fa5496ee65a3b45f3062e8df1", + "tester_receipt_sha256": "5905e2002041148d7a104e195132f56c8b4152952547be4ed0985da4eacc3852", + "repair_receipt_sha256": "eae6bb85b21cbd6876e8340384314c21749040cadad89b313eae4b2d9bf7e7a4", + "historical_executed_source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "historical_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "ledger_sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c", + "old_client_sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "new_offline_only_client_sha256": "bfc7d47596d5f69b68cd7000e257c7819949081ee7c6d66635eb9accf9ad7f36", + "historical_G3_binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "previous_result_reviews": "UNCHANGED", + "native_runtime_qualification": "NOT_RUN", + "new_runtime_authorized": false, + "reviewer_actions": "offline tests and exclusive review artifacts only; no source edits/buildMeson/stage/Gitmutation", + "notes_sha256": "4df662538ff6faea30d16934ebd27830a3c055441e724e4e159919820712531a" +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-delta-review.json b/docs/design/evidence/step20c-native-closure/postcampaign-delta-review.json new file mode 100644 index 0000000..2ad192b --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-delta-review.json @@ -0,0 +1,40 @@ +{ + "schema": "independent-postcampaign-doc-recheck-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "author": "codex-postcampaign-offline-repair", + "independent": true, + "decision": "ACCEPTED", + "scope": "POST-DOC-1 only; all code/tests unchanged from already reviewed postcampaign delta", + "manifest_sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080", + "source_digest": "14e24501658f1c4c29e7d8c06db71ed07a77b8e80e283453420bbc5b3e2f03c8", + "gpu_freeze_sha256": "a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb", + "source_files": 50, + "source_modes": "all0644", + "changed_since_previous_freeze": [ + "gpu/README.md" + ], + "closed_findings": [ + "POST-DOC-1" + ], + "findings": [], + "previous_manifest_sha256": "f13da7228c0c9f61cdefa23fa80f3dea3322cb8551edb62f459aa69a1ba7c20f", + "previous_review_sha256": "bc188f87b012c8acdb5c5a8cdb4ca7db0f0266d9597d6c170ec24ba7615d5afa", + "tests": { + "previous_tests_run": 73, + "previous_failures": 0, + "reexecuted_this_recheck": false, + "basis": "code/test byte equality; prior independent73PASS", + "tester_receipt_sha256": "5905e2002041148d7a104e195132f56c8b4152952547be4ed0985da4eacc3852" + }, + "README_command": "PASS explicit env-i SMX_LAB plus seven private temp/cache vars and python-B test_tmpdir.py; exact helper-only scope", + "ledger_sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c", + "historical_runtime_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "historical_result_reviews": "UNCHANGED", + "runtime": "NOT_RUN", + "admission": "NOT_AUTHORIZED", + "source_edit": "NOT_RUN", + "build_stage": "NOT_RUN", + "git_mutation": "NOT_RUN", + "notes_sha256": "a8c957daca696345e055f353235149233f2447206d3b6c1dbef86d2133e6d34e" +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-gpu-manifest-final.json b/docs/design/evidence/step20c-native-closure/postcampaign-gpu-manifest-final.json new file mode 100644 index 0000000..61e1412 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-gpu-manifest-final.json @@ -0,0 +1,86 @@ +{ + "schema": "G3-relative-source-freeze-v1", + "status": "EXPERIMENTAL_SOURCE_ONLY", + "review": "PENDING_INDEPENDENT", + "build": "NOT_RUN", + "runtime": "NOT_RUN", + "no_inherited_G2_qualification": true, + "files": { + "README.md": { + "sha256": "c297ae81c497bd5ed1704a1f9a0a8302e1010b5da956e2cba54a7692f04f491a", + "mode": "0o644" + }, + "clients-g2.c": { + "sha256": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf", + "mode": "0o644" + }, + "freeze.py": { + "sha256": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "mode": "0o644" + }, + "g2_gl.h": { + "sha256": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "mode": "0o644" + }, + "g2_native.h": { + "sha256": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "mode": "0o644" + }, + "g3-admission.patch": { + "sha256": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "mode": "0o644" + }, + "protocol.py": { + "sha256": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "mode": "0o644" + }, + "protocols/wlr-layer-shell-unstable-v1.xml": { + "sha256": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "mode": "0o644" + }, + "protocols/xdg-shell.xml": { + "sha256": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "mode": "0o644" + }, + "reproduce.py": { + "sha256": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "mode": "0o644" + }, + "scenario.py": { + "sha256": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "mode": "0o644" + }, + "test-targeted.py": { + "sha256": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "mode": "0o644" + }, + "test_begin.py": { + "sha256": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "mode": "0o644" + }, + "test_gl.c": { + "sha256": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "mode": "0o644" + }, + "test_mutations.py": { + "sha256": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "mode": "0o644" + }, + "test_native.c": { + "sha256": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "mode": "0o644" + }, + "test_protocol.py": { + "sha256": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "mode": "0o644" + }, + "test_tmpdir.py": { + "sha256": "6326f087c3f03f33b5c525bbd82381b94b13d4cbcfad5347bcf25d79c02cdc6d", + "mode": "0o644" + }, + "validate_source.py": { + "sha256": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "mode": "0o644" + } + } +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-gpu-manifest.json b/docs/design/evidence/step20c-native-closure/postcampaign-gpu-manifest.json new file mode 100644 index 0000000..21b5804 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-gpu-manifest.json @@ -0,0 +1,86 @@ +{ + "schema": "G3-relative-source-freeze-v1", + "status": "EXPERIMENTAL_SOURCE_ONLY", + "review": "PENDING_INDEPENDENT", + "build": "NOT_RUN", + "runtime": "NOT_RUN", + "no_inherited_G2_qualification": true, + "files": { + "README.md": { + "sha256": "a569fad78ed04658aed422c6acac529e17cdb8c7179042561acaaf244d531981", + "mode": "0o644" + }, + "clients-g2.c": { + "sha256": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf", + "mode": "0o644" + }, + "freeze.py": { + "sha256": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "mode": "0o644" + }, + "g2_gl.h": { + "sha256": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "mode": "0o644" + }, + "g2_native.h": { + "sha256": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "mode": "0o644" + }, + "g3-admission.patch": { + "sha256": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "mode": "0o644" + }, + "protocol.py": { + "sha256": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "mode": "0o644" + }, + "protocols/wlr-layer-shell-unstable-v1.xml": { + "sha256": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "mode": "0o644" + }, + "protocols/xdg-shell.xml": { + "sha256": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "mode": "0o644" + }, + "reproduce.py": { + "sha256": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "mode": "0o644" + }, + "scenario.py": { + "sha256": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "mode": "0o644" + }, + "test-targeted.py": { + "sha256": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "mode": "0o644" + }, + "test_begin.py": { + "sha256": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "mode": "0o644" + }, + "test_gl.c": { + "sha256": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "mode": "0o644" + }, + "test_mutations.py": { + "sha256": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "mode": "0o644" + }, + "test_native.c": { + "sha256": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "mode": "0o644" + }, + "test_protocol.py": { + "sha256": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "mode": "0o644" + }, + "test_tmpdir.py": { + "sha256": "6326f087c3f03f33b5c525bbd82381b94b13d4cbcfad5347bcf25d79c02cdc6d", + "mode": "0o644" + }, + "validate_source.py": { + "sha256": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "mode": "0o644" + } + } +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-offline-validation.json b/docs/design/evidence/step20c-native-closure/postcampaign-offline-validation.json new file mode 100644 index 0000000..0dd5009 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-offline-validation.json @@ -0,0 +1,207 @@ +{ + "client_execution": "NOT_RUN", + "generated_source_artifacts": [], + "git_checks": [ + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "diff", + "--check" + ], + "name": "git-diff-check", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/git-diff-check.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/git-diff-check.stdout", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "status", + "--short", + "--branch" + ], + "name": "git-status", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/git-status.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/git-status.stdout", + "stdout_sha256": "e24e148aea3e1c3a0b3fb8d27e6033f4b5b6ddeff78f1867df6df9f9320fc922" + } + ], + "gpu_v4_freeze_sha256": "230f131aae824dfafb938f38f77aad08d225ea2fa5496ee65a3b45f3062e8df1", + "headless_ipc": "NOT_RUN", + "historical_bindings": { + "gpu_v4_freeze_sha256": { + "path": "g3-source-freeze-v4-postcampaign.json", + "sha256": "230f131aae824dfafb938f38f77aad08d225ea2fa5496ee65a3b45f3062e8df1" + }, + "historical_g3_binary_sha256": { + "path": "builds/g3-mosaic/sway/swayfx-mosaic", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658" + }, + "ledger_sha256": { + "path": "native-closure-budget.json", + "sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c" + }, + "new_offline_gpu_client_sha256": { + "path": "postcampaign-repair/client-build/clients-g2-offline-only", + "sha256": "bfc7d47596d5f69b68cd7000e257c7819949081ee7c6d66635eb9accf9ad7f36" + }, + "old_gpu_client_sha256": { + "path": "gpu-client-guard/clients-g2", + "sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4" + }, + "postcampaign_repair_receipt_sha256": { + "path": "postcampaign-repair/receipt.json", + "sha256": "eae6bb85b21cbd6876e8340384314c21749040cadad89b313eae4b2d9bf7e7a4" + }, + "source_manifest_v2_sha256": { + "path": "followup-work/source-manifest-v2.json", + "sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + } + }, + "independent_review": "NOT_PROVEN", + "ledger": { + "capture_actions": 32, + "capture_limit": 110, + "mutated": false, + "runs": [ + { + "id": "FS-P", + "status": "COMPLETED" + }, + { + "id": "DY-C", + "status": "COMPLETED" + }, + { + "id": "OM-ROOT", + "status": "COMPLETED" + }, + { + "id": "OM-NESTED", + "status": "COMPLETED" + }, + { + "id": "GPU-G3", + "status": "COMPLETED" + } + ], + "runs_count": 5, + "sha256_before_after": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c" + }, + "meson_build": "NOT_RUN", + "new_client_executed": false, + "new_client_sha256": "bfc7d47596d5f69b68cd7000e257c7819949081ee7c6d66635eb9accf9ad7f36", + "production_authorized": false, + "qualification": "offline tests do not qualify native runtime; fullscreen identity guard remains mandatory and fail-closed", + "runtime": "NOT_RUN", + "scope": "POSTCAMPAIGN_OFFLINE_ONLY", + "source_before_after_identical": true, + "source_digest": "96d02f7f90f46fcd4572850b826a894c02d0061f2014d1b2c257c43ed3577897", + "source_file_count": 50, + "source_manifest": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v3-postcampaign.json", + "source_manifest_sha256": "f13da7228c0c9f61cdefa23fa80f3dea3322cb8551edb62f459aa69a1ba7c20f", + "source_modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/test_tmpdir.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "stage": "NOT_RUN", + "status": "PASS", + "tests": { + "commands": [ + { + "argv": [ + "python3", + "-B", + "-m", + "unittest", + "discover", + "-s", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/offline", + "-p", + "test_followup.py", + "-v" + ], + "name": "graphics-offline", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/graphics-offline.stderr", + "stderr_sha256": "faea7a2f98c2c64681ea3d21bfd3afedde778525d7c1d3182c876513d4411d61", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/graphics-offline.stdout", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "python3", + "-B", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/test_tmpdir.py" + ], + "name": "gpu-tmpdir-c17", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/gpu-tmpdir-c17.stderr", + "stderr_sha256": "e45ba36d4cce054829f9b600b5473216b610891c4ad62da430316c662aaad084", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/tester-postcampaign/gpu-tmpdir-c17.stdout", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + ], + "failures": 0, + "gpu_tmpdir_c17": 4, + "graphics_offline": 69, + "tests_run": 73 + }, + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-repair.json b/docs/design/evidence/step20c-native-closure/postcampaign-repair.json new file mode 100644 index 0000000..75ab73d --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-repair.json @@ -0,0 +1,309 @@ +{ + "commands": [ + { + "argv": [ + "wayland-scanner", + "client-header", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/xdg-shell-client.h" + ], + "name": "xdg-shell-header", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/protocols/xdg-shell.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/xdg-shell-protocol.c" + ], + "name": "xdg-shell-code", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "wayland-scanner", + "client-header", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/layer-shell-client.h" + ], + "name": "layer-shell-header", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "wayland-scanner", + "private-code", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/protocols/wlr-layer-shell-unstable-v1.xml", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/layer-shell-protocol.c" + ], + "name": "layer-shell-code", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "pkg-config", + "--cflags", + "--libs", + "wayland-client" + ], + "name": "wayland-pkgconfig", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "daeb877303c6117ce9622ed510740569c724d685d27e3401d358afb0ab932236" + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "-Wno-unused-parameter", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build", + "-fsyntax-only", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c", + "-lwayland-client", + "-lm" + ], + "name": "client-syntax", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "-Wno-unused-parameter", + "-I", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/xdg-shell-protocol.c", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/layer-shell-protocol.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/clients-g2-offline-only", + "-lwayland-client", + "-lm" + ], + "name": "client-compile", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "diff", + "--check" + ], + "name": "diff-check", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "status", + "--short", + "--branch" + ], + "name": "git-status", + "rc": 0, + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout_sha256": "e24e148aea3e1c3a0b3fb8d27e6033f4b5b6ddeff78f1867df6df9f9320fc922" + } + ], + "commit": "NOT_RUN", + "deltas": { + "README.md": { + "after": "fce1ac7d7a430d94654270b88775b8720f8c5caf998f2320dd9e55c48c486b7f", + "before": "3d4e66160ba6191a3ec381f7104b37f8bda6e378f6001110d6048fd79ad25515" + }, + "gpu/README.md": { + "after": "a569fad78ed04658aed422c6acac529e17cdb8c7179042561acaaf244d531981", + "before": "83e333c6718ef05c9009ac8340c564f39094abb8353393576f9464ea2a70042c" + }, + "gpu/clients-g2.c": { + "after": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf", + "before": "66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7" + }, + "gpu/test_tmpdir.py": { + "after": "6326f087c3f03f33b5c525bbd82381b94b13d4cbcfad5347bcf25d79c02cdc6d", + "before": null + }, + "graphics/engine.py": { + "after": "defb24b3ffb1973aefeda1928a59455bf3f8586b4bee209d118f9db8e17d8479", + "before": "34a322aad76200a4ef497305ad47b6aeff7f3944fbc2500381e50cd9040c2bc4" + }, + "graphics/offline/test_followup.py": { + "after": "7d3fdd228651960b044f82d863eebede181da791e3f7ceab7a2194d7d3cee10f", + "before": "8316d7804ef2afe88d6fb6e6ab07410481217d5daab23efbaf399bfb84850df4" + } + }, + "headless": "NOT_RUN", + "historical_inputs": { + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/gpu-client-guard/clients-g2": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/native-closure-budget.json": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c" + }, + "historical_inputs_unchanged": true, + "ledger_unchanged": true, + "meson_build": "NOT_RUN", + "new_client": { + "executed": false, + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/client-build/clients-g2-offline-only", + "sha256": "bfc7d47596d5f69b68cd7000e257c7819949081ee7c6d66635eb9accf9ad7f36", + "source_sha256": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf" + }, + "push": "NOT_RUN", + "runtime": "NOT_RUN", + "scope": "POSTCAMPAIGN_OFFLINE_ONLY; no run authorized", + "source_digest_after": "96d02f7f90f46fcd4572850b826a894c02d0061f2014d1b2c257c43ed3577897", + "source_digest_before": "96d02f7f90f46fcd4572850b826a894c02d0061f2014d1b2c257c43ed3577897", + "source_files": { + "README.md": "fce1ac7d7a430d94654270b88775b8720f8c5caf998f2320dd9e55c48c486b7f", + "gpu/README.md": "a569fad78ed04658aed422c6acac529e17cdb8c7179042561acaaf244d531981", + "gpu/clients-g2.c": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf", + "gpu/freeze.py": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "gpu/g2_gl.h": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "gpu/g2_native.h": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "gpu/g3-admission.patch": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "gpu/protocol.py": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "gpu/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "gpu/reproduce.py": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "gpu/scenario.py": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "gpu/test-targeted.py": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "gpu/test_begin.py": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "gpu/test_gl.c": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "gpu/test_mutations.py": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "gpu/test_native.c": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "gpu/test_protocol.py": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "gpu/test_tmpdir.py": "6326f087c3f03f33b5c525bbd82381b94b13d4cbcfad5347bcf25d79c02cdc6d", + "gpu/validate_source.py": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "graphics/README.md": "304c6dc3feaf7d48d7e1bddd0cae427bea8a75fe93a5c027f2defd45c2e9382a", + "graphics/cases.py": "1c5bc411a4fb0572955bdefa5fb67032c682a72788bb92d6d9a390cb7055bcc4", + "graphics/clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "graphics/clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "graphics/clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "graphics/clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "graphics/clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "graphics/clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "graphics/engine.py": "defb24b3ffb1973aefeda1928a59455bf3f8586b4bee209d118f9db8e17d8479", + "graphics/freeze.py": "d41cf96717341a64c258d418043a5da5fdb35baa244231c5b0fca2199c8e60ca", + "graphics/fullscreen.py": "601388834f049c2baa0d4fee993437b0fe5b024abc6d07ea3bda27e3199b9953", + "graphics/gate.py": "33d2f61d3d75300774185c15c4426fafdbad803bf247718c640649643875b8ee", + "graphics/geometry.py": "76a80e98887d3a3707ee942b48a49c1850cdc4aeeb28237d9fea33fa3470fb12", + "graphics/gpu_handler.py": "9f8a1cb7bbb0dccea7d84f96bdd2ccdab9937030958c22ca1b996f99e0ab676c", + "graphics/ipc_predicates.py": "5354ba53e1b3f8d0026f4475beebee58d093a81db7d26304cad7085ae3efd352", + "graphics/lifecycle.py": "df0c11027b3b8b0ef371ddb6ec4bcfd28dac09835644d0c3ce6e273d5e565e92", + "graphics/model.py": "a578fc589fb092dae3ccdcf8c4eec12a97e515f721decc4c968078dedcb2367a", + "graphics/offline/test_followup.py": "7d3fdd228651960b044f82d863eebede181da791e3f7ceab7a2194d7d3cee10f", + "graphics/oom.py": "bf4a07f0337be34c548a0f1752782b36b684bdf4e249f9f7bf757b4fb47c7607", + "graphics/oom_handler.py": "37c5852ad8e5a084b58ad1a5ae842445096eb104f59059b493687792f3e68d6a", + "graphics/pixels.py": "d315ddad978238ffbf1c8e4d712d4608ba23564703332d814f627f57f7b6e7f5", + "graphics/plans.py": "5fe84f4024aa0a8fa0d17a86343cd15d96131d30df3610094b86cfa0d045374c", + "graphics/predicates.py": "abe0c4c5b3b6d533d2714e13d317d68cd02e1f1c6180d2972ff94d00c9069cd1", + "graphics/prepare.py": "bf17e0019f5fa56b4c4c3b86d9a92ef1a6d1526fda64741cc2b5b62fc4a7f4a8", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "graphics/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "graphics/run.py": "27891c4e499457bfedceed623679addddb15e722259d976716e268800c72fb8f", + "graphics/validate_offline.py": "15e231eae78e38b38fa0edbec73b2f27440191f7c581f7eb9e4e413113473b1e", + "graphics/validators.py": "a7a19322bfeff1c1122e50f351aebfa46f4b144eb5b795c4389eae5c934e4b1d", + "graphics/wire-fixture.txt": "c6c9fc072f78fbcf9cfdeebcc5becdbdfb61824352495a0e767d7d390267f640" + }, + "source_freeze": "NOT_WRITTEN; parent owns new freeze/review", + "source_modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/test_tmpdir.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "stage": "NOT_RUN", + "status": "PASS", + "tests": { + "errors": 0, + "failures": 0, + "harness_compile_argv": [ + "cc", + "-std=c17", + "-O2", + "-Wall", + "-Wextra", + "-Werror", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/scratch/g3-path-uwd7gg9m/guard.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/postcampaign-repair/scratch/g3-path-uwd7gg9m/guard" + ], + "run": 73, + "skips": 0, + "status": "PASS" + } +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-source-manifest-final.json b/docs/design/evidence/step20c-native-closure/postcampaign-source-manifest-final.json new file mode 100644 index 0000000..3ca5b3b --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-source-manifest-final.json @@ -0,0 +1,575 @@ +{ + "author": "codex-postcampaign-offline-repair", + "files": { + "README.md": "fce1ac7d7a430d94654270b88775b8720f8c5caf998f2320dd9e55c48c486b7f", + "gpu/README.md": "c297ae81c497bd5ed1704a1f9a0a8302e1010b5da956e2cba54a7692f04f491a", + "gpu/clients-g2.c": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf", + "gpu/freeze.py": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "gpu/g2_gl.h": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "gpu/g2_native.h": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "gpu/g3-admission.patch": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "gpu/protocol.py": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "gpu/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "gpu/reproduce.py": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "gpu/scenario.py": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "gpu/test-targeted.py": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "gpu/test_begin.py": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "gpu/test_gl.c": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "gpu/test_mutations.py": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "gpu/test_native.c": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "gpu/test_protocol.py": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "gpu/test_tmpdir.py": "6326f087c3f03f33b5c525bbd82381b94b13d4cbcfad5347bcf25d79c02cdc6d", + "gpu/validate_source.py": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "graphics/README.md": "304c6dc3feaf7d48d7e1bddd0cae427bea8a75fe93a5c027f2defd45c2e9382a", + "graphics/cases.py": "1c5bc411a4fb0572955bdefa5fb67032c682a72788bb92d6d9a390cb7055bcc4", + "graphics/clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "graphics/clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "graphics/clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "graphics/clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "graphics/clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "graphics/clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "graphics/engine.py": "defb24b3ffb1973aefeda1928a59455bf3f8586b4bee209d118f9db8e17d8479", + "graphics/freeze.py": "d41cf96717341a64c258d418043a5da5fdb35baa244231c5b0fca2199c8e60ca", + "graphics/fullscreen.py": "601388834f049c2baa0d4fee993437b0fe5b024abc6d07ea3bda27e3199b9953", + "graphics/gate.py": "33d2f61d3d75300774185c15c4426fafdbad803bf247718c640649643875b8ee", + "graphics/geometry.py": "76a80e98887d3a3707ee942b48a49c1850cdc4aeeb28237d9fea33fa3470fb12", + "graphics/gpu_handler.py": "9f8a1cb7bbb0dccea7d84f96bdd2ccdab9937030958c22ca1b996f99e0ab676c", + "graphics/ipc_predicates.py": "5354ba53e1b3f8d0026f4475beebee58d093a81db7d26304cad7085ae3efd352", + "graphics/lifecycle.py": "df0c11027b3b8b0ef371ddb6ec4bcfd28dac09835644d0c3ce6e273d5e565e92", + "graphics/model.py": "a578fc589fb092dae3ccdcf8c4eec12a97e515f721decc4c968078dedcb2367a", + "graphics/offline/test_followup.py": "7d3fdd228651960b044f82d863eebede181da791e3f7ceab7a2194d7d3cee10f", + "graphics/oom.py": "bf4a07f0337be34c548a0f1752782b36b684bdf4e249f9f7bf757b4fb47c7607", + "graphics/oom_handler.py": "37c5852ad8e5a084b58ad1a5ae842445096eb104f59059b493687792f3e68d6a", + "graphics/pixels.py": "d315ddad978238ffbf1c8e4d712d4608ba23564703332d814f627f57f7b6e7f5", + "graphics/plans.py": "5fe84f4024aa0a8fa0d17a86343cd15d96131d30df3610094b86cfa0d045374c", + "graphics/predicates.py": "abe0c4c5b3b6d533d2714e13d317d68cd02e1f1c6180d2972ff94d00c9069cd1", + "graphics/prepare.py": "bf17e0019f5fa56b4c4c3b86d9a92ef1a6d1526fda64741cc2b5b62fc4a7f4a8", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "graphics/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "graphics/run.py": "27891c4e499457bfedceed623679addddb15e722259d976716e268800c72fb8f", + "graphics/validate_offline.py": "15e231eae78e38b38fa0edbec73b2f27440191f7c581f7eb9e4e413113473b1e", + "graphics/validators.py": "a7a19322bfeff1c1122e50f351aebfa46f4b144eb5b795c4389eae5c934e4b1d", + "graphics/wire-fixture.txt": "c6c9fc072f78fbcf9cfdeebcc5becdbdfb61824352495a0e767d7d390267f640" + }, + "independent_review": "NOT_PROVEN", + "limits": { + "captures": 110, + "captures_per_run": 18, + "duration_s": 150, + "runs": 8 + }, + "modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/test_tmpdir.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "plans": { + "DY-C": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "core", + "boundary": 0, + "capture_limit": 16, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "DY-C", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + }, + "FS-C": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "core", + "boundary": 0, + "capture_limit": 16, + "client": "fullscreen-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "FS-C", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "fullscreen_cross" + }, + "FS-P": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "pristine", + "boundary": 0, + "capture_limit": 12, + "client": "fullscreen-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "FS-P", + "mode": "pristine", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "fullscreen_cross" + }, + "GPU-CTRL": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "gpu", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "GPU-CTRL", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "B4 and separately reviewed GPU adapter required" + }, + "GPU-G3": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "gpu", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "GPU-G3", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "B4 and separately reviewed GPU adapter required" + }, + "OM-EXTRA": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-EXTRA", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "Distinct question, handler and additional independent review required" + }, + "OM-NESTED": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 10, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-NESTED", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + }, + "OM-ROOT": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 10, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-ROOT", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + } + }, + "runtime": "NOT_RUN", + "schema": "native-closure-source-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/postcampaign-source-manifest.json b/docs/design/evidence/step20c-native-closure/postcampaign-source-manifest.json new file mode 100644 index 0000000..1c1101e --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/postcampaign-source-manifest.json @@ -0,0 +1,575 @@ +{ + "author": "codex-postcampaign-offline-repair", + "files": { + "README.md": "fce1ac7d7a430d94654270b88775b8720f8c5caf998f2320dd9e55c48c486b7f", + "gpu/README.md": "a569fad78ed04658aed422c6acac529e17cdb8c7179042561acaaf244d531981", + "gpu/clients-g2.c": "633bb3bea0eefc40bc87647edb3d550bceefef9b319b302e893ebd225e79addf", + "gpu/freeze.py": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "gpu/g2_gl.h": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "gpu/g2_native.h": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "gpu/g3-admission.patch": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "gpu/protocol.py": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "gpu/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "gpu/reproduce.py": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "gpu/scenario.py": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "gpu/test-targeted.py": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "gpu/test_begin.py": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "gpu/test_gl.c": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "gpu/test_mutations.py": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "gpu/test_native.c": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "gpu/test_protocol.py": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "gpu/test_tmpdir.py": "6326f087c3f03f33b5c525bbd82381b94b13d4cbcfad5347bcf25d79c02cdc6d", + "gpu/validate_source.py": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "graphics/README.md": "304c6dc3feaf7d48d7e1bddd0cae427bea8a75fe93a5c027f2defd45c2e9382a", + "graphics/cases.py": "1c5bc411a4fb0572955bdefa5fb67032c682a72788bb92d6d9a390cb7055bcc4", + "graphics/clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "graphics/clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "graphics/clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "graphics/clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "graphics/clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "graphics/clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "graphics/engine.py": "defb24b3ffb1973aefeda1928a59455bf3f8586b4bee209d118f9db8e17d8479", + "graphics/freeze.py": "d41cf96717341a64c258d418043a5da5fdb35baa244231c5b0fca2199c8e60ca", + "graphics/fullscreen.py": "601388834f049c2baa0d4fee993437b0fe5b024abc6d07ea3bda27e3199b9953", + "graphics/gate.py": "33d2f61d3d75300774185c15c4426fafdbad803bf247718c640649643875b8ee", + "graphics/geometry.py": "76a80e98887d3a3707ee942b48a49c1850cdc4aeeb28237d9fea33fa3470fb12", + "graphics/gpu_handler.py": "9f8a1cb7bbb0dccea7d84f96bdd2ccdab9937030958c22ca1b996f99e0ab676c", + "graphics/ipc_predicates.py": "5354ba53e1b3f8d0026f4475beebee58d093a81db7d26304cad7085ae3efd352", + "graphics/lifecycle.py": "df0c11027b3b8b0ef371ddb6ec4bcfd28dac09835644d0c3ce6e273d5e565e92", + "graphics/model.py": "a578fc589fb092dae3ccdcf8c4eec12a97e515f721decc4c968078dedcb2367a", + "graphics/offline/test_followup.py": "7d3fdd228651960b044f82d863eebede181da791e3f7ceab7a2194d7d3cee10f", + "graphics/oom.py": "bf4a07f0337be34c548a0f1752782b36b684bdf4e249f9f7bf757b4fb47c7607", + "graphics/oom_handler.py": "37c5852ad8e5a084b58ad1a5ae842445096eb104f59059b493687792f3e68d6a", + "graphics/pixels.py": "d315ddad978238ffbf1c8e4d712d4608ba23564703332d814f627f57f7b6e7f5", + "graphics/plans.py": "5fe84f4024aa0a8fa0d17a86343cd15d96131d30df3610094b86cfa0d045374c", + "graphics/predicates.py": "abe0c4c5b3b6d533d2714e13d317d68cd02e1f1c6180d2972ff94d00c9069cd1", + "graphics/prepare.py": "bf17e0019f5fa56b4c4c3b86d9a92ef1a6d1526fda64741cc2b5b62fc4a7f4a8", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "graphics/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "graphics/run.py": "27891c4e499457bfedceed623679addddb15e722259d976716e268800c72fb8f", + "graphics/validate_offline.py": "15e231eae78e38b38fa0edbec73b2f27440191f7c581f7eb9e4e413113473b1e", + "graphics/validators.py": "a7a19322bfeff1c1122e50f351aebfa46f4b144eb5b795c4389eae5c934e4b1d", + "graphics/wire-fixture.txt": "c6c9fc072f78fbcf9cfdeebcc5becdbdfb61824352495a0e767d7d390267f640" + }, + "independent_review": "NOT_PROVEN", + "limits": { + "captures": 110, + "captures_per_run": 18, + "duration_s": 150, + "runs": 8 + }, + "modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/test_tmpdir.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "plans": { + "DY-C": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "core", + "boundary": 0, + "capture_limit": 16, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "DY-C", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + }, + "FS-C": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "core", + "boundary": 0, + "capture_limit": 16, + "client": "fullscreen-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "FS-C", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "fullscreen_cross" + }, + "FS-P": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "pristine", + "boundary": 0, + "capture_limit": 12, + "client": "fullscreen-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "FS-P", + "mode": "pristine", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "fullscreen_cross" + }, + "GPU-CTRL": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "gpu", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "GPU-CTRL", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "B4 and separately reviewed GPU adapter required" + }, + "GPU-G3": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "gpu", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "GPU-G3", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "B4 and separately reviewed GPU adapter required" + }, + "OM-EXTRA": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-EXTRA", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "Distinct question, handler and additional independent review required" + }, + "OM-NESTED": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 10, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-NESTED", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + }, + "OM-ROOT": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 10, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-ROOT", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + } + }, + "runtime": "NOT_RUN", + "schema": "native-closure-source-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/pre-freeze-validation.json b/docs/design/evidence/step20c-native-closure/pre-freeze-validation.json new file mode 100644 index 0000000..caf6da0 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/pre-freeze-validation.json @@ -0,0 +1,598 @@ +{ + "G3_stage": { + "binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "file_count": 5, + "matches_receipt": true + }, + "builds_rerun": 0, + "checks": [ + { + "detail": { + "bytes_hashed": 721484458, + "closeout_sha256": "4411aa97a16996e70f97f91e67adb0484a1759509e153a008dcee0f640504b59", + "entries": 19612, + "extra": 0, + "manifest_sha256": "f16c6bfa4bbd46474193401c64521d05240a52fc2d2bfe050875a6881407626a", + "max_file_bytes": 19937280, + "mismatches": 0, + "missing": 0, + "types": { + "fifo": 1, + "file": 19594, + "symlink": 17 + } + }, + "name": "old_lab_manifest_all_19612_entries", + "status": "PASS" + }, + { + "detail": { + "count": 316, + "mismatches": [] + }, + "name": "protected_hashes_316", + "status": "PASS" + }, + { + "detail": { + "files": 50, + "manifest_sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080", + "mode_set": [ + "0o644" + ], + "source_digest": "14e24501658f1c4c29e7d8c06db71ed07a77b8e80e283453420bbc5b3e2f03c8" + }, + "name": "final_source_freeze_50_files", + "status": "PASS" + }, + { + "detail": { + "decision": "ACCEPTED", + "delta": [ + "gpu/README.md" + ], + "gpu_freeze_sha256": "a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb", + "prior_failures": 0, + "prior_tests_run": 73, + "review_sha256": "4d459c0963c6535a404bfaa68d11dff0cf738e2d21167c148c12315e954ffe86" + }, + "name": "doc_only_delta_independent_recheck", + "status": "PASS" + }, + { + "detail": { + "identities": { + "core": { + "expected": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "match": true, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic", + "sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb" + }, + "gpu": { + "expected": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "match": true, + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658" + }, + "oom": { + "expected": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "match": true, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835" + }, + "pristine": { + "expected": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "match": true, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway", + "sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6" + } + }, + "mismatches": [] + }, + "name": "historical_core_oom_pristine_g3_binaries", + "status": "PASS" + }, + { + "detail": { + "pristine_scene": { + "expected": "63586ffbe268c6830b5782d5327e8ca3624dbd9b9c9b0e93e591e94ca28a6e62", + "match": true, + "path": "/usr/lib/libscenefx-0.5.so", + "sha256": "63586ffbe268c6830b5782d5327e8ca3624dbd9b9c9b0e93e591e94ca28a6e62" + }, + "wlroots": { + "expected": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "match": true, + "path": "/usr/lib/libwlroots-0.20.so", + "sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + } + }, + "name": "pristine_scene_and_wlroots", + "status": "PASS" + }, + { + "detail": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "name": "historical_gpu_client", + "status": "PASS" + }, + { + "detail": { + "core_commands": 14, + "core_sha256": "0a8b9b0177cd22877130903210a8a39852fa7c539f88db999ca91e9ba67af18b", + "core_status": "PASS_BOUNDED", + "oom_commands": 44, + "oom_sha256": "fa980c65859cc590ecc6a36d580ef77bfb70dcd6c42320753c577910236b5384", + "oom_status": "PASS_BOUNDED" + }, + "name": "offline_core_oom_receipts", + "status": "PASS" + }, + { + "detail": { + "captures": 32, + "limits": { + "captures": 110, + "captures_per_run": 18, + "duration_s": 150, + "runs": 8 + }, + "operations": [ + { + "continuations": [ + { + "authorization": "parent explicit same reserved pair continuation; original FAIL retained", + "finished_monotonic_ns": 327835502157972, + "id": "same-pair-argument-repair", + "receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/receipt.json", + "reserved_monotonic_ns": 327815215522156, + "state": "PASS" + } + ], + "failure": "SceneFX Meson setup rc=1: Could not get define EGL_EGLEXT_VERSION", + "finished_monotonic_ns": 327600914563309, + "id": "G3_BUILD_PAIR", + "mosaic_builds": 1, + "reserved_monotonic_ns": 327510465794426, + "scene_builds": 1, + "setup_retried": false, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "state": "FAIL" + }, + { + "destination": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/stage-g3", + "finished_monotonic_ns": 327835502199749, + "id": "G3_DESTDIR", + "reserved_monotonic_ns": 327834532865939, + "state": "PASS" + } + ], + "runs": 5, + "sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c", + "violations": [] + }, + "name": "ledger_runs_caps_and_G3_pair", + "status": "PASS" + }, + { + "detail": { + "binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "files": 5, + "mismatches": [] + }, + "name": "G3_stage_exact_five", + "status": "PASS" + }, + { + "detail": { + "pids_checked": 267, + "residual_pids": [], + "residual_runtimes": [], + "runtime_paths_absent": { + "/tmp/smx-gkdlhcvk": true, + "/tmp/smx-insrpz6u": true, + "/tmp/smx-it7zqf9a": true, + "/tmp/smx-ndlyp6ct": true, + "/tmp/smx-vly7lmrg": true + }, + "sha256": "8053a9a21a910432aea9dde8fc344d11dfa34485747d46c49a2cdb962760ce92" + }, + "name": "267_owned_PIDs_and_runtimes", + "status": "PASS" + }, + { + "detail": { + "bad": [], + "count": 33 + }, + "name": "public_JSON_parse_and_modes", + "status": "PASS" + }, + { + "detail": { + "existing_ignored_artifact_counts": { + ".a": 3, + ".o": 538, + "pycache": 13 + }, + "ignored_count": 554, + "kit_generated": [], + "large_files": [], + "observed_artifacts": 554, + "temp_candidates": [], + "top_level": { + "build-baseline": 286, + "build-mosaic": 255, + "tooling": 13 + }, + "tracked_artifacts": [] + }, + "name": "versionable_tree_artifact_scope", + "status": "PASS" + }, + { + "detail": { + "free_bytes": 277253046272, + "free_min": 21474836480, + "lab_bytes_before_receipt": 231149356, + "lab_max": 9663676416, + "old_lab_bytes_final": 726154900 + }, + "name": "storage_bounds", + "status": "PASS" + }, + { + "detail": { + "returncode": 0, + "stderr": "" + }, + "name": "git-diff-check", + "status": "PASS" + }, + { + "detail": { + "returncode": 0, + "stderr": "" + }, + "name": "git-status", + "status": "PASS" + } + ], + "commands": [ + { + "argv": [ + "python3", + "-B", + "-" + ], + "bytes_hashed": 721484458, + "entries": 19612, + "name": "old_LAB_manifest_stream_verification", + "returncode": 0 + }, + { + "argv": [ + "python3", + "-B", + "-" + ], + "name": "source_freeze_review_and_historical_bindings", + "returncode": 0, + "source_files": 50 + }, + { + "argv": [ + "python3", + "-B", + "-" + ], + "name": "protected_316_and_system_audit", + "owned_pids_checked": 267, + "protected_files": 316, + "returncode": 0 + }, + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "ls-files", + "-z" + ], + "name": "git_ls_files_inventory", + "returncode": 0, + "tracked_generated_artifacts": 0, + "tracked_paths": 1115 + }, + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "diff", + "--check" + ], + "name": "git-diff-check", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/pre-freeze-validation/git-diff-check-final.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/pre-freeze-validation/git-diff-check-final.stdout", + "stdout_excerpt": "", + "stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "argv": [ + "git", + "-C", + "/home/fy59/Documents/Development/swayfx-mosaic", + "status", + "--short", + "--branch" + ], + "name": "git-status", + "returncode": 0, + "stderr": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/pre-freeze-validation/git-status-final.stderr", + "stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "stdout": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/pre-freeze-validation/git-status-final.stdout", + "stdout_excerpt": "## main...origin/main\n M CHANGELOG.md\n M docs/ARCHITECTURE.md\n M docs/KNOWN_LIMITATIONS.md\n M docs/README.md\n M docs/ROADMAP.md\n M tooling/probes/step20c-corec-v2-followup/README.md\n M tooling/probes/step20c-corec-v2-followup/gpu/README.md\n M tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c\n M tooling/probes/step20c-corec-v2-followup/graphics/engine.py\n M tooling/probes/step20c-corec-v2-followup/graphics/offline/test_followup.py\n?? docs/design/STEP20C_COREC_V2_FULLSCREEN_COMPARATIVE_GATE.md\n?? docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION_V4.md\n?? docs/design/STEP20C_COREC_V2_MIGRATION_REFOCUS_GATE.md\n?? docs/design/STEP20C_COREC_V2_NATIVE_OOM_COMPLETION.md\n?? docs/design/STEP20C_GLES_CONTEXT_READBACK_FOLLOWUP.md\n?? docs/design/evidence/\n?? tooling/probes/step20c-corec-v2-followup/gpu/test_tmpdir.py\n", + "stdout_sha256": "dcb62c61ce158b2c4f0d315b7027d63bc9d0da2acdb45ec49a8e77c7f2e32e51" + } + ], + "current_source": { + "changed_from_tested_v3": [ + "gpu/README.md" + ], + "code_and_tests_unchanged": true, + "doc_recheck_decision": "ACCEPTED", + "doc_recheck_sha256": "4d459c0963c6535a404bfaa68d11dff0cf738e2d21167c148c12315e954ffe86", + "file_count": 50, + "gpu_freeze_sha256": "a89926241a871bdc492348f922df1232962e622c4703720984ef681b5e6d98cb", + "manifest_sha256": "1db849c1152bb29d512bf62e3db53cba18d0179c0008ca116887eb572d76a080", + "modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/test_tmpdir.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "source_digest": "14e24501658f1c4c29e7d8c06db71ed07a77b8e80e283453420bbc5b3e2f03c8" + }, + "failures": [], + "historical_binaries": { + "core": { + "expected": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "match": true, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic", + "sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb" + }, + "gpu": { + "expected": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "match": true, + "path": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/builds/g3-mosaic/sway/swayfx-mosaic", + "sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658" + }, + "oom": { + "expected": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "match": true, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835" + }, + "pristine": { + "expected": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "match": true, + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway", + "sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6" + } + }, + "ledger": { + "capture_used_total": 32, + "limits": { + "captures": 110, + "captures_per_run": 18, + "duration_s": 150, + "runs": 8 + }, + "mutated": false, + "operations": [ + { + "continuations": [ + { + "authorization": "parent explicit same reserved pair continuation; original FAIL retained", + "finished_monotonic_ns": 327835502157972, + "id": "same-pair-argument-repair", + "receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/build-g3-repair/receipt.json", + "reserved_monotonic_ns": 327815215522156, + "state": "PASS" + } + ], + "failure": "SceneFX Meson setup rc=1: Could not get define EGL_EGLEXT_VERSION", + "finished_monotonic_ns": 327600914563309, + "id": "G3_BUILD_PAIR", + "mosaic_builds": 1, + "reserved_monotonic_ns": 327510465794426, + "scene_builds": 1, + "setup_retried": false, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "state": "FAIL" + }, + { + "destination": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/stage-g3", + "finished_monotonic_ns": 327835502199749, + "id": "G3_DESTDIR", + "reserved_monotonic_ns": 327834532865939, + "state": "PASS" + } + ], + "runs": [ + { + "capture_limit": 12, + "capture_used": 0, + "id": "FS-P", + "status": "COMPLETED" + }, + { + "capture_limit": 16, + "capture_used": 16, + "id": "DY-C", + "status": "COMPLETED" + }, + { + "capture_limit": 10, + "capture_used": 8, + "id": "OM-ROOT", + "status": "COMPLETED" + }, + { + "capture_limit": 10, + "capture_used": 8, + "id": "OM-NESTED", + "status": "COMPLETED" + }, + { + "capture_limit": 12, + "capture_used": 0, + "id": "GPU-G3", + "status": "COMPLETED" + } + ], + "sha256": "cd79d42a97e630564ba5f3c119ee24db25f65799211ea30e440cf5b257e7705c" + }, + "offline_core_oom_receipts": { + "core_sha256": "0a8b9b0177cd22877130903210a8a39852fa7c539f88db999ca91e9ba67af18b", + "oom_sha256": "fa980c65859cc590ecc6a36d580ef77bfb70dcd6c42320753c577910236b5384", + "record_counts": [ + 14, + 44 + ], + "statuses": [ + "PASS_BOUNDED", + "PASS_BOUNDED" + ] + }, + "old_gpu_client_sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "old_lab": { + "bytes_hashed": 721484458, + "closeout_sha256": "4411aa97a16996e70f97f91e67adb0484a1759509e153a008dcee0f640504b59", + "entries": 19612, + "extra": 0, + "manifest_sha256": "f16c6bfa4bbd46474193401c64521d05240a52fc2d2bfe050875a6881407626a", + "max_file_bytes": 19937280, + "mismatches": 0, + "missing": 0, + "modified": false, + "types": { + "fifo": 1, + "file": 19594, + "symlink": 17 + } + }, + "pinned_shared_objects": { + "pristine_scene": { + "expected": "63586ffbe268c6830b5782d5327e8ca3624dbd9b9c9b0e93e591e94ca28a6e62", + "match": true, + "path": "/usr/lib/libscenefx-0.5.so", + "sha256": "63586ffbe268c6830b5782d5327e8ca3624dbd9b9c9b0e93e591e94ca28a6e62" + }, + "wlroots": { + "expected": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "match": true, + "path": "/usr/lib/libwlroots-0.20.so", + "sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + } + }, + "protected_before": { + "files": 316, + "mismatches": [], + "status": "PASS" + }, + "public_json": { + "all_dict_mode_0644": true, + "parsed": 33 + }, + "repo_files_changed_by_this_validator": false, + "repository_inventory": { + "existing_ignored_artifacts": { + ".a": 3, + ".o": 538, + "pycache": 13 + }, + "files_ge_50MiB": [], + "frozen_kit_generated_artifacts": [], + "ignored_paths_count": 554, + "note": "Ignored build-baseline/build-mosaic object/archive files and prior __pycache__ files were observed outside the frozen kit; preserved unchanged.", + "observed_artifacts_count": 554, + "temp_candidates": [], + "tracked_generated_artifacts": [] + }, + "runtime_or_ipc": false, + "schema": "step20c-prefreeze-readonly-validation-v1", + "scope": "PRE_FREEZE_READ_ONLY", + "stage_rerun": false, + "status": "PASS", + "storage": { + "available_bytes": 277253046272, + "new_lab_bytes_before_receipt": 231149356, + "old_lab_bytes_final": 726154900, + "old_lab_modified": false + }, + "system_audit": { + "owned_pids_checked": 267, + "residual_owned_pids": [], + "residual_owned_runtimes": [], + "runtime_paths_absent": { + "/tmp/smx-gkdlhcvk": true, + "/tmp/smx-insrpz6u": true, + "/tmp/smx-it7zqf9a": true, + "/tmp/smx-ndlyp6ct": true, + "/tmp/smx-vly7lmrg": true + }, + "sha256": "8053a9a21a910432aea9dde8fc344d11dfa34485747d46c49a2cdb962760ce92" + }, + "tests_rerun": 0 +} diff --git a/docs/design/evidence/step20c-native-closure/provenance-replay.json b/docs/design/evidence/step20c-native-closure/provenance-replay.json new file mode 100644 index 0000000..422f168 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/provenance-replay.json @@ -0,0 +1,152 @@ +{ + "schema": "native-closure-provenance-replay-v1", + "gate": "PASS", + "git_head": "d46f854b3026e911659528fe94792aa13837a1d6", + "historical_seals": { + "closeout.json": "4411aa97a16996e70f97f91e67adb0484a1759509e153a008dcee0f640504b59", + "artifact-manifest.json": "f16c6bfa4bbd46474193401c64521d05240a52fc2d2bfe050875a6881407626a", + "budget.json": "dfe1897e255ca5a96b7b66b0af0728acdffdf3ddf397a3fa3c6b1011b07c9db6" + }, + "historical_manifest_entries_checked": 19612, + "historical_manifest_failures": [], + "historical_runs": 12, + "historical_captures": 102, + "elf": { + "core": { + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "build_id": "d5d304533f2c8db9d738365e9bd7f2c96779ef8d", + "scene_archive_sha256": "769b56c4a11bef13f0abdcfd189b11af954eebbfa69fd06c972e01508d8d376b", + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic", + "dynamic": "\nDynamic section at offset 0xe6c58 contains 49 entries:\n Tag Type Name/Value\n 0x0000000000000001 (NEEDED) Shared library: [libcairo.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libpixman-1.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libdrm.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libjson-c.so.5]\n 0x0000000000000001 (NEEDED) Shared library: [libevdev.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libinput.so.10]\n 0x0000000000000001 (NEEDED) Shared library: [libudev.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libpango-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libgobject-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libpcre2-8.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libwlroots-0.20.so]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-client.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb-icccm.so.4]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-server.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libEGL.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libgbm.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libGLESv2.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [liblcms2.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libpangocairo-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]\n 0x000000000000000c (INIT) 0x1a000\n 0x000000000000000d (FINI) 0xb4be4\n 0x0000000000000019 (INIT_ARRAY) 0xe4010\n 0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)\n 0x000000000000001a (FINI_ARRAY) 0xe4018\n 0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)\n 0x000000006ffffef5 (GNU_HASH) 0x3c8\n 0x0000000000000005 (STRTAB) 0x62b0\n 0x0000000000000006 (SYMTAB) 0x688\n 0x000000000000000a (STRSZ) 26650 (bytes)\n 0x000000000000000b (SYMENT) 24 (bytes)\n 0x0000000000000015 (DEBUG) 0x0\n 0x0000000000000003 (PLTGOT) 0xe6fe8\n 0x0000000000000002 (PLTRELSZ) 21192 (bytes)\n 0x0000000000000014 (PLTREL) RELA\n 0x0000000000000017 (JMPREL) 0x14270\n 0x0000000000000007 (RELA) 0xd4d8\n 0x0000000000000008 (RELASZ) 28056 (bytes)\n 0x0000000000000009 (RELAENT) 24 (bytes)\n 0x000000006ffffffb (FLAGS_1) Flags: PIE\n 0x000000006ffffffe (VERNEED) 0xd278\n 0x000000006fffffff (VERNEEDNUM) 8\n 0x000000006ffffff0 (VERSYM) 0xcaca\n 0x000000006ffffff9 (RELACOUNT) 1141\n 0x0000000000000000 (NULL) 0x0\n", + "note": "\nDisplaying notes found in: .note.gnu.build-id\n Owner Data size \tDescription\n GNU 0x00000014\tNT_GNU_BUILD_ID (unique build ID bitstring)\n Build ID: d5d304533f2c8db9d738365e9bd7f2c96779ef8d\n\nDisplaying notes found in: .note.gnu.property\n Owner Data size \tDescription\n GNU 0x00000030\tNT_GNU_PROPERTY_TYPE_0\n Properties: x86 ISA needed: x86-64-baseline\n\tx86 feature used: x86, XMM\n\tx86 ISA used: x86-64-baseline\n\nDisplaying notes found in: .note.ABI-tag\n Owner Data size \tDescription\n GNU 0x00000010\tNT_GNU_ABI_TAG (ABI version tag)\n OS: Linux, ABI: 4.4.0\n" + }, + "oom": { + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "scene_archive_sha256": "bca4b749eadc551f78712d7e1e7bda769125d2e596524a582988ca5346f8eceb", + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "dynamic": "\nDynamic section at offset 0xe7c58 contains 49 entries:\n Tag Type Name/Value\n 0x0000000000000001 (NEEDED) Shared library: [libcairo.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libpixman-1.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libdrm.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libjson-c.so.5]\n 0x0000000000000001 (NEEDED) Shared library: [libevdev.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libinput.so.10]\n 0x0000000000000001 (NEEDED) Shared library: [libudev.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libpango-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libgobject-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libpcre2-8.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libwlroots-0.20.so]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-client.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb-icccm.so.4]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-server.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libEGL.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libgbm.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libGLESv2.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [liblcms2.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libpangocairo-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]\n 0x000000000000000c (INIT) 0x1a000\n 0x000000000000000d (FINI) 0xb5234\n 0x0000000000000019 (INIT_ARRAY) 0xe5008\n 0x000000000000001b (INIT_ARRAYSZ) 16 (bytes)\n 0x000000000000001a (FINI_ARRAY) 0xe5018\n 0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)\n 0x000000006ffffef5 (GNU_HASH) 0x3c8\n 0x0000000000000005 (STRTAB) 0x62b0\n 0x0000000000000006 (SYMTAB) 0x688\n 0x000000000000000a (STRSZ) 26650 (bytes)\n 0x000000000000000b (SYMENT) 24 (bytes)\n 0x0000000000000015 (DEBUG) 0x0\n 0x0000000000000003 (PLTGOT) 0xe7fe8\n 0x0000000000000002 (PLTRELSZ) 21192 (bytes)\n 0x0000000000000014 (PLTREL) RELA\n 0x0000000000000017 (JMPREL) 0x14288\n 0x0000000000000007 (RELA) 0xd4d8\n 0x0000000000000008 (RELASZ) 28080 (bytes)\n 0x0000000000000009 (RELAENT) 24 (bytes)\n 0x000000006ffffffb (FLAGS_1) Flags: PIE\n 0x000000006ffffffe (VERNEED) 0xd278\n 0x000000006fffffff (VERNEEDNUM) 8\n 0x000000006ffffff0 (VERSYM) 0xcaca\n 0x000000006ffffff9 (RELACOUNT) 1142\n 0x0000000000000000 (NULL) 0x0\n", + "note": "\nDisplaying notes found in: .note.gnu.build-id\n Owner Data size \tDescription\n GNU 0x00000014\tNT_GNU_BUILD_ID (unique build ID bitstring)\n Build ID: 9bc3dc9055106b343c80a51ded111a382e98442d\n\nDisplaying notes found in: .note.gnu.property\n Owner Data size \tDescription\n GNU 0x00000030\tNT_GNU_PROPERTY_TYPE_0\n Properties: x86 ISA needed: x86-64-baseline\n\tx86 feature used: x86, XMM\n\tx86 ISA used: x86-64-baseline\n\nDisplaying notes found in: .note.ABI-tag\n Owner Data size \tDescription\n GNU 0x00000010\tNT_GNU_ABI_TAG (ABI version tag)\n OS: Linux, ABI: 4.4.0\n" + }, + "gpu": { + "binary_sha256": "b2ba890908e385b0a8884e786b279bfb2e582eed38c7fcd0587b418326eca5bc", + "build_id": "b6a52111beabe3c2122e0142a802415d3c84f9a5", + "scene_archive_sha256": "06ccfad8c7dfe4ee425b8de44d22d8daa69e2daa14085d6e6998b201a7ad111b", + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/gpu-mosaic/sway/swayfx-mosaic", + "dynamic": "\nDynamic section at offset 0xebc58 contains 49 entries:\n Tag Type Name/Value\n 0x0000000000000001 (NEEDED) Shared library: [libcairo.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libpixman-1.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libdrm.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libjson-c.so.5]\n 0x0000000000000001 (NEEDED) Shared library: [libevdev.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libinput.so.10]\n 0x0000000000000001 (NEEDED) Shared library: [libudev.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libpango-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libgobject-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libpcre2-8.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libwlroots-0.20.so]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-client.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb-icccm.so.4]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-server.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libEGL.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libgbm.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libGLESv2.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [liblcms2.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libpangocairo-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]\n 0x000000000000000c (INIT) 0x1a000\n 0x000000000000000d (FINI) 0xb8f94\n 0x0000000000000019 (INIT_ARRAY) 0xe9010\n 0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)\n 0x000000000000001a (FINI_ARRAY) 0xe9018\n 0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)\n 0x000000006ffffef5 (GNU_HASH) 0x3c8\n 0x0000000000000005 (STRTAB) 0x6490\n 0x0000000000000006 (SYMTAB) 0x688\n 0x000000000000000a (STRSZ) 26936 (bytes)\n 0x000000000000000b (SYMENT) 24 (bytes)\n 0x0000000000000015 (DEBUG) 0x0\n 0x0000000000000003 (PLTGOT) 0xebfe8\n 0x0000000000000002 (PLTRELSZ) 21672 (bytes)\n 0x0000000000000014 (PLTREL) RELA\n 0x0000000000000017 (JMPREL) 0x14688\n 0x0000000000000007 (RELA) 0xd800\n 0x0000000000000008 (RELASZ) 28296 (bytes)\n 0x0000000000000009 (RELAENT) 24 (bytes)\n 0x000000006ffffffb (FLAGS_1) Flags: PIE\n 0x000000006ffffffe (VERNEED) 0xd5a0\n 0x000000006fffffff (VERNEEDNUM) 8\n 0x000000006ffffff0 (VERSYM) 0xcdc8\n 0x000000006ffffff9 (RELACOUNT) 1151\n 0x0000000000000000 (NULL) 0x0\n", + "note": "\nDisplaying notes found in: .note.gnu.build-id\n Owner Data size \tDescription\n GNU 0x00000014\tNT_GNU_BUILD_ID (unique build ID bitstring)\n Build ID: b6a52111beabe3c2122e0142a802415d3c84f9a5\n\nDisplaying notes found in: .note.gnu.property\n Owner Data size \tDescription\n GNU 0x00000030\tNT_GNU_PROPERTY_TYPE_0\n Properties: x86 ISA needed: x86-64-baseline\n\tx86 feature used: x86, XMM\n\tx86 ISA used: x86-64-baseline\n\nDisplaying notes found in: .note.ABI-tag\n Owner Data size \tDescription\n GNU 0x00000010\tNT_GNU_ABI_TAG (ABI version tag)\n OS: Linux, ABI: 4.4.0\n" + }, + "pristine": { + "path": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway", + "binary_sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "build_id": "ba9751c82e73d4043b7651354f20936d070c2227", + "dynamic": "\nDynamic section at offset 0xb9c90 contains 45 entries:\n Tag Type Name/Value\n 0x0000000000000001 (NEEDED) Shared library: [libcairo.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libdrm.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libjson-c.so.5]\n 0x0000000000000001 (NEEDED) Shared library: [libevdev.so.2]\n 0x0000000000000001 (NEEDED) Shared library: [libinput.so.10]\n 0x0000000000000001 (NEEDED) Shared library: [libudev.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]\n 0x0000000000000001 (NEEDED) Shared library: [libpango-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libgobject-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libpcre2-8.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libpixman-1.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libscenefx-0.5.so]\n 0x0000000000000001 (NEEDED) Shared library: [libwayland-server.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libwlroots-0.20.so]\n 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb.so.1]\n 0x0000000000000001 (NEEDED) Shared library: [libxcb-icccm.so.4]\n 0x0000000000000001 (NEEDED) Shared library: [libpangocairo-1.0.so.0]\n 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]\n 0x000000000000000c (INIT) 0x17000\n 0x000000000000000d (FINI) 0x93274\n 0x0000000000000019 (INIT_ARRAY) 0xb7110\n 0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)\n 0x000000000000001a (FINI_ARRAY) 0xb7118\n 0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)\n 0x000000006ffffef5 (GNU_HASH) 0x3c8\n 0x0000000000000005 (STRTAB) 0x4d98\n 0x0000000000000006 (SYMTAB) 0x400\n 0x000000000000000a (STRSZ) 22392 (bytes)\n 0x000000000000000b (SYMENT) 24 (bytes)\n 0x0000000000000015 (DEBUG) 0x0\n 0x0000000000000003 (PLTGOT) 0xb9fe8\n 0x0000000000000002 (PLTRELSZ) 18480 (bytes)\n 0x0000000000000014 (PLTREL) RELA\n 0x0000000000000017 (JMPREL) 0x11910\n 0x0000000000000007 (RELA) 0xad88\n 0x0000000000000008 (RELASZ) 27528 (bytes)\n 0x0000000000000009 (RELAENT) 24 (bytes)\n 0x000000006ffffffb (FLAGS_1) Flags: PIE\n 0x000000006ffffffe (VERNEED) 0xab38\n 0x000000006fffffff (VERNEEDNUM) 8\n 0x000000006ffffff0 (VERSYM) 0xa510\n 0x000000006ffffff9 (RELACOUNT) 1119\n 0x0000000000000000 (NULL) 0x0\n", + "note": "\nDisplaying notes found in: .note.gnu.build-id\n Owner Data size \tDescription\n GNU 0x00000014\tNT_GNU_BUILD_ID (unique build ID bitstring)\n Build ID: ba9751c82e73d4043b7651354f20936d070c2227\n\nDisplaying notes found in: .note.gnu.property\n Owner Data size \tDescription\n GNU 0x00000030\tNT_GNU_PROPERTY_TYPE_0\n Properties: x86 ISA needed: x86-64-baseline\n\tx86 feature used: x86, XMM\n\tx86 ISA used: x86-64-baseline\n\nDisplaying notes found in: .note.ABI-tag\n Owner Data size \tDescription\n GNU 0x00000010\tNT_GNU_ABI_TAG (ABI version tag)\n OS: Linux, ABI: 4.4.0\n" + } + }, + "wlroots": { + "path": "/usr/lib/libwlroots-0.20.so", + "sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + }, + "source_replay": { + "identity": "COREC_V2_REDERIVED", + "status": "EXACT_FOR_NEW_TREE", + "components": { + "scene": { + "files": 85, + "manifest_sha256": "a29661e0eb2e96d2c8884955ae1221cd1598a1089c258dff813e97833f03945a" + }, + "mosaic": { + "files": 417, + "manifest_sha256": "e8f3cba2fa0ccb90ad35985ec35ce5edd1fa413c3b544076bed58168a831e896" + } + }, + "receipts": [ + { + "component": "scene", + "parent_pin": "37ccd723bef49e6891156ffafce8f549f01446cc", + "parent_tree": "685a78b94f9e44ee683e5fea93874557a9fed457", + "archive_sha256": "79de4e9fff96d80f65a77d4eae33f571320840dc48e4918c4bbe4f2d3c071e49", + "patch_sha256": "6039799046d052bb4cf2b15fbeb132983d6e3c1a45ad63752a6a63e83b585627", + "forward_apply_rc": 0 + }, + { + "component": "mosaic", + "parent_pin": "cd550382b311efdbfe3ed892f4e1d281d852e754", + "parent_tree": "6be2d6cada19bd84673c30dfc4fb900a48b87e86", + "archive_sha256": "058ab3594e3918b2b60065c21cfe3453df4e44cd4aa873df0f0a8a96728a769f", + "patch_sha256": "9eb6afac0be5c747fbf1a1ee5a33a633c193c4ebae0a36b17636abde7a64c879", + "forward_apply_rc": 0 + } + ] + }, + "resources": { + "lab": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "uid": 1000, + "mode": "0o700", + "historical_runs": 12, + "historical_captures": 102, + "disk_free": 277502246912, + "runtime_probes": [ + { + "base": "/tmp", + "socket_bind": "PASS", + "path_length": 28 + }, + { + "base": "/var/tmp", + "socket_bind": "PASS", + "path_length": 32 + } + ] + }, + "limits": { + "runs": 8, + "captures": 110, + "duration_s": 150, + "captures_per_run": 18, + "lab_max_bytes": 12884901888, + "lab_stop_bytes": 9663676416, + "disk_min_free_bytes": 21474836480, + "build_jobs": 8, + "new_core_oom_pristine_builds_default": 0, + "gpu_build_pairs_max": 1, + "conditional_oom_build_pairs_max": 1, + "stages_max": 2 + }, + "open_scenarios": [ + "FS-P", + "FS-C", + "DY-C", + "OM-ROOT", + "OM-NESTED", + "GPU-G3" + ], + "optional_not_admitted": [ + "OM-EXTRA", + "GPU-CTRL" + ], + "inventory": [ + { + "state": "SOURCE", + "evidence": "fresh Git archive + exact CORE assembly85/417" + }, + { + "state": "OFFLINE", + "evidence": "published C/Python historical receipts; no new C test yet" + }, + { + "state": "RUNTIME_RAW", + "evidence": "old LAB C7/C8/O1/G2 immutable logs" + }, + { + "state": "SAMPLED", + "evidence": "old positive cases only on own SHA" + }, + { + "state": "NOT OBSERVED", + "evidence": "presented buffer identity, GPU completion, atomic generation, complete damage" + } + ], + "no_new_runtime": true +} diff --git a/docs/design/evidence/step20c-native-closure/runtime-summary.json b/docs/design/evidence/step20c-native-closure/runtime-summary.json new file mode 100644 index 0000000..bf68766 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/runtime-summary.json @@ -0,0 +1,944 @@ +{ + "atomic_generation": "NOT_PROVEN", + "campaign_closed": true, + "complete_damage": "NOT_PROVEN", + "dynamic": { + "atomic_generation": "NOT PROVEN", + "complete_damage": "NOT OBSERVABLE", + "ids_before": { + "POPUP_A": [ + 12, + 11, + 14 + ], + "POPUP_B": [ + 15, + 13, + 17 + ], + "TOPLEVEL": [ + 3, + 9, + 10 + ] + }, + "stages": [ + { + "geometry": { + "cell_width": 640, + "children": [ + 8, + 9, + 10 + ], + "clamp": "PASS", + "content_width": 1920, + "expected_scroll": 800.0, + "focused": 10, + "gap": 0, + "geometry_status": "IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE", + "max_scroll": 960, + "min_scroll": 0, + "minimum_width": 640, + "mutation": "resize", + "output": "HEADLESS-1", + "resize_candidate": 800.0, + "scroll": 800.0, + "viewport": [ + -960, + 0, + 960, + 600 + ], + "workspace_id": 6 + }, + "input": { + "point": [ + -273, + 168 + ], + "status": "PASS" + }, + "pixels": { + "complete_damage": "NOT OBSERVABLE", + "exclusion": "PASS", + "whole_H2": "PASS" + }, + "tag": "resized960" + }, + { + "geometry": { + "cell_width": 640, + "children": [ + 8, + 9, + 10 + ], + "clamp": "PASS", + "content_width": 1920, + "expected_scroll": 800.0, + "focused": 10, + "gap": 0, + "geometry_status": "IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE", + "max_scroll": 1120, + "min_scroll": 0, + "minimum_width": 640, + "mutation": "resize", + "output": "HEADLESS-1", + "resize_candidate": 800.0, + "scroll": 800.0, + "viewport": [ + -800, + 0, + 800, + 600 + ], + "workspace_id": 6 + }, + "input": { + "point": [ + -113, + 168 + ], + "status": "PASS" + }, + "pixels": { + "complete_damage": "NOT OBSERVABLE", + "exclusion": "PASS", + "whole_H2": "PASS" + }, + "tag": "resized-back" + }, + { + "geometry": { + "cell_width": 640, + "children": [ + 8, + 9, + 10 + ], + "clamp": "PASS", + "content_width": 1920, + "expected_scroll": 1120, + "focused": 10, + "gap": 0, + "geometry_status": "IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE", + "max_scroll": 1120, + "min_scroll": 0, + "minimum_width": 640, + "mutation": "migration", + "output": "HEADLESS-2", + "resize_candidate": 800.0, + "scroll": 1120.0, + "viewport": [ + 0, + 0, + 800, + 600 + ], + "workspace_id": 6 + }, + "input": { + "point": [ + 366, + 168 + ], + "status": "PASS" + }, + "pixels": { + "complete_damage": "NOT OBSERVABLE", + "exclusion": "PASS", + "whole_H2": "NOT_APPLICABLE: current owner workspace on H2" + }, + "tag": "migrated-H2" + }, + { + "geometry": { + "cell_width": 640, + "children": [ + 8, + 9, + 10 + ], + "clamp": "PASS", + "content_width": 1920, + "expected_scroll": 1120.0, + "focused": 10, + "gap": 0, + "geometry_status": "IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE", + "max_scroll": 1120, + "min_scroll": 0, + "minimum_width": 640, + "mutation": "migration", + "output": "HEADLESS-1", + "resize_candidate": 1120.0, + "scroll": 1120.0, + "viewport": [ + -800, + 0, + 800, + 600 + ], + "workspace_id": 6 + }, + "input": { + "point": [ + -434, + 168 + ], + "status": "PASS" + }, + "pixels": { + "complete_damage": "NOT OBSERVABLE", + "exclusion": "PASS", + "whole_H2": "PASS" + }, + "tag": "migrated-back-H1" + } + ], + "status": "PASS" + }, + "dynamic_final": { + "H2": "EXACT", + "captured_after_close": true, + "status": "PARTIALLY_FEASIBLE" + }, + "executed_source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "executed_source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "gpu_completion": "NOT_PROVEN", + "gpu_results_review_sha256": "78ce6fe03955d62d1b079b9a8e81161dcb5bfceef71bd2b71d13892bcf7e4d78", + "markers": { + "DYNAMIC_INPUT_AFTER_MIGRATION": "PARTIALLY_FEASIBLE", + "DYNAMIC_MIGRATION_APPLIED": "PARTIALLY_FEASIBLE", + "FULLSCREEN_COMPARABILITY": "NOT_EXERCISED", + "FULLSCREEN_COREC_V2_NEW": "NOT_RUN", + "FULLSCREEN_PRISTINE_NEW": "NOT_EXERCISED", + "GPU_G3_NATIVE_READBACK": "NOT_EXERCISED", + "GPU_GLES_ADMISSION": "NOT_EXERCISED", + "GPU_WHOLE_FIELD_CAUSALITY": "NOT_PROVEN", + "OOM_AVAILABILITY_POST_INJECTION": "PARTIALLY_FEASIBLE", + "OOM_NESTED_NATIVE": "PARTIALLY_FEASIBLE", + "OOM_ROOT_NATIVE": "PARTIALLY_FEASIBLE" + }, + "native_buffer_identity": "NOT_PROVEN", + "nongpu_results_review_sha256": "a8a9ea6c9c1fab09687c1b43378d53d7add0eb421a9b2e626d60d59445578e86", + "oom_production_policy": "UNDECIDED", + "runs": { + "DY-C": { + "actions": { + "camera": 1, + "capture": 16, + "chain": 1, + "click": 6, + "configuration": 18, + "grab": 2, + "move": 7, + "mutation": 4, + "spawn": 6, + "tool": 96 + }, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "build_id": "d5d304533f2c8db9d738365e9bd7f2c96779ef8d", + "capture_limit": 16, + "captures": 16, + "command": { + "argv": [ + "/usr/bin/python", + "-B", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/run.py", + "DY-C", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--manifest", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "--review", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "--publication", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json" + ], + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "duration_s": 36.504983439, + "exit": 0, + "runner_log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/execution/DY-C-runner.log", + "runner_log_sha256": "26c16abd57d4bedac94e99cb7ba29095e299912fe72d9eee9a618fd1bba697dd" + }, + "grab_requests": [ + { + "parent": "TOPLEVEL", + "popup": "POPUP_A", + "serial": 36, + "used": 36 + }, + { + "parent": "POPUP_A", + "popup": "POPUP_B", + "serial": 45, + "used": 45 + } + ], + "ledger_duration_s": 35.995476057, + "mechanical_rescue": false, + "outcome_sha256": "13539848fa063c022115824df894be2d0c6c215720c66ce94b7aaa9d644736e4", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "pid": 3492726, + "proc_maps_sha256": "32caeb7496843bc8ad9431663e8121fcbcc8fb28f97006985bcb92e25cc9b39a", + "raw_process_exits": [ + { + "exit": 0, + "name": "compositor", + "pid": 3492726 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3492769 + }, + { + "exit": 0, + "name": "reference", + "pid": 3492782 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3492817 + }, + { + "exit": 0, + "name": "filler1", + "pid": 3492833 + }, + { + "exit": 0, + "name": "owner", + "pid": 3492898 + } + ], + "renderer": [ + "00:00:00.099 [INFO] [wlr] [render/egl.c:374] EGL vendor: Mesa Project", + "00:00:00.107 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:473] Creating scenefx FX renderer", + "00:00:00.107 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:474] Using OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "00:00:00.107 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:475] GL vendor: AMD", + "00:00:00.107 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:476] GL renderer: AMD Radeon 780M Graphics (radeonsi, phoenix, ACO, DRM 3.64, 7.2.9-zen1-1-zen)" + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "FS-C": { + "capture_limit": 16, + "captures": 0, + "grab_requests": [], + "reason": "qualified FS-P dependency not satisfied", + "status": "NOT_RUN" + }, + "FS-P": { + "actions": { + "chain": 1, + "configuration": 8, + "spawn": 5, + "tool": 15 + }, + "binary_sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "build_id": "ba9751c82e73d4043b7651354f20936d070c2227", + "capture_limit": 12, + "captures": 0, + "command": { + "argv": [ + "/usr/bin/python", + "-B", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/run.py", + "FS-P", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--manifest", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "--review", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "--publication", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json" + ], + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "duration_s": 6.631161108, + "exit": 1, + "runner_log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/execution/FS-P-runner.log", + "runner_log_sha256": "4b384a7baa19535729b17ee4c05fb1c12cd0b332a7cf4f6ed91bfe545b6a2c6b" + }, + "grab_requests": [], + "ledger_duration_s": 6.097521916, + "mechanical_rescue": false, + "outcome_sha256": "11b37750569c1fae4aa6a9c21e3f0166461bbdcfd9c8f46e90ef8ffede72b597", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "pid": 3491656, + "proc_maps_sha256": "235b69d003297c97782327dc5dd863148970ffffe8e1bad27e51595c5f1beb2f", + "raw_process_exits": [ + { + "exit": 0, + "name": "compositor", + "pid": 3491656 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3491708 + }, + { + "exit": 0, + "name": "reference", + "pid": 3491722 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3491772 + }, + { + "exit": 0, + "name": "owner", + "pid": 3491797 + } + ], + "renderer": [ + "00:00:00.358 [INFO] [wlr] [render/egl.c:374] EGL vendor: Mesa Project", + "00:00:00.366 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:473] Creating scenefx FX renderer", + "00:00:00.366 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:474] Using OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "00:00:00.366 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:475] GL vendor: AMD", + "00:00:00.367 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:476] GL renderer: AMD Radeon 780M Graphics (radeonsi, phoenix, ACO, DRM 3.64, 7.2.9-zen1-1-zen)" + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "NOT_EXERCISED", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "GPU-CTRL": { + "capture_limit": 12, + "captures": 0, + "grab_requests": [], + "reason": "cannot replace failed GPU-G3; no new attribution question or equivalent reviewed control", + "status": "NOT_RUN" + }, + "GPU-G3": { + "H1_A_Areturn": "NOT_EXERCISED", + "H2_GPU_baseline": "NOT_EXERCISED", + "acquisition_entries": 0, + "actions": { + "configuration": 2, + "spawn": 3, + "tool": 29 + }, + "actual_gpu_client_binding_sha256": "4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4", + "binary_sha256": "9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658", + "build_id": "afdde13d52f3a5fe07c096c1221fcf0c8ae223fc", + "capture_limit": 12, + "captures": 0, + "cause": "Frozen client refuses new TMPDIR due to hardcoded old LAB; no SHM attach after initial configure; exit2", + "command": { + "argv": [ + "/usr/bin/python", + "-B", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/run.py", + "GPU-G3", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--manifest", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "--review", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/gpu-admission.json", + "--publication", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json" + ], + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "duration_s": 8.184041837, + "exit": 1, + "runner_log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/execution/GPU-G3-runner.log", + "runner_log_sha256": "c0b113182d60f107a4d8aa90d3ff4f71bcd78403062ba6877a6f98abf06044c0" + }, + "epochs": 0, + "grab_requests": [], + "hook_queries": "NOT_EXERCISED", + "ledger_duration_s": 7.623459039, + "mechanical_rescue": false, + "native_read_success": "NOT_OBSERVED", + "outcome_sha256": "df0fd1028dfe0e48bf20a74fafb964fd14f6f0f76fb46b82791a45b3269c44eb", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "pid": 3510983, + "proc_maps_sha256": "c2a1b48db5791ba6a2350f08f912a2e65c9d9ef1ab2445f1299dc4218166d55c", + "raw_files": 0, + "raw_process_exits": [ + { + "exit": 0, + "name": "compositor", + "pid": 3510983 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3511036 + }, + { + "exit": 2, + "name": "g2-reference", + "pid": 3511049 + } + ], + "readback_bytes": 0, + "renderer": [ + "00:00:00.544 [INFO] [wlr] [render/egl.c:374] EGL vendor: Mesa Project", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:473] Creating scenefx FX renderer", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:474] Using OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:475] GL vendor: AMD", + "00:00:00.556 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:476] GL renderer: AMD Radeon 780M Graphics (radeonsi, phoenix, ACO, DRM 3.64, 7.2.9-zen1-1-zen)" + ], + "runner_failure": "Ambiguous: bounded wait timeout", + "scientific_cleanup": false, + "status": "INCONCLUSIVE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "OM-EXTRA": { + "capture_limit": 12, + "captures": 0, + "grab_requests": [], + "reason": "no distinct reviewed discriminant; NOT_ADMITTED", + "status": "NOT_RUN" + }, + "OM-NESTED": { + "H2": "EXACT", + "actions": { + "camera": 1, + "capture": 8, + "chain": 1, + "click": 4, + "configuration": 10, + "grab": 2, + "hook": 1, + "move": 5, + "spawn": 5, + "tool": 54 + }, + "availability_build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "availability_pid": 3497491, + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "capture_limit": 10, + "captures": 8, + "command": { + "argv": [ + "/usr/bin/python", + "-B", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/run.py", + "OM-NESTED", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--manifest", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "--review", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "--publication", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json" + ], + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "duration_s": 20.966546947, + "exit": 0, + "runner_log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/execution/OM-NESTED-runner.log", + "runner_log_sha256": "26c16abd57d4bedac94e99cb7ba29095e299912fe72d9eee9a618fd1bba697dd" + }, + "grab_requests": [ + { + "parent": "TOPLEVEL", + "popup": "POPUP_A", + "serial": 27, + "used": 27 + }, + { + "parent": "POPUP_A", + "popup": "POPUP_B", + "serial": 36, + "used": 36 + } + ], + "ledger_duration_s": 20.408873591, + "mechanical_rescue": false, + "native": { + "caller_result": { + "failures": "1", + "parent": "0x55a81812bc80", + "pid": "3497491", + "role": "nested_popup", + "successes": "1", + "tree": "(nil)", + "xdg": "0x55a818139b10", + "xdg_parent": "0x55a8180816e0" + }, + "children": "1", + "children_scope": "existing parent children, not failed tree", + "failures": "1", + "initialized": "0", + "listeners": "0", + "matched": "1", + "nonce": "39b4767924344003ad80fb9b87da4e20", + "parent": "0x55a81812bc80", + "parent_children": "1", + "pid": "3497491", + "published": "0", + "role": "nested_popup", + "successes": "1", + "tree": "0x55a818143120", + "xdg": "0x55a818139b10", + "xdg_parent": "0x55a8180816e0" + }, + "old_root_A_point": [ + -215, + 108 + ], + "old_root_A_status": "PARTIALLY_FEASIBLE", + "outcome_sha256": "287ab59fb71a401df92b43f63976190913c1b4e313624863a2bd87195077294e", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "owner_disconnect": null, + "owner_raw_exit_before_cleanup": null, + "pid": 3497491, + "proc_maps_sha256": "200bf9a53737682c3a6bca834bc8d279052acff109bb28bc4a26f717d93c1eec", + "raw_process_exits": [ + { + "exit": 0, + "name": "compositor", + "pid": 3497491 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3497533 + }, + { + "exit": 0, + "name": "reference", + "pid": 3497545 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3497579 + }, + { + "exit": 0, + "name": "owner", + "pid": 3497605 + } + ], + "renderer": [ + "00:00:00.103 [INFO] [wlr] [render/egl.c:374] EGL vendor: Mesa Project", + "00:00:00.111 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:473] Creating scenefx FX renderer", + "00:00:00.111 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:474] Using OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "00:00:00.111 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:475] GL vendor: AMD", + "00:00:00.111 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:476] GL renderer: AMD Radeon 780M Graphics (radeonsi, phoenix, ACO, DRM 3.64, 7.2.9-zen1-1-zen)" + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "OM-ROOT": { + "H2": "EXACT", + "actions": { + "camera": 1, + "capture": 8, + "chain": 1, + "click": 2, + "configuration": 10, + "grab": 1, + "hook": 1, + "move": 3, + "spawn": 5, + "tool": 49 + }, + "availability_build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "availability_pid": 3494614, + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "capture_limit": 10, + "captures": 8, + "command": { + "argv": [ + "/usr/bin/python", + "-B", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/graphics/run.py", + "OM-ROOT", + "--lab", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39", + "--manifest", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/source-manifest-v2.json", + "--review", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/nongpu-admission.json", + "--publication", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/pre-run-publication.json" + ], + "clone_receipt_sha256": "035f83e11bd1d3eed9e0ed2444750bb499aec4e4cfb501880514c72888c95282", + "duration_s": 18.258187285, + "exit": 0, + "runner_log": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/execution/OM-ROOT-runner.log", + "runner_log_sha256": "26c16abd57d4bedac94e99cb7ba29095e299912fe72d9eee9a618fd1bba697dd" + }, + "grab_requests": [ + { + "parent": "TOPLEVEL", + "popup": "POPUP_A", + "serial": 27, + "used": 27 + } + ], + "ledger_duration_s": 17.761603037, + "mechanical_rescue": false, + "native": { + "caller_result": { + "failures": "1", + "parent": "0x564dbc49ec90", + "pid": "3494614", + "role": "root_popup", + "successes": "0", + "tree": "(nil)", + "xdg": "0x564dbd1ab920", + "xdg_parent": "0x564dbd196260" + }, + "children": "0", + "children_scope": "existing parent children, not failed tree", + "failures": "1", + "initialized": "0", + "listeners": "0", + "matched": "1", + "nonce": "0a825259ea7740c5a7704f149dfa0649", + "parent": "0x564dbc49ec90", + "parent_children": "0", + "pid": "3494614", + "published": "0", + "role": "root_popup", + "successes": "0", + "tree": "0x564dbd18fc20", + "xdg": "0x564dbd1ab920", + "xdg_parent": "0x564dbd196260" + }, + "old_root_A_point": null, + "old_root_A_status": "NOT_EXERCISED", + "outcome_sha256": "4308cbf00c96c2c93bd228f5544b5f812c2e12253c59bb52b301e7b73ecd5d7b", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "owner_disconnect": null, + "owner_raw_exit_before_cleanup": null, + "pid": 3494614, + "proc_maps_sha256": "c801b608dc3c035b98200e3248cf8953e08e05c7087b4821fc98aee2f9e7c5a0", + "raw_process_exits": [ + { + "exit": 0, + "name": "compositor", + "pid": 3494614 + }, + { + "exit": 0, + "name": "pointer", + "pid": 3494653 + }, + { + "exit": 0, + "name": "reference", + "pid": 3494681 + }, + { + "exit": 0, + "name": "filler0", + "pid": 3494717 + }, + { + "exit": 0, + "name": "owner", + "pid": 3494749 + } + ], + "renderer": [ + "00:00:00.111 [INFO] [wlr] [render/egl.c:374] EGL vendor: Mesa Project", + "00:00:00.120 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:473] Creating scenefx FX renderer", + "00:00:00.120 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:474] Using OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "00:00:00.120 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:475] GL vendor: AMD", + "00:00:00.120 [INFO] [wlr] [render/fx_renderer/fx_renderer.c:476] GL renderer: AMD Radeon 780M Graphics (radeonsi, phoenix, ACO, DRM 3.64, 7.2.9-zen1-1-zen)" + ], + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.003 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + } + }, + "schema": "native-closure-runtime-summary-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/source-binding-review.json b/docs/design/evidence/step20c-native-closure/source-binding-review.json new file mode 100644 index 0000000..d1e5b85 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/source-binding-review.json @@ -0,0 +1,201 @@ +{ + "schema": "independent-nongpu-binding-review-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "independent": true, + "decision": "ACCEPTED", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_review_receipt_sha256": "895dfc1870b70c49039c773cbc6012b742514f30da508a2997c352d9ea12f781", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "artifacts": { + "A-PROVENANCE-REPLAY.json": "e09a9da09141903fad33da178272c52fac7a29ee7cf0e9bed5b718619bf1f543", + "H-ABI-BASELINE.json": "d7661a1b4e1db35069d47bd9f74fa4d20ac03d2fadf05a9299c44f700114b55e", + "followup-work/client-compile.json": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528" + }, + "identities": { + "core": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic", + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "build_id": "d5d304533f2c8db9d738365e9bd7f2c96779ef8d", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only" + }, + "oom": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic", + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "build_id": "9bc3dc9055106b343c80a51ded111a382e98442d", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only" + }, + "pristine": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway", + "binary_sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "build_id": "ba9751c82e73d4043b7651354f20936d070c2227", + "wlroots": "/usr/lib/libwlroots-0.20.so", + "wlroots_sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837", + "build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "scope": "exact retained ELF/source provenance; conditional pre-run binding only" + } + }, + "runs": { + "FS-P": { + "decision": "ACCEPTED", + "client_build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "build_review": "ACCEPTED", + "identity": "pristine", + "client": "fullscreen-client", + "client_sha256": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + }, + "FS-C": { + "decision": "ACCEPTED", + "client_build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "build_review": "ACCEPTED", + "identity": "core", + "client": "fullscreen-client", + "client_sha256": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + }, + "DY-C": { + "decision": "ACCEPTED", + "client_build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "build_review": "ACCEPTED", + "identity": "core", + "client": "nested-client", + "client_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7" + }, + "OM-ROOT": { + "decision": "ACCEPTED", + "client_build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "build_review": "ACCEPTED", + "identity": "oom", + "client": "nested-client", + "client_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "oom_source_review": "ACCEPTED", + "variant_identity": "COREC_V2_NATIVE_OOM_DIAGNOSTIC" + }, + "OM-NESTED": { + "decision": "ACCEPTED", + "client_build_review": "ACCEPTED", + "source_qualification": "ACCEPTED", + "build_review": "ACCEPTED", + "identity": "oom", + "client": "nested-client", + "client_sha256": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "client_build_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/followup-work/client-compile.json", + "client_build_receipt_sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "source_manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "oom_source_review": "ACCEPTED", + "variant_identity": "COREC_V2_NATIVE_OOM_DIAGNOSTIC" + } + }, + "commands": [ + { + "argv": [ + "readelf", + "-n", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "779d0f0868f12f6c0d573cb5c4daa94c356bdaf65767286b63e5127a631b6c4f" + }, + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/core-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "99d0fc6a70b68f32fb879989e395c9f8401408202c28e0b3ae0b9d23535aca93" + }, + { + "argv": [ + "readelf", + "-n", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "9152478c8b41320676cd5f4b644b19af7cb47109ec1761a3d90964398488226e" + }, + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/oom-mosaic/sway/swayfx-mosaic" + ], + "exit": 0, + "stdout_sha256": "a843b228b5ab61a45a43c1bcd18156eda8c728d33748d0e6085b9159237506f2" + }, + { + "argv": [ + "readelf", + "-n", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway" + ], + "exit": 0, + "stdout_sha256": "742d73bff7455fa5388f8e25a8fbef04dc27ecbf99ca94fd803f3fb392a32bac" + }, + { + "argv": [ + "readelf", + "-d", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/controls/pristine/sway" + ], + "exit": 0, + "stdout_sha256": "8e7a5fb22031fe10c1de5bb1abe53d80520ea50ca4a050659983ba693e94702c" + } + ], + "client_inputs": { + "clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df" + }, + "client_generated": { + "fullscreen-client": "ccf3ce2f7ac4ba116057f2c266e837e8dd5df020785430f6843557423ed6a24a", + "nested-client": "3e58515cee4efc55c05f8ca8ac943209532f314b4dcf0c07299607d25ffa9e82", + "pointer-daemon": "3188215af9ee0e2c79e1a5efc1b023ee8be47d0cade28f7c1ebe56ff140ae7db", + "saved-client": "10d766c660b0ed35cd5e002d594fc776ebc4754c6b596cf61dd53facaa29d875", + "static-reference": "3eebddbc3989ce0d9d2987382c8232a9cc6444cdfb29a5ca3a09e37251f6443c", + "vertical-client": "49f4999aafc800192c50d5d1439ba5dd80c22a1e994dee591d9a780e018f0383", + "virtual-pointer-client.h": "0dcb6107cf948a007dcef0a6b2192e4f7b9166c0f57b499ca49b7aaf48adc56c", + "virtual-pointer-protocol.c": "a72e9b38dd5ed0c49fae22aa2f01883aea76075ad33f6399d9b2033df4330675", + "xdg-shell-client.h": "a09726137ea9fe1a23d58c95f1d33ab77a3fc692c63726bc82fbc91ab8e5c6fc", + "xdg-shell-protocol.c": "9e12fcd5676d8c6b6cfd233c2eba563163c0ea7e586cb6e27f202a328323c7f0" + }, + "runtime": "NOT_RUN", + "conditional_on": [ + "Phase C source-only publication to origin/github and clone verification", + "exact published kit bytes/modes equal manifestV2", + "parent runtime-manifest construction and gate.validate_review before debit", + "FS-C requires qualified FS-P", + "OM-NESTED requires qualified OM-ROOT or separately reviewed explicit dependency override", + "actual compositor startup/mappings/private outputs/input/capture evidence remains to be measured" + ], + "authorization": "ACCEPTED pre-run source/client/retained-build bindings only; NO_RUNTIME_AUTHORIZATION; no historical runtime evidence upgraded" +} diff --git a/docs/design/evidence/step20c-native-closure/source-delta-review.json b/docs/design/evidence/step20c-native-closure/source-delta-review.json new file mode 100644 index 0000000..b7a71d7 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/source-delta-review.json @@ -0,0 +1,49 @@ +{ + "schema": "independent-source-delta-review-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "author": "codex-native-closure-implementation", + "independent": true, + "decision": "ACCEPTED", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "gpu_source_manifest_sha256": "03b3cdb4b665aeca860cf3e1363d4fbe5c2cbcb0372f3b4fe582e88488ccb5d2", + "prior_review_sha256": "58ee0ef4535c0e5e47cc68cb2bc35e20b73563e47438b3dee718d24194c535cc", + "repair_receipt_sha256": "bac668f134dd9e6464312545d005c9068f7e833c8e3f0e3f614411dcf68d3275", + "changed_contents": [ + "graphics/README.md", + "graphics/gate.py", + "graphics/offline/test_followup.py", + "graphics/oom_handler.py" + ], + "source_entries": 49, + "source_modes": "all 0644", + "gates": { + "B1": "ACCEPTED", + "B2": "ACCEPTED", + "B3": "ACCEPTED", + "B4": "ACCEPTED", + "B5_C_publication_modes": "ACCEPTED" + }, + "carried_acceptance": [ + "B1", + "B2", + "B4" + ], + "closed_findings": [ + "SR-B3-1", + "SR-B3-2", + "SR-C-1" + ], + "findings": [], + "tests_run": 66, + "failures": 0, + "tests_log_sha256": "d15282c23cfbf80489b45c485586d6fae0013b57cb9af2ffcd0467e0eba8a8d9", + "notes_sha256": "2ad257b325cff36e7d27b42d3ed50a89a7865d50a6d8623024dd20e167af8fbc", + "runtime": "NOT_RUN", + "production_build": "NOT_RUN", + "stage": "NOT_RUN", + "commit_push": "NOT_RUN", + "phase_C_publication": "NOT_YET_VERIFIED", + "authorization": "SOURCE_ONLY_PUBLICATION_REVIEW_ACCEPTED; NO_RUNTIME_AUTHORIZATION" +} diff --git a/docs/design/evidence/step20c-native-closure/source-initial-review.json b/docs/design/evidence/step20c-native-closure/source-initial-review.json new file mode 100644 index 0000000..88dd31c --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/source-initial-review.json @@ -0,0 +1,202 @@ +{ + "schema": "independent-source-review-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1", + "reviewer": "codex-source-review-independent", + "author": "codex-native-closure-implementation", + "independent": true, + "manifest_sha256": "36722a891c9dddf4234f64de0f7804158c52d29f42dc4158627f69df0fec5fda", + "source_digest": "ac97791e6bcfee3e02a0fbe9aea20d06ea325fab3c08fe0625ea5a0fd9a215a0", + "decision": "CORRECTION_REQUIRED", + "gates": { + "B1": "ACCEPTED", + "B2": "ACCEPTED", + "B3": "CORRECTION_REQUIRED", + "B4": "ACCEPTED", + "B5_C_publication_modes": "CORRECTION_REQUIRED" + }, + "findings": [ + { + "id": "SR-B3-1", + "severity": "P2", + "file": "graphics/oom_handler.py", + "symbol": "run", + "line": 128, + "requirement": "Phase F OM-NESTED: Tester input A visible si vivant.", + "evidence": "La branche A vivant qualifie uniquement count(post[0], POPUP_A)>0; ensuite les seuls clicks visent reference et peuvent fermer A par dismissal. Aucun delivery POPUP_A après injection.", + "correction": "Avant le clic voisin, sélectionner un intérieur A fraîchement peint, injecter et valider paire/wire/pointer-local sur A; conserver séparément le dismissal réellement observé et ajouter un négatif absence/mauvais destinataire." + }, + { + "id": "SR-B3-2", + "severity": "P2", + "file": "graphics/oom_handler.py", + "symbol": "run", + "line": 126, + "requirement": "B3 et phase F: avant/post/final sans image de popup raté, surfaces effectivement retirées.", + "evidence": "oom-post vérifie uniquement exact(baseline,post[1]); H1 autorise toute couleur du popup échoué. oom-final vérifie uniquement H2 et ne refuse aucun résidu A/B sur H1.", + "correction": "Sur captures post, refuser la couleur du rôle échoué sur les deux outputs tout en permettant A survivant dans OM-NESTED; sur final après close, refuser couleurs A/B sur les deux outputs. Tests négatifs vrai validateur appelé par run." + }, + { + "id": "SR-C-1", + "severity": "P2", + "file": "graphics/gate.py", + "symbol": "validate_review / source_modes", + "line": 103, + "requirement": "Phase C kit reconstructible depuis clone Git; phase I exactitude modes; parent exige SHA/modes Git avant débit.", + "evidence": "source_modes compare modes POSIX locaux au manifeste; la boucle Git lit uniquement git show et SHA des blobs, sans ls-tree/type/mode. Le manifeste fourni contient 16 fichiers en0600; Git stocke les fichiers ordinaires non exécutables en100644 et un clone ne conserve pas0600. Donc ni comparaison modeGit ni replay identique des modes gelés depuis clone.", + "correction": "Normaliser les sources non exécutables au mode portable0644 avant nouveau freeze; comparer les types/modes Git canoniques attendus avec ls-tree, plus ensemble des entrées souskit et SHA, et rejouer refus d’un mode exécutable ou symlink divergent. Ne pas prétendre préserver0600 viaGit." + } + ], + "tests": { + "graphics": { + "manifest_sha256": "36722a891c9dddf4234f64de0f7804158c52d29f42dc4158627f69df0fec5fda", + "files": 49, + "modes": "PASS", + "tests": 62, + "failures": 0, + "historical_C7": { + "workspace_id": 6, + "output": "HEADLESS-2", + "children": [ + 8, + 9, + 10 + ], + "viewport": [ + 0, + 0, + 800, + 600 + ], + "minimum_width": 640, + "cell_width": 640, + "gap": 0, + "content_width": 1920, + "min_scroll": 0, + "max_scroll": 1120, + "scroll": 1120.0, + "focused": 10, + "geometry_status": "IPC_PENDING_CANDIDATE; native generation NOT_OBSERVABLE", + "expected_scroll": 1120, + "resize_candidate": 800.0, + "mutation": "migration", + "clamp": "PASS" + } + }, + "gpu_commands": [ + { + "argv": [ + "cc", + "-std=c17", + "-Wall", + "-Wextra", + "-Werror", + "-I/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/test_gl.c", + "-o", + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/source-review/test_gl" + ], + "exit": 0, + "log": "gpu-0.log" + }, + { + "argv": [ + "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/reviews/source-review/test_gl" + ], + "exit": 0, + "log": "gpu-1.log" + }, + { + "argv": [ + "/usr/bin/python", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/test_mutations.py" + ], + "exit": 0, + "log": "gpu-2.log" + }, + { + "argv": [ + "/usr/bin/python", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/validate_source.py" + ], + "exit": 0, + "log": "gpu-3.log" + }, + { + "argv": [ + "/usr/bin/python", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/test_protocol.py" + ], + "exit": 0, + "log": "gpu-4.log" + }, + { + "argv": [ + "/usr/bin/python", + "/home/fy59/Documents/Development/swayfx-mosaic/tooling/probes/step20c-corec-v2-followup/gpu/test_begin.py" + ], + "exit": 0, + "log": "gpu-5.log" + } + ] + }, + "artifacts": { + "followup-work/source-manifest.json": { + "sha256": "36722a891c9dddf4234f64de0f7804158c52d29f42dc4158627f69df0fec5fda", + "mode": "0o600" + }, + "followup-work/offline-tests.json": { + "sha256": "a264c23a82a8b0b01d0a24d27a28d0d9401afe0a112c307cbda89c6c29ba4cc9", + "mode": "0o600" + }, + "followup-work/client-compile.json": { + "sha256": "58798a2dd1ad3d9faff4e02b3413ffefc224ec81121c63eea15e192805219528", + "mode": "0o600" + }, + "g3-source-freeze-v2.json": { + "sha256": "acc575eaa4e836368b40077f8362f73bfa725187fb69c750cb55b29badc54611", + "mode": "0o600" + }, + "g3-offline/receipt.json": { + "sha256": "8578ad7ad8a1188b0e215c49684034e1acdc59702bfc85c2162451e163c3b93e", + "mode": "0o644" + }, + "gpu-client-guard/receipt.json": { + "sha256": "7dc827169937b2dfeadad9d0a802527c4e43d58b3457d07f3a25b39c56e59475", + "mode": "0o644" + }, + "offline-core-c/result.json": { + "sha256": "0a8b9b0177cd22877130903210a8a39852fa7c539f88db999ca91e9ba67af18b", + "mode": "0o644" + }, + "offline-oom-c/result.json": { + "sha256": "fa980c65859cc590ecc6a36d580ef77bfb70dcd6c42320753c577910236b5384", + "mode": "0o644" + }, + "offline-core-mutants/mutations.json": { + "sha256": "42ffcc875e9aa1639f3a9ceb40f127feff52670bd42e2c54c54de6baf5d76aa2", + "mode": "0o644" + } + }, + "g3_freeze_sha256": "acc575eaa4e836368b40077f8362f73bfa725187fb69c750cb55b29badc54611", + "runtime": "NOT_RUN", + "build": "NOT_RUN", + "stage": "NOT_RUN", + "commit_push": "NOT_RUN", + "authorization": "NO_RUNTIME_AUTHORIZATION; B4 source-only supports independent private G3 build gate, subject to parent review", + "notes_sha256": "a305fccd492a72265ae23e17185cf6262739050b58e4aca52a791b43dc2ada59", + "review_artifacts": { + "check.py": "ad38b81d5814605fb1d977f0357fbcebcc6bab98c6a1712a1d15f9725f6d9247", + "graphics-tests.log": "0939b29211a441f77ba669edebef394a9138cb6a85caee7a0292c528db8a8fa2", + "checks.json": "c275ac1329274ce66d71c02a76919a56120469dd4c373a4b23aeb265ec1f1342", + "gpu-check.py": "53c171f40261cae5413c357f10acc7456e4c9b06a13a8a9fded20b62d314ede7", + "test_gl": "689b3508d111a00bd88b22a3222a86df5e98433a10fc6134c2415ce680128784", + "gpu-0.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gpu-1.log": "6ec803c703a1a998847fa09bfa5f3924f53c589c240c84e3254044d11b5d5614", + "gpu-2.log": "e14c1178c590c2c109134f4e15d3a594d98506e8eab1908936042e747c7709e1", + "gpu-3.log": "8d38bb336ccc12945a1e9485bc6e8d0edccfb00370a600ff839e3cf5a7a7fa11", + "gpu-4.log": "2a13d035481d175f8def601c56189df95a040b49c038fb244405cafb31981588", + "gpu-5.log": "7f8ce6c940016515a9dfc2ac2871bfeb33450110fc34111e4fc443333e8d0593", + "gpu-checks.json": "8ecf0b244bf1d10aa033cfd6ef85ac7722ba9ad253e227a4a4df38c816e70b99", + "notes.md": "a305fccd492a72265ae23e17185cf6262739050b58e4aca52a791b43dc2ada59" + } +} diff --git a/docs/design/evidence/step20c-native-closure/source-manifest-v2.json b/docs/design/evidence/step20c-native-closure/source-manifest-v2.json new file mode 100644 index 0000000..1fcec3c --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/source-manifest-v2.json @@ -0,0 +1,573 @@ +{ + "author": "codex-native-closure-implementation", + "files": { + "README.md": "3d4e66160ba6191a3ec381f7104b37f8bda6e378f6001110d6048fd79ad25515", + "gpu/README.md": "83e333c6718ef05c9009ac8340c564f39094abb8353393576f9464ea2a70042c", + "gpu/clients-g2.c": "66658e99704c32d90b073f7664dd4aa9ff1cbf3530c81f7f7ac40e2fa49d9ca7", + "gpu/freeze.py": "1e823aa00aface9416ac687116f51867824973cca5da1ce1b5e1077d7b6d65b8", + "gpu/g2_gl.h": "f7862768293f290044feb013e6c25422ace76ec670813537e96b71f373af5969", + "gpu/g2_native.h": "0ed910ab4285c0db848b715867b0c98241a77f81d7afe0739583bf834fc40263", + "gpu/g3-admission.patch": "0d0717b006d88ade5503431f8e0d20bb1d0416eb745ae37a00a5c9bb1a20e81b", + "gpu/protocol.py": "3b664f1400394980913870cc3de5e0c1e70b7f14a96bee259a21fff954816394", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "996b8c66e1c2276c443336d4cb174634e8e5948823779042f244930525b79cc2", + "gpu/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "gpu/reproduce.py": "169701e803ef0f5cfc1e0e66483a465c5390f841702a905b3f07e381a0d1a4c1", + "gpu/scenario.py": "d844c85d08866bfd07d6324d4f089b87f825ea83234132b2258b0fca4eae2672", + "gpu/test-targeted.py": "09401232887a741cb65ab98ebd44da3786495265410a390cadce7e174d014ce4", + "gpu/test_begin.py": "8e9addbfee3491170dec3303024ddd901aa3d4ead6b25bbafe32424890891f5f", + "gpu/test_gl.c": "7ed342e2119e31a873a90b011466a17bbf08e1c4416397c65c80554636a6483d", + "gpu/test_mutations.py": "b29058af2be2d13a5378bd93aebb2066247a7e5b5434f7c40f73bac463d1cfd3", + "gpu/test_native.c": "53aa4635095b91164140bd0272803c1335b235a42a688da2680fe654c0f2b82a", + "gpu/test_protocol.py": "0ed67c714971b35750c510458ca4d6f358a4d29ad354bfd2aeb6446e7cd19421", + "gpu/validate_source.py": "00ab0e5822be31dc0cbc9c32656ccad56fb4afc28155a421339616f3a5ce1dc0", + "graphics/README.md": "304c6dc3feaf7d48d7e1bddd0cae427bea8a75fe93a5c027f2defd45c2e9382a", + "graphics/cases.py": "1c5bc411a4fb0572955bdefa5fb67032c682a72788bb92d6d9a390cb7055bcc4", + "graphics/clients/fullscreen-client.c": "f71a818ec850bc54bd154f14f5bb300387c3d7340a2f19704f93e49dfbbca2bc", + "graphics/clients/nested-client.c": "88f6ad3f6a2843ac13e2ea9a1fe5407e47d23694197408a096046b9ada9bb5cd", + "graphics/clients/pointer-daemon.c": "a03188a445c4ecef09f420d000315ce71ca70e5c3fd4a2ba8cc60110c32635c3", + "graphics/clients/saved-client.c": "2858fed56cc5384ba325affddbcf35e011cca700015868d42c53ff8ec4ba0867", + "graphics/clients/static-reference.c": "e346a85ded3345b232cd6edca5a1ac57aebfd548a60e12b3c47a5cf515e6c50e", + "graphics/clients/vertical-client.c": "52e050929a21bd5df0aac21a1156f033bca94e3f90950ef5bcfc3d37daa840e5", + "graphics/engine.py": "34a322aad76200a4ef497305ad47b6aeff7f3944fbc2500381e50cd9040c2bc4", + "graphics/freeze.py": "d41cf96717341a64c258d418043a5da5fdb35baa244231c5b0fca2199c8e60ca", + "graphics/fullscreen.py": "601388834f049c2baa0d4fee993437b0fe5b024abc6d07ea3bda27e3199b9953", + "graphics/gate.py": "33d2f61d3d75300774185c15c4426fafdbad803bf247718c640649643875b8ee", + "graphics/geometry.py": "76a80e98887d3a3707ee942b48a49c1850cdc4aeeb28237d9fea33fa3470fb12", + "graphics/gpu_handler.py": "9f8a1cb7bbb0dccea7d84f96bdd2ccdab9937030958c22ca1b996f99e0ab676c", + "graphics/ipc_predicates.py": "5354ba53e1b3f8d0026f4475beebee58d093a81db7d26304cad7085ae3efd352", + "graphics/lifecycle.py": "df0c11027b3b8b0ef371ddb6ec4bcfd28dac09835644d0c3ce6e273d5e565e92", + "graphics/model.py": "a578fc589fb092dae3ccdcf8c4eec12a97e515f721decc4c968078dedcb2367a", + "graphics/offline/test_followup.py": "8316d7804ef2afe88d6fb6e6ab07410481217d5daab23efbaf399bfb84850df4", + "graphics/oom.py": "bf4a07f0337be34c548a0f1752782b36b684bdf4e249f9f7bf757b4fb47c7607", + "graphics/oom_handler.py": "37c5852ad8e5a084b58ad1a5ae842445096eb104f59059b493687792f3e68d6a", + "graphics/pixels.py": "d315ddad978238ffbf1c8e4d712d4608ba23564703332d814f627f57f7b6e7f5", + "graphics/plans.py": "5fe84f4024aa0a8fa0d17a86343cd15d96131d30df3610094b86cfa0d045374c", + "graphics/predicates.py": "abe0c4c5b3b6d533d2714e13d317d68cd02e1f1c6180d2972ff94d00c9069cd1", + "graphics/prepare.py": "bf17e0019f5fa56b4c4c3b86d9a92ef1a6d1526fda64741cc2b5b62fc4a7f4a8", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "3ff6d540be0bc5228195bf072bde42117ea17945a5c2061add5d3cf97d6bb524", + "graphics/protocols/xdg-shell.xml": "7ba7f9c8473deee674cb1f154a18abd0bb0cc072604fc055b0c15e459fc4c7df", + "graphics/run.py": "27891c4e499457bfedceed623679addddb15e722259d976716e268800c72fb8f", + "graphics/validate_offline.py": "15e231eae78e38b38fa0edbec73b2f27440191f7c581f7eb9e4e413113473b1e", + "graphics/validators.py": "a7a19322bfeff1c1122e50f351aebfa46f4b144eb5b795c4389eae5c934e4b1d", + "graphics/wire-fixture.txt": "c6c9fc072f78fbcf9cfdeebcc5becdbdfb61824352495a0e767d7d390267f640" + }, + "independent_review": "NOT_PROVEN", + "limits": { + "captures": 110, + "captures_per_run": 18, + "duration_s": 150, + "runs": 8 + }, + "modes": { + "README.md": "0o644", + "gpu/README.md": "0o644", + "gpu/clients-g2.c": "0o644", + "gpu/freeze.py": "0o644", + "gpu/g2_gl.h": "0o644", + "gpu/g2_native.h": "0o644", + "gpu/g3-admission.patch": "0o644", + "gpu/protocol.py": "0o644", + "gpu/protocols/wlr-layer-shell-unstable-v1.xml": "0o644", + "gpu/protocols/xdg-shell.xml": "0o644", + "gpu/reproduce.py": "0o644", + "gpu/scenario.py": "0o644", + "gpu/test-targeted.py": "0o644", + "gpu/test_begin.py": "0o644", + "gpu/test_gl.c": "0o644", + "gpu/test_mutations.py": "0o644", + "gpu/test_native.c": "0o644", + "gpu/test_protocol.py": "0o644", + "gpu/validate_source.py": "0o644", + "graphics/README.md": "0o644", + "graphics/cases.py": "0o644", + "graphics/clients/fullscreen-client.c": "0o644", + "graphics/clients/nested-client.c": "0o644", + "graphics/clients/pointer-daemon.c": "0o644", + "graphics/clients/saved-client.c": "0o644", + "graphics/clients/static-reference.c": "0o644", + "graphics/clients/vertical-client.c": "0o644", + "graphics/engine.py": "0o644", + "graphics/freeze.py": "0o644", + "graphics/fullscreen.py": "0o644", + "graphics/gate.py": "0o644", + "graphics/geometry.py": "0o644", + "graphics/gpu_handler.py": "0o644", + "graphics/ipc_predicates.py": "0o644", + "graphics/lifecycle.py": "0o644", + "graphics/model.py": "0o644", + "graphics/offline/test_followup.py": "0o644", + "graphics/oom.py": "0o644", + "graphics/oom_handler.py": "0o644", + "graphics/pixels.py": "0o644", + "graphics/plans.py": "0o644", + "graphics/predicates.py": "0o644", + "graphics/prepare.py": "0o644", + "graphics/protocols/wlr-virtual-pointer-unstable-v1.xml": "0o644", + "graphics/protocols/xdg-shell.xml": "0o644", + "graphics/run.py": "0o644", + "graphics/validate_offline.py": "0o644", + "graphics/validators.py": "0o644", + "graphics/wire-fixture.txt": "0o644" + }, + "plans": { + "DY-C": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "core", + "boundary": 0, + "capture_limit": 16, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "DY-C", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + }, + "FS-C": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "core", + "boundary": 0, + "capture_limit": 16, + "client": "fullscreen-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "FS-C", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "fullscreen_cross" + }, + "FS-P": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "pristine", + "boundary": 0, + "capture_limit": 12, + "client": "fullscreen-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "FS-P", + "mode": "pristine", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "fullscreen_cross" + }, + "GPU-CTRL": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "gpu", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "GPU-CTRL", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "B4 and separately reviewed GPU adapter required" + }, + "GPU-G3": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 3, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "gpu", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "GPU-G3", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "B4 and separately reviewed GPU adapter required" + }, + "OM-EXTRA": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "NOT_ADMITTED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 12, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-EXTRA", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross", + "reason": "Distinct question, handler and additional independent review required" + }, + "OM-NESTED": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 10, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-NESTED", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + }, + "OM-ROOT": { + "action_limits": { + "camera": 6, + "chain": 2, + "click": 12, + "configuration": 80, + "grab": 4, + "hook": 1, + "move": 24, + "mutation": 26, + "source_marker": 1, + "spawn": 12, + "tool": 160 + }, + "admission": "INDEPENDENT_REVIEW_REQUIRED", + "axis": 0, + "binary": "oom", + "boundary": 0, + "capture_limit": 10, + "client": "nested-client", + "config": "output HEADLESS-1 resolution 800x600 scale 1 transform normal position -800 0\noutput HEADLESS-2 resolution 800x600 scale 1 transform normal position 0 0\nworkspace 1 output HEADLESS-1\nworkspace 2 output HEADLESS-2\nfocus_follows_mouse no\nseat seat0 hide_cursor 100\nshadows disable\nblur disable\n", + "id": "OM-ROOT", + "mode": "mosaic", + "outputs": [ + { + "logical": [ + -800, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-1", + "scale": 1, + "transform": "normal" + }, + { + "logical": [ + 0, + 0, + 800, + 600 + ], + "mode": [ + 800, + 600 + ], + "name": "HEADLESS-2", + "scale": 1, + "transform": "normal" + } + ], + "placement": "static_cross" + } + }, + "runtime": "NOT_RUN", + "schema": "native-closure-source-v1", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/source-publication.json b/docs/design/evidence/step20c-native-closure/source-publication.json new file mode 100644 index 0000000..f222539 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/source-publication.json @@ -0,0 +1,35 @@ +{ + "commands_receipt": "/var/tmp/swayfx-mosaic-step20c-native-closure-qseaqp39/source-publication-progress.json", + "decision": "VERIFIED", + "github_sha": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "manifest_sha256": "2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7", + "offline_test_only": false, + "origin_sha": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "remote_observations": { + "github": { + "argv": [ + "git", + "ls-remote", + "github", + "refs/heads/main" + ], + "exit": 0, + "stderr": "", + "stdout": "c55373eab3c53132bf1157acc9cfc9edd451156e\trefs/heads/main\n" + }, + "origin": { + "argv": [ + "git", + "ls-remote", + "origin", + "refs/heads/main" + ], + "exit": 0, + "stderr": "", + "stdout": "c55373eab3c53132bf1157acc9cfc9edd451156e\trefs/heads/main\n" + } + }, + "source_commit": "c55373eab3c53132bf1157acc9cfc9edd451156e", + "source_digest": "f21ea193aedfada620c251f0cf6a22375fb993483905129208864e22e535b140", + "ticket": "SWAYFX_MOSAIC_STEP20C_COREC_V2_FULLSCREEN_OOM_GLES_NATIVE_CLOSURE_BATCH_V1" +} diff --git a/docs/design/evidence/step20c-native-closure/system-audit.json b/docs/design/evidence/step20c-native-closure/system-audit.json new file mode 100644 index 0000000..1076e15 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/system-audit.json @@ -0,0 +1,23 @@ +{ + "daily_process": { + "executable": "/usr/bin/sway", + "observation": "read-only comparison to historical closeout baseline; no IPC", + "pid": 2325, + "startticks": "2833" + }, + "free_bytes": 277259689984, + "generated_source_artifacts": [], + "lab_bytes": 230680734, + "owned_pids_checked": 267, + "protected_failures": [], + "protected_files": 316, + "residual_owned_pids": [], + "residual_owned_runtimes": [], + "runtimes_checked": [ + "/tmp/smx-gkdlhcvk", + "/tmp/smx-insrpz6u", + "/tmp/smx-it7zqf9a", + "/tmp/smx-ndlyp6ct", + "/tmp/smx-vly7lmrg" + ] +} diff --git a/docs/design/evidence/step20c-native-closure/workflow-deviations.json b/docs/design/evidence/step20c-native-closure/workflow-deviations.json new file mode 100644 index 0000000..0a28b06 --- /dev/null +++ b/docs/design/evidence/step20c-native-closure/workflow-deviations.json @@ -0,0 +1,46 @@ +{ + "items": [ + { + "evidence": "agent report in execution conversation; source manifests and after-inventories", + "issue": "Initial offline tester generated two Python bytecode files in the source kit", + "resolution": "Agent removed its generated files before final freeze; all later source checks reject pycache" + }, + { + "evidence": "repair-preflight-v1/receipt.json incident", + "issue": "Initial resolver documentation redirection wrote /var/tmp/preflight-contract-read.txt outside the LAB", + "resolution": "Immediately moved into LAB/repair-preflight-v1/contracts.txt" + }, + { + "evidence": "g3-offline/initial-failure-notes.txt; receipt-initial-failed.json; receipt-second-failed.json", + "issue": "Two initial G3 offline attempts failed", + "limit": "Full immutable initial raw log sets are not retained", + "resolution": "Failure receipts retained; final per-index log names overwrite the initial per-index raw logs" + }, + { + "evidence": "tester-offline/graphics-tests.json", + "issue": "Initial offline graphics import failed", + "resolution": "Corrected module path, preserved failure; final62 and subsequent66/73 pass" + }, + { + "evidence": "gpu-client-guard/receipt.json; clone-validation/receipt.json", + "issue": "Initial GPU client link and clone compile missing generated protocol or expected header name", + "resolution": "Generate correct protocol code/header name; actual compilation passes; client never exercised by those compile checks" + }, + { + "evidence": "source-publication-attempt1.json; source-publication-attempt2.json; source-publication-progress.json", + "issue": "First source publication remote check lacked SSH_AUTH_SOCK; first commit attempt lacked HOME configuration", + "resolution": "Kept failure receipts; used existing agent socket and Git user configuration for Git only, changed no Git configuration" + }, + { + "evidence": "build-g3/receipt.json; build-g3-repair/receipt.json", + "issue": "G3 initial Meson setup fused two preprocessor arguments", + "resolution": "One explicit continuation of same reserved pair; originalFAIL retained; no source or shader change" + }, + { + "evidence": "evidence/khronos-download-refusal.json", + "issue": "Direct Khronos PDF download returned HTTP403", + "resolution": "No retry or alternate download; refusal receipt preserved" + } + ], + "scope": "Factual workflow deviations; no runtime evidence repaired or upgraded" +} diff --git a/tooling/probes/step20c-corec-v2-followup/README.md b/tooling/probes/step20c-corec-v2-followup/README.md index ce10f1f..5efb6c8 100644 --- a/tooling/probes/step20c-corec-v2-followup/README.md +++ b/tooling/probes/step20c-corec-v2-followup/README.md @@ -7,6 +7,46 @@ ticket. Its parent is project commit [parent kit](../step20c-corec-v2/README.md) and its closed runtime receipts remain unchanged. This directory does not add a production dependency. +## Post-campaign portability repair — OFFLINE_ONLY + +The closed campaign executed commit +`c55373eab3c53132bf1157acc9cfc9edd451156e`, source manifest v2 SHA256 +`2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7`. +Its historical GPU client SHA256 is +`4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4`; +its G3 compositor SHA256 is +`9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658`. +These identities and their original receipts remain authoritative for that +campaign. FS-P was NOT_EXERCISED at the client identity guard. A separate +post-campaign probe reproduced EACCES for a nondumpable child, while the +original FS-P errno remains NOT_OBSERVABLE. GPU-G3 was INCONCLUSIVE with zero +captures, epochs and arms: reference exited2 after configure/ACK and before SHM. +The old client required the retired LAB's absolute TMPDIR. DY-C, OM-ROOT and +OM-NESTED were PARTIALLY_FEASIBLE in the sampled scope (32 captures total). + +The following source changes are **OFFLINE_ONLY**, made after that campaign, +and have never run in a compositor. The GPU SHM path helper requires SMX_LAB +to be a canonical owned0700 direct child of `/var/tmp` whose name begins +`swayfx-mosaic-step20c-native-closure-`, and TMPDIR to be its exact canonical +owned0700 `scratch` directory. It rejects missing values, old-ticket/outside +paths, symlinks, foreign ownership, wrong modes and truncation, with explicit +stderr diagnostics. mkstemp stays in that scratch directory. Existing core and +dumpability guards remain mandatory. + +Fullscreen client identity still requires an observed matching PID/proc/exe +path and SHA. Inaccessible proc identity now saves NOT_OBSERVABLE plus the +operation and original OS error/errno before the same mandatory gate refuses. +This improves diagnostics and does not fix or exercise the native fullscreen +gate; a future observable identity proof remains to be designed. No self-report +substitute or weakened dumpability is admitted. + +The new helper tests execute only extracted production C path-validation code, +and Python identity predicates. A corrected client may be compiled offline; +that is not a native qualification. The campaign budget is closed: these bytes +authorize no retry, new reservation, GPU-CTRL or other headless run. They require +a new parent-owned source freeze and independent review, without rewriting any +historical manifest, review, admission, ledger or runtime receipt. + The follow-up derives prospective fullscreen, migration/refocus and root/nested OOM fixtures in `graphics/`, and a distinct intrusive GLES diagnostic in `gpu/`. Each implementation has its own offline tests. Independent acceptance of the diff --git a/tooling/probes/step20c-corec-v2-followup/gpu/README.md b/tooling/probes/step20c-corec-v2-followup/gpu/README.md index 30871cd..9f8bce0 100644 --- a/tooling/probes/step20c-corec-v2-followup/gpu/README.md +++ b/tooling/probes/step20c-corec-v2-followup/gpu/README.md @@ -1,11 +1,51 @@ # GPU-G3 — private GLES admission follow-up -EXPERIMENTAL_SOURCE_ONLY. This kit derives a new diagnostic from the published -[G2 sources](../../step20c-corec-v2/gpu/README.md). It carries no G2 binary or -runtime qualification. B4 is INCONCLUSIVE until an independent reviewer accepts -the exact final bytes and receipts. Compositor build, staging and native GPU -run are NOT_RUN. STEP20C remains NEXT; production multi-output is -NOT_YET_SUPPORTED and PRODUCTION_AUTHORIZED is FALSE. +EXPERIMENTAL_SOURCE_ONLY. This kit derives a diagnostic from the published +[G2 sources](../../step20c-corec-v2/gpu/README.md). The historical B4 acceptance, +private build/stage and failed GPU-G3 attempt concern the frozen campaign bytes +identified below. They do not qualify this post-campaign repair. STEP20C remains +NEXT; production multi-output is NOT_YET_SUPPORTED and PRODUCTION_AUTHORIZED is +FALSE. + +## Post-campaign portability repair — OFFLINE_ONLY + +The closed campaign executed commit +`c55373eab3c53132bf1157acc9cfc9edd451156e`, source manifest v2 SHA256 +`2e9fe75a48466fa1a9e3081137146d5cfffb35145c1749160e2c4f350bc6e5b7`. +Its historical GPU client SHA256 is +`4e791780ac62152245891459864283750681b136a246c3c39ccf36b4f33972b4`; +its G3 compositor SHA256 is +`9da90b178f20ea79bc9fb2a105c227f9d5d66a9de7eac77ff4ec3ea102908658`. +These identities and their original receipts remain authoritative for that +campaign. FS-P was NOT_EXERCISED at the client identity guard. A separate +post-campaign probe reproduced EACCES for a nondumpable child, while the +original FS-P errno remains NOT_OBSERVABLE. GPU-G3 was INCONCLUSIVE with zero +captures, epochs and arms: reference exited2 after configure/ACK and before SHM. +The old client required the retired LAB's absolute TMPDIR. DY-C, OM-ROOT and +OM-NESTED were PARTIALLY_FEASIBLE in the sampled scope (32 captures total). + +The following source changes are **OFFLINE_ONLY**, made after that campaign, +and have never run in a compositor. The GPU SHM path helper requires SMX_LAB +to be a canonical owned0700 direct child of `/var/tmp` whose name begins +`swayfx-mosaic-step20c-native-closure-`, and TMPDIR to be its exact canonical +owned0700 `scratch` directory. It rejects missing values, old-ticket/outside +paths, symlinks, foreign ownership, wrong modes and truncation, with explicit +stderr diagnostics. mkstemp stays in that scratch directory. Existing core and +dumpability guards remain mandatory. + +Fullscreen client identity still requires an observed matching PID/proc/exe +path and SHA. Inaccessible proc identity now saves NOT_OBSERVABLE plus the +operation and original OS error/errno before the same mandatory gate refuses. +This improves diagnostics and does not fix or exercise the native fullscreen +gate; a future observable identity proof remains to be designed. No self-report +substitute or weakened dumpability is admitted. + +The new helper tests execute only extracted production C path-validation code, +and Python identity predicates. A corrected client may be compiled offline; +that is not a native qualification. The campaign budget is closed: these bytes +authorize no retry, new reservation, GPU-CTRL or other headless run. They require +a new parent-owned source freeze and independent review, without rewriting any +historical manifest, review, admission, ledger or runtime receipt. ## Normative basis and bounded contract @@ -64,7 +104,8 @@ env -i PATH=/usr/bin:/bin LANG=C.UTF-8 \ TMPDIR="$LAB/scratch" TMP="$LAB/scratch" TEMP="$LAB/scratch" \ XDG_CACHE_HOME="$LAB/cache" XDG_DATA_HOME="$LAB/data" \ PYTHONPYCACHEPREFIX="$LAB/pycache" CCACHE_DIR="$LAB/ccache" \ - python "$KIT/reproduce.py" --lab "$LAB" --core "$CORE/scene" \ + SMX_LAB="$LAB" PYTHONDONTWRITEBYTECODE=1 \ + python -B "$KIT/reproduce.py" --lab "$LAB" --core "$CORE/scene" \ --destination "$LAB/replay-g3-scene" ``` @@ -85,7 +126,23 @@ python "$KIT/test-targeted.py" --lab "$LAB" --scene "$LAB/replay-g3-scene" python "$KIT/freeze.py" --lab "$LAB" --output "$LAB/g3-source-freeze-v2.json" ``` -This performs C17 FakeGL execution of the exact header, controlled wrong +The four post-campaign TMPDIR helper tests are **OFFLINE_ONLY** and require +their own explicit command. The unchanged 12-command `test-targeted.py` +suite did not run `test_tmpdir.py`: + +```sh +env -i PATH=/usr/bin:/bin LANG=C.UTF-8 \ + TMPDIR="$LAB/scratch" TMP="$LAB/scratch" TEMP="$LAB/scratch" \ + XDG_CACHE_HOME="$LAB/cache" XDG_DATA_HOME="$LAB/data" \ + PYTHONPYCACHEPREFIX="$LAB/pycache" CCACHE_DIR="$LAB/ccache" \ + SMX_LAB="$LAB" PYTHONDONTWRITEBYTECODE=1 \ + python -B "$KIT/test_tmpdir.py" +``` + +These tests execute the extracted C validation/template helper, not a Wayland +draw or a native GPU acquisition. They do not qualify the consumed G3 run. + +The targeted suite performs C17 FakeGL execution of the exact header, controlled wrong native variants, exact arm-consumer C extraction, actual native helper C, Python parser/scenario negative tests, source syntax checking, Wayland header generation and client syntax compilation. The client is not executed. It diff --git a/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c b/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c index 6887c60..374d4b0 100644 --- a/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c +++ b/tooling/probes/step20c-corec-v2-followup/gpu/clients-g2.c @@ -16,6 +16,7 @@ #include #include #include +#include /* WHY: one persistent background supplies real A/B commits below blur_tree. * CONTRACT: fixed opaque background, premultiplied ARGB glass and static H2. @@ -74,6 +75,71 @@ static void release(void *data, struct wl_buffer *b) { free_pixels(data); } static const struct wl_buffer_listener buffer_listener = {.release = release}; +/* BEGIN G3_SHM_PATH_HELPER + * WHY: the retired G2 LAB pathname rejects a newly reserved G3 LAB before SHM. + * CONTRACT: only the owned canonical 0700 new-ticket LAB and its exact scratch. + * INVARIANT: no ambient temp fallback, truncation, symlink or dumpability change. + * This bounded helper is extracted verbatim by the non-graphical offline test. */ +static int g3_path_reject(const char *reason) { + fprintf(stderr, "G3_SHM_PATH_REJECT reason=%s errno=%d\n", reason, errno); + return -1; +} +static int g3_private_directory(const char *path) { + struct stat st; + if (lstat(path, &st) < 0) + return g3_path_reject("directory_lstat"); + if (!S_ISDIR(st.st_mode) || st.st_uid != getuid() || + (st.st_mode & 07777) != 0700) { + errno = EPERM; + return g3_path_reject("directory_type_owner_mode"); + } + char *canonical = realpath(path, NULL); + if (!canonical) + return g3_path_reject("directory_realpath"); + bool same = !strcmp(canonical, path); + free(canonical); + if (!same) { + errno = EINVAL; + return g3_path_reject("directory_not_canonical"); + } + return 0; +} +static int g3_shm_path(char *name, size_t capacity) { + const char *lab = getenv("SMX_LAB"), *runtime = getenv("TMPDIR"); + const char prefix[] = "/var/tmp/swayfx-mosaic-step20c-native-closure-"; + if (!lab || !runtime) { + errno = EINVAL; + return g3_path_reject("missing_SMX_LAB_or_TMPDIR"); + } + if (strlen(lab) >= 512 || strlen(runtime) >= 512) { + errno = ENAMETOOLONG; + return g3_path_reject("environment_path_overflow"); + } + if (strncmp(lab, prefix, sizeof(prefix) - 1) || + !lab[sizeof(prefix) - 1] || strchr(lab + sizeof(prefix) - 1, '/')) { + errno = EINVAL; + return g3_path_reject("new_ticket_LAB_prefix_or_direct_child"); + } + char scratch[512]; + int n = snprintf(scratch, sizeof(scratch), "%s/scratch", lab); + if (n < 0 || (size_t)n >= sizeof(scratch)) { + errno = ENAMETOOLONG; + return g3_path_reject("scratch_path_overflow"); + } + if (strcmp(runtime, scratch)) { + errno = EINVAL; + return g3_path_reject("TMPDIR_not_exact_LAB_scratch"); + } + if (g3_private_directory(lab) || g3_private_directory(runtime)) + return -1; + n = snprintf(name, capacity, "%s/g2-shm-XXXXXX", runtime); + if (n < 0 || (size_t)n >= capacity || n >= 512) { + errno = ENAMETOOLONG; + return g3_path_reject("SHM_template_overflow"); + } + return 0; +} +/* END G3_SHM_PATH_HELPER */ static void draw(void) { /* CONTRACT: exactly one runner command per reserved A/B image. * INVARIANT: configures cannot draw, and the sequence is A/B/A only. */ @@ -88,13 +154,13 @@ static void draw(void) { /* CONTRACT: each mapping stays immutable until native wl_buffer.release. * Bounds keep pool/stride integers valid, with at most eight outstanding. */ char name[512]; - const char *runtime = getenv("TMPDIR"); - if (!runtime || strcmp(runtime,"/var/tmp/swayfx-mosaic-corec-v2-i516p6po/scratch") || snprintf(name, sizeof(name), "%s/g2-shm-XXXXXX", runtime) >= - (int)sizeof(name)) + if (g3_shm_path(name, sizeof(name)) < 0) exit(2); int fd = mkstemp(name); - if (fd < 0) + if (fd < 0) { + perror("G3_SHM_MKSTEMP_FAILED"); exit(2); + } unlink(name); if (ftruncate(fd, (off_t)size) < 0) exit(2); diff --git a/tooling/probes/step20c-corec-v2-followup/gpu/test_tmpdir.py b/tooling/probes/step20c-corec-v2-followup/gpu/test_tmpdir.py new file mode 100644 index 0000000..f8bb7b8 --- /dev/null +++ b/tooling/probes/step20c-corec-v2-followup/gpu/test_tmpdir.py @@ -0,0 +1,71 @@ +"""OFFLINE_ONLY: compile/exercise the actual SHM path guard, never Wayland.""" +import os,subprocess,tempfile,unittest +from pathlib import Path + +class TmpdirGuard(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.work=Path(tempfile.mkdtemp(prefix='g3-path-',dir=os.environ['TMPDIR'])) + source=(Path(__file__).parent/'clients-g2.c').read_text() + begin=source.index('/* BEGIN G3_SHM_PATH_HELPER');end=source.index('/* END G3_SHM_PATH_HELPER */',begin) + helper=source[begin:end] + cls.executable=cls.work/'guard' + harness=cls.work/'guard.c' + harness.write_text('''#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +'''+helper+''' +int main(int argc,char **argv) { + struct rlimit limit={0,0}; + if(setrlimit(RLIMIT_CORE,&limit)||prctl(PR_SET_DUMPABLE,0,0,0,0))return 3; + if(argc==3 && !strcmp(argv[1],"directory"))return g3_private_directory(argv[2])?2:0; + char path[512];size_t cap=argc==2?(size_t)strtoul(argv[1],NULL,10):sizeof(path); + if(cap>sizeof(path))return 3; + if(g3_shm_path(path,cap))return 2; + puts(path);return 0; +} +''') + cls.compile_argv=['cc','-std=c17','-O2','-Wall','-Wextra','-Werror',str(harness),'-o',str(cls.executable)] + subprocess.run(cls.compile_argv,check=True,capture_output=True) + def call(self,env=None,*args): + e=dict(os.environ,SMX_LAB=os.environ['SMX_LAB'],TMPDIR=os.environ['SMX_LAB']+'/scratch') + for k,v in (env or {}).items(): + if v is None:e.pop(k,None) + else:e[k]=v + return subprocess.run([str(self.executable),*args],env=e,capture_output=True,text=True) + def refuse(self,env=None,*args): + p=self.call(env,*args);self.assertEqual(p.returncode,2,p.stdout+p.stderr) + self.assertIn('G3_SHM_PATH_REJECT reason=',p.stderr);return p + def test_new_LAB_exact_template(self): + p=self.call();self.assertEqual(p.returncode,0,p.stderr) + self.assertEqual(p.stdout,os.environ['SMX_LAB']+'/scratch/g2-shm-XXXXXX\n') + def test_missing_old_outside_prefix_and_noncanonical(self): + for env in ({'SMX_LAB':None},{'TMPDIR':None}, + {'SMX_LAB':'/var/tmp/swayfx-mosaic-corec-v2-i516p6po','TMPDIR':'/var/tmp/swayfx-mosaic-corec-v2-i516p6po/scratch'}, + {'SMX_LAB':'/tmp/swayfx-mosaic-step20c-native-closure-test'}, + {'SMX_LAB':os.environ['SMX_LAB']+'/../child'}, + {'TMPDIR':str(self.work)}, + {'TMPDIR':os.environ['SMX_LAB']+'/scratch/'}, + {'SMX_LAB':'/var/tmp/swayfx-mosaic-step20c-native-closure-'}): + self.refuse(env) + def test_overflow_environment_and_output(self): + for env in ({'SMX_LAB':'/var/tmp/swayfx-mosaic-step20c-native-closure-'+'x'*512},{'TMPDIR':'x'*512}): + self.assertIn('environment_path_overflow',self.refuse(env).stderr) + self.assertIn('SHM_template_overflow',self.refuse(None,'16').stderr) + def test_real_directory_mode_symlink_and_owner(self): + directory=Path(tempfile.mkdtemp(dir=self.work));directory.chmod(0o700) + self.assertEqual(self.call(None,'directory',str(directory)).returncode,0) + directory.chmod(0o755);self.refuse(None,'directory',str(directory));directory.chmod(0o700) + alias=self.work/'alias';alias.symlink_to(directory);self.refuse(None,'directory',str(alias)) + self.refuse(None,'directory',str(directory)+'/../'+directory.name) + if os.stat('/root').st_uid!=os.getuid():self.refuse(None,'directory','/root') + else:self.skipTest('no accessible foreign-owned 0700 directory') + +if __name__=='__main__':unittest.main(verbosity=2) diff --git a/tooling/probes/step20c-corec-v2-followup/graphics/engine.py b/tooling/probes/step20c-corec-v2-followup/graphics/engine.py index de5c908..21132d4 100644 --- a/tooling/probes/step20c-corec-v2-followup/graphics/engine.py +++ b/tooling/probes/step20c-corec-v2-followup/graphics/engine.py @@ -14,6 +14,26 @@ from lifecycle import opening_pair from model import Provenance COLORS={'TOPLEVEL':(35,68,204),'POPUP_A':(224,192,32),'POPUP_B':(32,208,160)} +def client_executable_identity(pid,binary,expected_sha): + # WHY: PR_SET_DUMPABLE0 can make /proc/PID/exe inaccessible to the parent. + # CONTRACT: preserve OS error and NOT_OBSERVABLE; identity remains mandatory. + # INVARIANT: no fallback, self-reported identity or weakened dumpability. + exe=Path(f'/proc/{pid}/exe');operation='resolve' + proof=dict(pid=pid,proc=str(exe),expected_binary=str(binary),expected_sha256=expected_sha) + try: + actual=exe.resolve(strict=True);operation='sha256';observed=sha(exe) + except OSError as error: + return dict(proof,status='NOT_OBSERVABLE',matches=False,operation=operation, + errno=error.errno,error_type=type(error).__name__,error=str(error)) + return dict(proof,status='OBSERVED',binary=str(actual),sha256=observed, + matches=actual==Path(binary) and observed==expected_sha) + +def require_client_identity(proof): + # The exact predicate used by launch_client remains fail-closed offline too. + need(proof['status']=='OBSERVED' and proof['matches'], + 'actual fullscreen client executable: '+json.dumps(proof,sort_keys=True)) + return proof + def storage_guard(lab): # WHY/CONTRACT/INVARIANT: stop before new action at 9GiB or <20GiB free; # never purge old evidence to manufacture space. @@ -196,8 +216,10 @@ class Session: build=self.lab/'followup-work/client-build' p=self.spawn(name,[build/client,*args],True);self.wait(lambda:self.find(name));time.sleep(.25) if client=='fullscreen-client': - exe=Path(f'/proc/{p.pid}/exe');need(exe.resolve()==build/client and sha(exe)==self.auth['client_binary_sha256'],'actual fullscreen client executable') - self.record('fullscreen-client-identity',pid=p.pid,binary=str(exe.resolve()),sha256=sha(exe)) + proof=client_executable_identity(p.pid,build/client,self.auth['client_binary_sha256']) + self.save('fullscreen-client-identity',proof) + self.record('fullscreen-client-identity',**proof) + require_client_identity(proof) return p def capture(self,tag,out,orientation_pending=False): self.debit('capture');spec=next(o for o in self.outputs if o['name']==out);p=self.run/(tag+'.png');need(not p.exists(),'capture unique') diff --git a/tooling/probes/step20c-corec-v2-followup/graphics/offline/test_followup.py b/tooling/probes/step20c-corec-v2-followup/graphics/offline/test_followup.py index 18bc6e1..fa3a7e6 100644 --- a/tooling/probes/step20c-corec-v2-followup/graphics/offline/test_followup.py +++ b/tooling/probes/step20c-corec-v2-followup/graphics/offline/test_followup.py @@ -216,6 +216,32 @@ class RepairPredicates(unittest.TestCase): p.chmod(0o600);self.rejects(gate.source_modes,root) p.unlink();p.symlink_to('/dev/null');self.rejects(gate.source_modes,root) +class IdentityDiagnostic(unittest.TestCase): + def test_observed_exact_identity_and_mismatch_stays_refused(self): + pid=os.getpid();exe=Path(f'/proc/{pid}/exe');binary=exe.resolve(strict=True) + proof=engine.client_executable_identity(pid,binary,gate.sha(exe)) + self.assertEqual(proof['status'],'OBSERVED');engine.require_client_identity(proof) + self.assertEqual(proof['pid'],pid);self.assertEqual(proof['proc'],str(exe)) + for target,digest in ((binary,'0'*64),(Path('/wrong/binary'),gate.sha(exe))): + proof=engine.client_executable_identity(pid,target,digest) + with self.assertRaises(ValueError):engine.require_client_identity(proof) + def test_EACCES_diagnostic_is_saved_and_same_final_predicate_refuses(self): + import errno + for phase in ('resolve','sha256'): + failure=PermissionError(errno.EACCES,'offline actual OS error fixture','/proc/123/exe') + if phase=='resolve':context=patch.object(Path,'resolve',side_effect=failure) + else:context=patch.object(engine,'sha',side_effect=failure) + with context:proof=engine.client_executable_identity(os.getpid(),Path('/expected'),'a'*64) + self.assertEqual(proof['status'],'NOT_OBSERVABLE');self.assertFalse(proof['matches']) + self.assertEqual(proof['errno'],errno.EACCES);self.assertEqual(proof['operation'],phase) + self.assertIn('PermissionError',proof['error_type']);self.assertIn('offline actual OS error fixture',proof['error']) + with self.assertRaisesRegex(ValueError,'NOT_OBSERVABLE'):engine.require_client_identity(proof) + def test_missing_proc_preserves_errno(self): + import errno + proof=engine.client_executable_identity(2147483647,Path('/expected'),'a'*64) + self.assertEqual(proof['status'],'NOT_OBSERVABLE');self.assertEqual(proof['errno'],errno.ENOENT) + with self.assertRaises(ValueError):engine.require_client_identity(proof) + class Admission(Scientific): def setUp(self): self.root=Path(tempfile.mkdtemp(prefix='gate-',dir=os.environ.get('TMPDIR',str(LAB/'scratch'))));self.ns=self.root/'OFFLINE_TEST_ONLY';self.ns.mkdir(mode=0o700)