From 9d4e7942f5a45b4be37ba75682cd146a58295659 Mon Sep 17 00:00:00 2001 From: fy59 Date: Thu, 15 Oct 2026 09:56:46 +0200 Subject: [PATCH] docs(mosaic): close CORE-C V2 evidence and independent reviews --- CHANGELOG.md | 9 + docs/ARCHITECTURE.md | 11 + docs/DEVELOPMENT.md | 13 + docs/KNOWN_LIMITATIONS.md | 11 + docs/README.md | 9 + docs/ROADMAP.md | 11 + docs/UPSTREAM.md | 12 + .../STEP20C_COREC_V2_INTEGRATION_DECISION.md | 559 ++++++++++++++++++ .../evidence/binary-identities.json | 24 + .../evidence/git-source-reproduction.json | 79 +++ .../evidence/runtime-summary.json | 164 +++++ .../graphics/offline/test_prospective.py | 3 +- .../reviews/final-global-review.json | 99 ++++ .../reviews/initial-runtime-review.json | 79 +++ .../offline-post-run-delta-review.json | 29 + .../reviews/remaining-run-admission.json | 86 +++ .../remaining-runtime-early-review.json | 204 +++++++ .../remaining-runtime-final-review.json | 232 ++++++++ 18 files changed, 1633 insertions(+), 1 deletion(-) create mode 100644 docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION.md create mode 100644 tooling/probes/step20c-corec-v2/evidence/binary-identities.json create mode 100644 tooling/probes/step20c-corec-v2/evidence/git-source-reproduction.json create mode 100644 tooling/probes/step20c-corec-v2/evidence/runtime-summary.json create mode 100644 tooling/probes/step20c-corec-v2/reviews/final-global-review.json create mode 100644 tooling/probes/step20c-corec-v2/reviews/initial-runtime-review.json create mode 100644 tooling/probes/step20c-corec-v2/reviews/offline-post-run-delta-review.json create mode 100644 tooling/probes/step20c-corec-v2/reviews/remaining-run-admission.json create mode 100644 tooling/probes/step20c-corec-v2/reviews/remaining-runtime-early-review.json create mode 100644 tooling/probes/step20c-corec-v2/reviews/remaining-runtime-final-review.json diff --git a/CHANGELOG.md b/CHANGELOG.md index ee08300..85174f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ ### STEP20C experimental evidence +- 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, + O2/R1 NOT_RUN; bounded O1 survival and strict first-A G2 refusal do not close + production gates. Disposition PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE, + recommendation C_FURTHER_NATIVE_REVIEW, production availability UNDECIDED. + Historical lost bytes remain missing; STEP20C NEXT and production + multi-output NOT_YET_SUPPORTED, with no production authorization. + - Record the separate [CORE-C preallocation/native/GPU precision source gate](docs/design/STEP20C_COREC_PREALLOCATION_NATIVE_AND_GPU_PRECISION.md) as BLOCKED after user-confirmed deletion of required historical LABs: three seal receipts absent, 0/979 entries and 0/916 files reverified. Keep diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 420d006..b332618 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1,5 +1,16 @@ # 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. + 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. ## Scope and authority diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 320aa83..29fdb37 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -1,5 +1,18 @@ # Development workflow +For the new experimental CORE-C V2 only, use the +[versioned source-only kit](../tooling/probes/step20c-corec-v2/README.md), its +[private build recipe](../tooling/probes/step20c-corec-v2/BUILD_RECIPE.md) and +[decision/evidence dossier](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md). +Fresh Git-archive reproduction checks complete bytes and modes for new CORE, +OOM and GPU trees; it does not recover historical binaries or prove binary +bit reproducibility. Three private couples/stages and one H1 sanitizer +campaign were consumed; no full-compositor sanitizer H2. Keep generated data +outside HOME, redirect temp/cache with the private wrapper, use separate +sockets, and preserve the LAB. The documented selective purge is NOT EXECUTED. +No new run, production build dependency, installation or live-session action +is authorized by reproduction instructions. + Use separate build directories and headless compositor tests. Ordinary development does not install into `/usr`, reload Sway, or change the active desktop session. The current package is experimental; see [Packaging](PACKAGING.md) for the file-ownership contract. ## Repository and remotes diff --git a/docs/KNOWN_LIMITATIONS.md b/docs/KNOWN_LIMITATIONS.md index fd1002d..da47274 100644 --- a/docs/KNOWN_LIMITATIONS.md +++ b/docs/KNOWN_LIMITATIONS.md @@ -1,5 +1,16 @@ # 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. + 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. | Area | Status | Practical implication | diff --git a/docs/README.md b/docs/README.md index 3aea3bb..1f37b1b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,14 @@ # 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. + Documentation is a first-class project artifact. Architecture and UX contracts are updated before implementation when behavior changes. The [root README](../README.md) is the public summary. For a specific topic, use the canonical document below. Within its own subject, a canonical document takes precedence over a historical STEP report. If two canonical documents disagree, resolve the conflict before implementation; do not silently choose one. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 79aa753..a767fc4 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,5 +1,16 @@ # 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. +STEP20A DONE; STEP20B EXPERIMENTAL; STEP20C NEXT; STEP20D–G PLANNED; +PRODUCTION_MULTI_OUTPUT NOT_YET_SUPPORTED; PRODUCTION_AUTHORIZED FALSE. + This is the canonical order of work, not proof that a feature exists. **A step is not ready for implementation until its user-visible and architectural behavior is documented in the canonical docs.** Update [UX](UX.md), [architecture](ARCHITECTURE.md), and the relevant packaging/upstream documents before changing behavior. Record validation and limitations when the step closes. | Step | State | Goal | diff --git a/docs/UPSTREAM.md b/docs/UPSTREAM.md index 4759cc6..ceaaf58 100644 --- a/docs/UPSTREAM.md +++ b/docs/UPSTREAM.md @@ -1,5 +1,17 @@ # Upstream maintenance +The [CORE-C V2 dossier](design/STEP20C_COREC_V2_INTEGRATION_DECISION.md) +records exact new pinned parents, private patch SHA256, three binary Build IDs +and static-SceneFX/shared-wlroots provider checks. This is experimental +source-only persistence, not a permanent library fork or production merge. +Each changed source/dependency pair requires fresh impact review, rebuild, +ABI/stage and relevant native qualification. Notices remain +LEGAL_NOT_APPROVED; maintenance, release and security owners are unassigned. +Rollback/coexistence is prepared around the distinct Mosaic binary and ordinary +independently updatable SwayFX fallback, with no live rollback executed. +Production availability remains UNDECIDED; STEP20C NEXT, production +multi-output NOT_YET_SUPPORTED and authority FALSE. + SwayFX Mosaic is an independent derivative of [SwayFX](https://github.com/WillPower3309/swayfx), which is based on [Sway](https://github.com/swaywm/sway). It is not endorsed by either project's maintainers. Preserve their license and attribution; see [LICENSE](../LICENSE) and [NOTICE](../NOTICE.md). ## Pinned source base diff --git a/docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION.md b/docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION.md new file mode 100644 index 0000000..9711a8b --- /dev/null +++ b/docs/design/STEP20C_COREC_V2_INTEGRATION_DECISION.md @@ -0,0 +1,559 @@ +# SWAYFX_MOSAIC_STEP20C_REBUILD_FROM_GIT_COREC_OOM_GPU_NIGHT_SHIFT_V1 + +2026-10-15. Dossier expérimental de décision, distinct du +[ticket historique bloqué](STEP20C_COREC_PREALLOCATION_NATIVE_AND_GPU_PRECISION.md) +et du [plan de provenance V2](STEP20C_COREC_V2_PROVENANCE_AND_PLAN.md). +Les contrats canoniques gardent leur autorité. Aucun résultat de ce dossier +n'adopte une politique de production. + +Disposition : **PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE**. +Recommandation OOM : **C_FURTHER_NATIVE_REVIEW**. +Availability production : **UNDECIDED**. +Résultat global : **PARTIALLY_ADVANCED**. + +```text +STEP20A = DONE +STEP20B = EXPERIMENTAL +STEP20C = NEXT +STEP20D–G = PLANNED +PRODUCTION_MULTI_OUTPUT = NOT_YET_SUPPORTED +PRODUCTION_AUTHORIZED = FALSE +``` + +## 1. Provenance nouvelle et persistance Git + +Le début du ticket était `339dda45bc81b953e2f0afadf28765149e3a1ba1`, +sur `main` propre. Le nouveau candidat s'appelle **COREC_V2_REDERIVED**. +Il reconstruit des sources natives complètes depuis les objets Git survivants +et les sources publiques épinglées. Les anciens arbres privés, binaires CORE/ +CORE-C/G1, hooks et captures supprimés restent **MISSING_NOT_RECOVERABLE** ; +aucune égalité avec leurs anciens SHA n'est affirmée. Leurs résultats restent +**HISTORICAL_REPORTED_ONLY**. Les échecs et budgets du ticket précédent restent +inchangés. + +| Élément | Identité exacte | Rôle | +| --- | --- | --- | +| Mosaic parent | `cd550382b311efdbfe3ed892f4e1d281d852e754` | Parent Git de reconstruction | +| Arbre parent Mosaic | `6be2d6cada19bd84673c30dfc4fb900a48b87e86` | Vérification des modes et octets | +| SceneFX | `37ccd723bef49e6891156ffafce8f549f01446cc` | Source publique épinglée | +| Arbre parent SceneFX | `685a78b94f9e44ee683e5fea93874557a9fed457` | Vérification des modes et octets | +| SwayFX pristine | `fd71a6bdc061bd633b488ae7b83e8a6981d22f86` | Contrôle indépendant, pas le checkout modifié | +| wlroots source | `d783533489e1f75d6886c2ab5c5960090ef268f8` | Audit source, non modifié | +| wlroots partagé SHA256 | `7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837` | Fournisseur exact qualifié localement | +| Patch CORE SceneFX SHA256 | `6039799046d052bb4cf2b15fbeb132983d6e3c1a45ad63752a6a63e83b585627` | Delta cumulatif privé | +| Patch CORE Mosaic SHA256 | `9eb6afac0be5c747fbf1a1ee5a33a633c193c4ebae0a36b17636abde7a64c879` | Delta cumulatif privé | + +Le [kit source-only](../../tooling/probes/step20c-corec-v2/README.md) conserve +patches, assemblage, vérification, clients, tests, schémas, budgets et recettes. +Il ne contient ni copie complète d'upstream, ni bibliothèque, ni binaire, +capture, arbre de build ou socket. Ses suppléments OOM/GPU sont séparés du CORE +fonctionnel et portent leurs propres manifests de parents et résultats. + +Les commits source-only suivants étaient publiés normalement sur `origin` +(Forgejo) puis `github`, avant les runs qui en dépendaient : + +- `1053ab2a47f8ff0ab5d52fb0cba92c5dba4ad531` : kit CORE reconstructible ; +- `c0a822a0799ef024727b4a51a7442b8626223a69` : fixtures headless revues ; +- `bf00b0b0ed3e20bfb7c68d2fbbe6553594f3167a` : diagnostics OOM/G2 revus. + +Le dernier kit compte 105 fichiers, environ 1,18 Mo. La reproduction depuis +une archive Git vierge (`results/git-next-kit-reproduction.json`) vérifie les +octets et modes des arbres CORE SceneFX/Mosaic 85/417 fichiers, OOM 86/417, +GPU SceneFX 87 ; une reconstruction CORE indépendante avec fetch public avait +déjà été acceptée. Cela prouve **EXACT_FOR_NEW_TREE**, sans garantir un binaire +reproductible bit à bit. La [recette de build](../../tooling/probes/step20c-corec-v2/BUILD_RECIPE.md) +décrit les prérequis et les limites. + +La publication documentaire finale reste à sceller par le closeout final ; +aucun SHA futur n'est inventé ici. Le contrôle système pré-final confirme +les huit hashes protégés, le PID Sway quotidien 2325, son exécutable +`/usr/bin/sway` et son startticks 2833 inchangés par lecture seule. Tous les +PIDs privés vérifiés sont absents ; aucun `/tmp/smx-*` ne reste. Les huit +premières entrées du ledger sont structurellement identiques aux reçus initiaux. +À cette édition, `bf00b0b0ed3e20bfb7c68d2fbbe6553594f3167a` est la dernière +publication vérifiée. Ce dossier ne prétend pas déjà publié sous son propre +futur commit. + +## 2. Contrat technique V2 et audit C + +SwayFX garde l'autorité sur arbre, focus, caméra, transactions, scène, input et +IPC ; Row 0 emprunte `workspace->tiling`. Le nouveau delta privé garde les +popups root dans leur couche native globale, dérive leur clip de l'owner tiled +CURRENT et laisse les descendants nested hériter. Le leaf réellement caché +reçoit un clip vide ; les ancêtres CURRENT fullscreen sont parcourus ; les +retours standard/floating/fullscreen retirent le clip supplémentaire. Aucune +UX hide/dismiss/reposition ni promesse de click-through universel n'en découle. + +Option C : la factory réserve le sidecar avant `scene_tree_init` et avant toute +publication. L'échec libère l'arbre non publié et retourne NULL. Le setter +n'alloue pas ; NULL désactive en conservant la réservation ; une boîte vide +reste active et masque rendu/input. Les réservations inactives sont ignorées +par get/render/hit ; destroy retire et libère une seule fois. Un root embedded +non réservé est explicitement rejeté par abort, même avec NDEBUG. Ce rejet de +précondition n'est pas le traitement OOM de la factory. + +L'audit inspecte 294 références / 16 symboles, avec ownership, premiers usages, +NULL, rollback et listeners. Les callers du compositor et les helpers wlroots +épinglés sont couverts ; tinywl/examples non liés restent hors qualification. +Les réparations expérimentales sont bornées à l'admission/back-pointer IME, +refocus/rollback, premier usage nullable de dim-rect, admission image-capture +XDG et destruction partielle output/workspace/view/seat. Aucun layout public +de struct ni signature publique ne change. Les translations/intersections +utilisent des bornes larges avant narrowing ; la conversion caméra vérifie +finite/range avant conversion. + +Mesures natives : arbre 128 octets, sidecar 64 octets pour **chaque arbre de +factory**, y compris inactif et non Mosaic. Lookup linéaire ; overhead de +l'allocateur et coût global/performance **NOT MEASURED**. Trois traces passives +restent déclarées (`SPIKE_CLIP`, `PROBE_POPUP_CLIP`, +`PROBE_POPUP_HIDDEN_OWNER`) ; leur neutralité temporelle est **NOT_PROVEN**. +NULL et zéro actif peuvent produire la même ligne de log. `SPIKE_DAMAGE` et +les hooks PI/OPT sont absents du CORE fonctionnel. + +Les corps C exacts sont liés aux SHA complets et offsets de slices ; types +natifs, signaux Wayland et régions Pixman sont réels. Les adapters de damage/ +visibility/effects restent explicitement des adapters : ils ne prouvent pas +le moteur natif. Normal C17, UBSan (dont float-cast/signed overflow/bounds), +ASan+UBSan ont réussi dans le périmètre borné. Les dix mutants compilent tous +et sont tous tués par un oracle exécuté. Les échecs de setup et la correction +du harness root-return restent archivés ; aucun échec de compilation ne compte +comme mutant tué. Le corpus OOM supplémentaire couvre 27 cas dans trois modes, +six mutants causaux et neuf négatifs supplémentaires ; il étend le même +harnais H1, sans campagne sanitizer H2 full-compositor. + +Dix cores systemd précoces (2 261 704 octets sous gestion système hors LAB) et +huit événements journal-only ont précédé le correctif de dumpability. Ils n'ont +été ni supprimés ni manipulés avec sudo. RLIMIT_CORE seul était insuffisant +avec le handler pipé. Le harnais final vérifie PR_SET_DUMPABLE=0 et +PR_GET_DUMPABLE ; l'audit final des corpus n'observe pas de nouvelle entrée. +Il serait faux d'affirmer zéro écriture hors LAB pour les premières exécutions. + +## 3. Trois couples privés et staging + +| Couple | SHA256 du compositor | Build ID | +| --- | --- | --- | +| CORE | `91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb` | `d5d304533f2c8db9d738365e9bd7f2c96779ef8d` | +| OOM | `6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835` | `9bc3dc9055106b343c80a51ded111a382e98442d` | +| GPU | `b2ba890908e385b0a8884e786b279bfb2e582eed38c7fcd0587b418326eca5bc` | `b6a52111beabe3c2122e0142a802415d3c84f9a5` | + +Chaque couple a sa revue ELF/build et son DESTDIR privé de cinq fichiers : +binaire distinct et quatre notices sous `/usr/share/licenses/swayfx-mosaic/`. +SceneFX est statique ; wlroots partagé est le fournisseur exact ci-dessus. +Les revues vérifient symboles privés, layouts, archives, relocations, absence +de SceneFX DT_NEEDED et absence de RPATH/RUNPATH. Les traces loader sont +distinctes des mappings `/proc` observés au runtime. L'acceptation vaut pour +ces octets, pas pour une future paire simplement proche en version. + +Le premier build CORE rencontre un nouvel enum libinput sous Werror ; la +recette privée utilise `-Wno-error=switch`, garde le warning et ne modifie pas +le C. Le premier build GPU échoue sur la déclaration de realpath ; la +configuration privée `-Dc_args=-D_XOPEN_SOURCE=700` définit la macro +`_XOPEN_SOURCE=700` et résout ce problème, sans edit C. +Ces tentatives restent dans leurs réservations de couples ; elles ne sont +pas cachées par le succès ultérieur. Trois couples / trois stages consommés ; +aucun package installé, aucune modification du vrai PKGBUILD ou du patch +production. Notices : **LEGAL_NOT_APPROVED** ; makepkg/distribution ne sont +pas qualifiés par ces stages. + +## 4. Matrice native des 14 cellules prévues + +P0/P1 utilisent le contrôle pristine qualifié séparément (SHA256 +`b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6`). +C1–C8 utilisent uniquement CORE ; O1/O2 uniquement OOM ; G2 uniquement GPU. +Une réservation reste consommée après refus ou échec ; aucun retry. + +| Run | Binaire | Objet | Statut scientifique | Captures / cap réservé | +| --- | --- | --- | --- | --- | +| P0 | pristine | Contrôle standard horizontal | PARTIALLY_FEASIBLE | 10 / 10 | +| C1 | CORE | Horizontal, nested grabs, retours standard | PARTIALLY_FEASIBLE | 16 / 18 | +| C2 | CORE | Vertical | PARTIALLY_FEASIBLE | 8 / 12 | +| C3 | CORE | Scale fractionnaire | PARTIALLY_FEASIBLE | 9 / 12 | +| C4 | CORE | R90 | PARTIALLY_FEASIBLE | 9 / 12 | +| C5 | CORE | Owner caché, même chaîne, retour | PARTIALLY_FEASIBLE | 12 / 12 | +| C6 | CORE | Configure retenu, timeout naturel, retour live | PARTIALLY_FEASIBLE | 10 / 12 | +| C7 | CORE | Resize/migration dynamique | INCONCLUSIVE | 10 / 14 | +| P1 | pristine | Non-leaf fullscreen et débordement réel | PARTIALLY_FEASIBLE | 10 / 10 | +| C8 | CORE | Comparaison non-leaf fullscreen | INCONCLUSIVE | 0 / 12 | +| O1 | OOM | Première réservation root-popup ciblée | INCONCLUSIVE | 6 / 8 | +| G2 | GPU | Première acquisition A, arrêt strict | INCONCLUSIVE | 2 / 16 | +| O2 | OOM | Deuxième réservation ciblée | NOT_RUN — dépendance O1 fermée | 0 / non réservé | +| R1 | aucun | Discriminant conditionnel | NOT_RUN — non admis | 0 / non réservé | + +Total réconcilié : **12 runs lancés une seule fois / 14 maximum ; 102 captures +output / 180 ; somme des caps réservés 148 / 180**. Les deux PNG source-marker +générés pour C3/C4 ne sont pas des captures output. Le snapshot intermédiaire +`phase-status.json` est désormais réconcilié à 12 runs / 102 captures. Son +ancien état 8 runs / 84 captures est préservé dans +`results/resume-audit/phase-status.json.before` et +`results/phase-status-before-closeout.json`, sans modifier les anciens reçus. +Maximum +par run : 18 captures et 150 secondes ; build `-j8` maximum. Une seule campagne +sanitizer H1 sur deux autorisées ; pas de H2 full-compositor. L'espace restant +dans un budget ne constitue pas une admission à rejouer une cellule consommée. + +## 5. Mesures graphiques et refus conservés + +P0 fournit le contrôle standard, avec serial/grab réels, popup root/nested et +débordement standard. Les tests du nouveau CORE ont leurs propres chaînes +wire, points visibles/interdits, captures et retours. La première revue native +vérifie 28 paires wire/input et 30 fermetures pour P0/C1–C7. Les retours H2 +finaux sont exacts dans les échantillons acceptés ; un H2 standard contenant +encore des popups débordants ne doit pas être comparé à un baseline vide. +Les contrôles pristine propres à scale et rotation sont **NOT TESTED**. + +C2 conserve son ancien champ brut X0 `NOT_EXERCISED` ; l'annotation séparée +confirme que l'oracle exécuté utilise l'axe Y à 600, avec A 505..675 et +B 585..715. Aucun raw historique n'est réécrit. C3/C4 couvrent les cellules +scale/R90 échantillonnées, sans qualification universelle de transformations. +C5 garde les mêmes identités et grabs : origin owner -1456 entièrement cachée, +puis retour -318 sans outside click ni dismissal provoqué. + +C6 retient configure39 après ACK30, mesure la cible 636×513, observe le +timeout natif 5000 ms avec une transaction waiting1, puis ACK39 tardif, retour +live et fermeture normale. L'identité du buffer saved natif est **NOT_PROVEN** ; +ces événements ne prouvent ni génération atomique ni lifetime GPU. + +C7 reste INCONCLUSIVE : la fixture calcule un clamp attendu 800 après +migration, mais le focus natif de la cellule 10 (bornes logiques 1280..1920, +viewport 800) impose 1120. Le déplacement appelle réellement le refocus ; +l'oracle l'omet. Les étapes resize antérieures sont mesurées ; pixels/input +post-migration et retour arrière ne sont pas atteints. Aucun défaut CORE n'est +établi par cette divergence. Préserver le raw et corriger prospectivement la +fixture ne permettrait pas de requalifier ce run consommé. + +P1 forme réellement un groupe non-leaf avec deux enfants de largeur 400, +groupe fullscreen 800×600, A `[-448,105,900,170]` et +B `[-348,165,900,130]`. Les captures whole-H2 mapped, A-only et baseline final +sont vérifiées exactement. C8 laisse le peer sibling du workspace, hors du +groupe qui ne contient que l'owner ; le guard refuse avant capture. La +comparaison P1/C8 fullscreen est donc **NOT_EXERCISED**, même si P1 seul est +informatif. Pas de promesse d'exemption fullscreen native qualifiée. + +## 6. OOM : faits natifs et limite de l'oracle + +O1 injecte le premier échec sidecar sur le root-popup ciblé par PID/nonce et +rôle natif, sans épuiser la mémoire réelle. Les compteurs natifs mesurent +`matched=1 failures=1 successes=0 initialized=0 listeners=0 published=0 +children=0`, puis retour NULL. Le même compositor survit : snapshots et IPC +ultérieurs, captures pré/post, boutons du voisin serial42/43. Whole-H2 pré/post +est exact ; le chemin ne publie pas de scène partielle dans cet échantillon. +Le disconnect `no_memory` n'est **pas observé**. + +L'owner ferme A puis TOPLEVEL, sans B créé. L'oracle commun attend soit +B/A/TOPLEVEL, soit TOPLEVEL seul et rejette cette séquence root-only. Les +processus sortent pourtant tous à 0, sans rescue ; CLOSE_RECEIVED, EXIT error0 +et SHM1/1 sont présents. Les deux captures finales prévues sont absentes. +**Scientific cleanup=false**, runner 1, budget et statut **INCONCLUSIVE** +restent immuables ; la fermeture mécanique correcte ne répare pas le verdict. +Le terminal IPC rc1 pendant teardown, avec compositor rc0, décrit la fermeture +de l'endpoint et ne prouve pas un bug de shutdown. + +La fonction availability vérifie par code PID/exécutable/mappings après +injection avant le snapshot ; son retour n'est pas archivé car la sauvegarde +finale a été sautée. Les `proc-maps` conservés sont ceux du startup : ne pas +les présenter comme archive post-injection complète. Survie native bornée +observée ; disponibilité générale, damage complet et absence universelle de +stale listeners **NOT_PROVEN**. O2 reste **NOT_RUN**, sa gate dépendant d'un +O1 complet ; les injections unitaires de deuxième réservation ne remplacent +pas O2 natif. + +| Choix | Availability / fail-closed | Coût et callers | Preuve / décision | +| --- | --- | --- | --- | +| A abort | Arrêt du process ; fail-closed par sa mort | Allocation au setter ; callers inchangés | Historique source ; recovery non prouvé | +| B bool + masque | Recovery à décider ; masque fail-closed à qualifier | Réservation par arbre clippé ; 11 setters/admission à traiter | Harnais historique, pas nouvelle qualification native | +| C préallocation | NULL avant publication ; survie O1 bornée observée | Sidecar pour chaque factory, lookup linéaire ; audit create/rollback | V2 natif partiel ; **C_FURTHER_NATIVE_REVIEW** | + +Cette recommandation technique ne choisit pas la politique production : +**COREC_V2_AVAILABILITY_POLICY=UNDECIDED**. + +## 7. G2 : observabilité partielle et arrêt conforme + +Les nouveaux hooks et sources G2 sont revus séparément ; aucun hook G1 perdu +n'est revendiqué. Le shader de calcul est inchangé à la revue source. La +première acquisition A atteint point0, puis refuse strictement avec +`GLES_STATE_NOT_SUPPORTED` : EGL `client_version=2`, tandis que GL_VERSION +annonce `OpenGL ES 3.2 Mesa 26.2.4-arch1.1`. Le contrat figé exige les deux +prédicats. Il n'est pas assoupli après observation. B et A-return ne sont pas +armés, aucun retry, zéro fichier / zéro octet raw GPU ; seuls deux baselines +H2 exacts sont capturés. Les processus sortent tous à 0 sans rescue ; cleanup +scientifique et mécanique est observé. + +Les métadonnées natives observées décrivent un DMA-BUF 800×600, format +`875713112`, modifier `020000001046bb04`. Plane0 stride3584 offset0 ; plane1 +stride1024 offset2293760. Les FDs sont borrowed ; fstat réussit sur le même +inode. Cela ne prouve pas la longueur d'allocation ; un plan auxiliaire DCC +ne reçoit pas un prédicat de stride d'image inventé. FBO/RBO/texture et objets +natifs sont identifiés, sans preuve du contenu présenté. + +`g2_drain` préliminaire, `glGetString(GL_VERSION)` et drain de query ont été +exécutés ; `pre_errors` et `query_errors` sont vides. En revanche le refus +précède sauvegarde/bind/read/restauration : `read_errors` / `restore_errors` +vides et champs before/after à zéro sont des valeurs initialisées, **pas** +des observations de lecture ou restauration. Aucun `READ_SUCCESS`, bits +d'uniformes ou halfpixel effectif natif n'est observé. L'attribution des +erreurs de readback et la neutralité GL ne sont pas prouvées. Les drains sont +intrusifs : ils consomment les erreurs et ne restaurent pas la queue. + +GL observability reste **PARTIAL**. Les tests offline de modifier, framing, +uniform/precision et négatifs valident les outils dans leur périmètre ; ils +ne fournissent pas les valeurs natives manquantes. Pas d'epsilon ajusté, pas +de fit CPU pour transformer le refus en succès. Whole-H1 A/A-return nouveau +**NOT_PROVEN** ; le FAIL whole-H1 historique reste historique, non rejoué et +non effacé par une ROI centrale. Causalité whole-field GPU **NOT_PROVEN**. + +## 8. Input, damage, commit/present et lifetime + +| Propriété | Preuve V2 | Limite | +| --- | --- | --- | +| Applied/input | Géométries CURRENT, points wire et pixels stabilisés échantillonnés | PARTIALLY_FEASIBLE ; pas d'atomicité générale | +| Damage échantillonné | H2 et retours exacts aux états capturés | PARTIALLY_FEASIBLE ; toutes les frames non couvertes | +| Damage complet / stale pixels | Pas de couverture exhaustive | NOT_PROVEN | +| Commit/present natif | Pas de clé native commune instrumentée dans CORE | NOT_PROVEN | +| Identité exacte du buffer physique présenté | Pas de lien V2 readback/commit/present | NOT_PROVEN | +| Buffer saved natif | Configure/timeout/ACK observés, identité absente | NOT_PROVEN | +| GPU completion / fences / lifetime | Aucun signal effectif mesuré | NOT_PROVEN | +| Génération atomique transaction/scène/input | Aucun compteur adopté ou prouvé | NOT_PROVEN | + +Les compteurs historiques 57/55/2, 821/789/32 et 414/400/14 sont **REPORTED**, +sans replay depuis les LAB supprimés. Aucun appariement entre runs par +proximité temporelle ni aucun héritage d'une instrumentation ancienne. +Décorations, ombres, blur/cache et saved buffers complets restent des gates +indépendantes, malgré les pixels stabilisés favorables. + +## 9. Revues, sévérité et décisions restantes + +Les revues indépendantes source/C, CORE build, fixtures/admission, OOM source/ +build, GPU source/build/portable et les deltas fullscreen/FIFO sont liées à +leurs manifests et hashes. Le kit conserve les reçus compacts sous +`reviews/` ; le LAB garde les preuves détaillées. Les tests négatifs directs +rejettent notamment mauvais SHA, mauvais fournisseur wlroots, archive +dynamique, source stale, ancienne destination LAB et bindings incorrects. +Les révisions source invalident l'avis précédent pour les octets modifiés ; +une acceptation source/offline ne vaut pas admission native. + +La première revue runtime (`review-oom-runtime/runtime-receipt.json`) garde +P0/C1–C6 partiels et C7 inconclusif. La revue +`review-remaining-runtime/early-receipt.json` garde P1 partiel, C8/O1 +inconclusifs et O2 fermé. La décision G2 dépendante autorise seulement le +diagnostic indépendant après examen de l'absence de défaut commun critique +démontré ; elle n'upgrade pas O1. La +[revue finale runtime](../../tooling/probes/step20c-corec-v2/reviews/remaining-runtime-final-review.json) +accepte la vérification bornée du protocole d'arrêt G2 et de la comptabilité +(SHA256 `3372e0ba9f7b33da4fbc041dc4eea97ccc000fb1a9cf809b189c29c90b510569`). +Elle maintient G2 INCONCLUSIVE et toutes les limites de phase I. La revue +globale indépendante est désormais ACCEPTED, sans finding BLOCKING ; elle +confirme la disposition NEEDS_TARGETED_EVIDENCE et la recommandation C, sans +production. Son reçu est conservé dans le kit sous reviews/final-global-review.json. + +| Priorité | Constat | Correction ou preuve de clôture | Responsable | +| --- | --- | --- | --- | +| P0 | Aucun nouveau défaut critique commun démontré dans les revues bornées | Ne signifie pas sûreté globale | Non assigné | +| P1 | Availability OOM production, damage complet, lifetime/présentation, GPU whole-field ouverts | Décision de politique et preuves natives ciblées | Non assigné | +| P2 | C7 omet refocus migration ; C8 ne forme pas le groupe comparable ; O1 oracle root-only incompatible | Correctifs prospectifs source-only et tests directs ; nouveau budget séparé pour run futur | Non assigné | +| P3 | Coût mémoire/performance, overhead allocator, neutralité des traces et portabilité future | Mesures/requalification dédiées | Non assigné | + +Il n'y a pas d'autorisation de nouveaux runs dans cette clôture. Le plus petit +pas ultérieur justifié est une revue native C ciblée et des corrections +offline des trois fixtures P2, suivies seulement si autorisées d'une nouvelle +tranche de preuves ; pas STEP20D ni intégration production. + +## 10. ABI, licences, maintenance et rollback + +Les règles de [maintenance upstream](../UPSTREAM.md) et de +[packaging](../PACKAGING.md) restent applicables. Toute nouvelle révision +SceneFX/wlroots, shaders, dépendances, layout/symboles, clip/damage ou lifetime +exige impact review, rebuild, relocation/stage et nouvelles qualifications +pertinentes. Aucun autre couple n'est qualifié par proximité de version. +Le projet doit assurer veille de sécurité et rebuild du SceneFX embarqué si +une future décision l'adopte ; les responsables maintenance, sécurité et +release sont **non assignés**, sans SLA inventé. + +Le stage de notices n'est pas une validation juridique : **LEGAL_NOT_APPROVED**. +Les licences/notices exactes et la décision de distribution restent à revoir +humainement. Le paquet actuel garde uniquement son binaire distinct ; aucun +`provides`, `conflicts` ou `replaces` avec Sway/SwayFX. SwayFX ordinaire doit +rester indépendamment actualisable et utilisable comme fallback. Le rollback +préparé consiste à revenir au binaire/paquet Mosaic antérieurement qualifié ou +au SwayFX standard, en conservant les manifests ; aucun rollback live n'est +exécuté. Il ne faut ni remplacer `/usr/bin/sway`, ni bibliothèque système, +session, dotfiles ou configuration QuickShell. + +## 11. Stockage, conservation et purge sélective non exécutée + +LAB conservé : `/var/tmp/swayfx-mosaic-corec-v2-i516p6po`, hors HOME. Le diagnostic +initial distingue EDQUOT dans `/tmp` et écriture possible sous `/var/tmp` ; +TMPDIR/TMP/TEMP et caches sont redirigés par `run-env`. Le cap généré est +18 Gio, alerte 12 Gio. Le relevé pré-final mesure LAB 677 228 967 octets +(environ 646 Mio), SSD libre 279 665 819 648 octets (environ 260 Gio), +`/tmp` libre 1 610 719 232 octets (environ 1,50 Gio). Il ne prétend pas être +un maximum historique mesuré. Aucun LAB sous HOME ; le header source +transitoire a été régénéré à l'identique, préservé puis retiré. Les sockets +privés utilisent de petits `/tmp/smx-*` retirés +après les runs. Les premières commandes de build utilisaient le wrapper TMP +mais l'absence de variables de session héritées n'est pas prouvée pour toutes +ces commandes ; aucun consommateur IPC quotidien n'a été observé. + +Une suppression future du LAB ne doit plus supprimer le code reconstructible. +Procédure préparée, **non exécutée** : vérifier les trois commits publiés, +reconstruire/vérifier dans un second répertoire vierge, garder manifests, +reviews, ledger et closeout à préserver ; identifier les seuls répertoires +générés dispensables appartenant à l'UID et vérifier leurs realpaths sous ce +LAB ; supprimer sélectivement uniquement après demande explicite, puis +relever espace et inventaire restant. Ne pas lancer de suppression globale, +suivre de symlinks, supprimer les cores système ou toucher aux sources Git. +Les anciennes preuves perdues ne sont pas récupérées par cette procédure. + +## 12. Marqueurs du ticket + +Les PASS suivants désignent les gates bornées réellement validées, jamais +STEP20C production. L'audit HOME/protections pré-final et la revue globale indépendante sont +acceptés. La publication documentaire finale doit encore être liée à ses +observations directes de remotes dans les reçus de clôture. + +```text +COREC_V2_STORAGE_GATE=PASS +COREC_V2_GIT_GATE=PASS +COREC_V2_RECONSTRUCTION_FROM_SURVIVING_SOURCES=PASS +COREC_V2_SOURCE_EQUIVALENCE=EXACT_FOR_NEW_TREE +COREC_V2_PLAN_AND_PROVENANCE_REVIEW=ACCEPTED +COREC_V2_FULL_SOURCE_REBUILD=PASS +COREC_V2_OPTION_C_CALLSITE_AUDIT=PASS +COREC_V2_SOURCE_FORWARD_APPLY=PASS +COREC_V2_NATIVE_C_SANITIZERS=PASS +COREC_V2_PRIVATE_BUILD=PASS +COREC_V2_PRIVATE_ELF_ABI=PASS +COREC_V2_PRIVATE_STAGE=PASS +COREC_V2_BUILD_REVIEW=ACCEPTED +COREC_V2_GRAPHICS_OFFLINE_PREFLIGHT=PASS +COREC_V2_STANDARD_COMPARISON=PARTIALLY_FEASIBLE +COREC_V2_HORIZONTAL_RETURN=PARTIALLY_FEASIBLE +COREC_V2_VERTICAL=PARTIALLY_FEASIBLE +COREC_V2_FRACTIONAL=PARTIALLY_FEASIBLE +COREC_V2_R90=PARTIALLY_FEASIBLE +COREC_V2_HIDDEN_SAME_CHAIN=PARTIALLY_FEASIBLE +COREC_V2_SAVED_NATURAL_TIMEOUT=PARTIALLY_FEASIBLE +COREC_V2_DYNAMIC=INCONCLUSIVE +COREC_V2_FULLSCREEN_COMPARISON=NOT_EXERCISED +COREC_V2_NATIVE_OOM_PREFLIGHT=ACCEPTED +COREC_V2_OOM_FIRST_ALLOCATION=INCONCLUSIVE +COREC_V2_OOM_SECOND_ALLOCATION=NOT_RUN +COREC_V2_AVAILABILITY_POLICY=UNDECIDED +COREC_V2_GPU_SOURCE_REVIEW=ACCEPTED +COREC_V2_GPU_METADATA_OFFLINE=PASS +COREC_V2_GPU_GL_OBSERVABILITY=PARTIAL +COREC_V2_GPU_RUNTIME=INCONCLUSIVE +COREC_V2_GPU_WHOLE_FIELD_CAUSALITY=NOT_PROVEN +COREC_V2_APPLIED_INPUT_COHERENCE=PARTIALLY_FEASIBLE +COREC_V2_NATIVE_COMMIT_PRESENT=NOT_PROVEN +COREC_V2_SAMPLED_DAMAGE=PARTIALLY_FEASIBLE +COREC_V2_COMPLETE_DAMAGE=NOT_PROVEN +COREC_V2_NATIVE_BUFFER_IDENTITY=NOT_PROVEN +COREC_V2_GPU_COMPLETION=NOT_PROVEN +COREC_V2_ATOMIC_GENERATION=NOT_PROVEN +COREC_V2_REPRODUCIBLE_KIT=PASS +COREC_V2_INDEPENDENT_REVIEW=ACCEPTED +COREC_V2_DOCUMENTARY_PUBLICATION=PARTIAL +COREC_V2_HOME_CLEAN=PASS +SWAYFX_MOSAIC_STEP20C_REBUILD_FROM_GIT_COREC_OOM_GPU_NIGHT_SHIFT_V1=PARTIALLY_ADVANCED +``` + +`COREC_V2_HOME_CLEAN=PASS` désigne l'absence de LAB/caches lourds sous HOME +et le contrôle pré-final ; il n'efface pas les cores système précoces déclarés. +La revue globale indépendante est ACCEPTED, sans finding BLOCKING. Le reçu +reviews/final-global-review.json est matérialisé explicitement par le parent +depuis le retour structuré du reviewer en lecture seule. + +## 13. Réponses aux seize questions imposées + +**Q1. Reconstruction sans ancien LAB ?** Oui, pour cette nouvelle dérivation : +Git et sources publiques épinglées suffisent ; vérification exacte des octets +et modes. Les anciens octets perdus ne sont pas restaurés. + +**Q2. Véritables create NULL traités ?** Audit source/C accepté pour les callers +du compositor et helpers épinglés concernés, avec rollback et premiers usages. +Les exemples non liés restent hors périmètre ; cela ne garantit pas tout OOM +du compositor. + +**Q3. Zéro scène/listener/exposition avant publication ?** Oui dans les tests +exacts et le failpoint root O1 observé (`initialized/listeners/published=0`). +Pas de généralisation à tous sites possibles. + +**Q4. Survie privée à l'injection ?** Oui observée pour O1 : même PID, IPC, +voisin serial42/43 et sorties 0. Le run reste INCONCLUSIVE pour l'oracle de +fermeture ; O2 natif non exécuté. + +**Q5. Régression damage/rendu/hit ?** Pas de régression démontrée dans les +échantillons qualifiés ; damage complet, effets et disponibilité générale +restent NOT_PROVEN. Une absence de défaut échantillonné n'est pas une garantie. + +**Q6. Qualification propre au nouveau SHA ?** Oui, C1–C6 fournissent les +échantillons horizontal/vertical/scale/R90/hidden/saved et retours ; statuts +PARTIALLY_FEASIBLE, contrôles scale/rotation dédiés NOT TESTED. + +**Q7. Fullscreen vraiment comparable ?** P1 pristine oui pour le non-leaf +mesuré ; C8 échoue à construire le même groupe avant capture. Comparaison +CORE/pristine NOT_EXERCISED. + +**Q8. Même chaîne hidden ?** Oui, C5 conserve IDs et grabs sans outside click +entre dissimulation et retour ; portée bornée à cette chaîne. + +**Q9. Saved configure/timeout/live/close ?** C6 observe hold39, timeout naturel, +ACK tardif, live et close. Identité native saved buffer NOT_PROVEN. + +**Q10. GPU nouveau et revu ?** Oui, sources/hooks G2 nouveaux, revues propres, +binaire GPU distinct ; premier A refusé, aucune usurpation de G1. + +**Q11. DCC/halfpixel sans prédicat inventé ?** Métadonnées réelles par plan, +pas de fausse borne allocation ; halfpixel natif non observé à cause du refus. +Pas de tolérance apprise après coup. + +**Q12. Attribution GL et interférence ?** Drains pré/version exécutés et vides ; +lecture/restauration non atteintes, donc pas de preuve read-success/error queue +pour ces étapes. Les drains consomment la queue, interférence explicitée. + +**Q13. Whole-H1 A/A-return égal ?** Non mesuré en V2 : B/A-return non armés. +Causalité whole-field NOT_PROVEN ; FAIL historique conservé sans replay. + +**Q14. Cohérence effectivement mesurée ?** Input/applied et damage stabilisé +partiels ; commit/present natif, buffer physique, GPU completion/lifetime et +génération atomique NOT_PROVEN. + +**Q15. Code survivant à la suppression de /var/tmp ?** Oui pour les patches, +scripts et fixtures publiés et reproduits depuis Git. Les captures et logs +volumineux privés ne sont pas garantis survivants sans conservation séparée ; +le LAB n'est pas supprimé. + +**Q16. Décisions humaines restantes ?** Availability OOM production ; UX popup +offscreen hide/dismiss/reposition ; acceptation juridique des notices ; +responsables maintenance/sécurité/release et décision de distribution ; +admission d'une future tranche native et intégration éventuelle. Toutes restent +ouvertes ; aucun statut production n'est adopté par ce dossier. +## 14. Validation documentaire et état de clôture + +Cette édition documentaire ajoute seulement le présent dossier et de courts +renvois dans README documentaire, Architecture, Known Limitations, Roadmap, +Development, Upstream et Changelog. UX, Packaging, AGENTS, production, +PKGBUILD et patch cumulatif ne sont pas modifiés par cette rédaction. +`git diff --check` réussit ; 348 liens locaux des huit documents sont résolus, +les 43 marqueurs et les seize réponses imposées sont présents. La première +assertion de comptage documentaire omettait R90 dans sa regex sans chiffres ; +le contrôle corrigé compte les 43 noms exacts, sans changement de résultat. +Cette rédaction n'a exécuté aucun build, test runtime, commit ou push. + +La validation de clôture du parent trouve initialement 1 échec sur 48 tests +offline : le test d'environnement utilisait le chemin O1 réel désormais muni +d'un token consommé. Il ne s'agit pas d'un run O1 supplémentaire. Une +correction bornée du test vers son propre répertoire OFFLINE_TEST_ONLY donne +48/48 tests réussis ; sa revue de delta indépendante est acceptée. Le vrai +jeton O1 et le ledger sont inchangés, le jeton factice existant est refusé. +L'échec initial reste conservé. Les reçus reviews/offline-post-run-delta-review.json +et reviews/final-global-review.json sont matérialisés explicitement par le +parent depuis les retours structurés des reviewers en lecture seule. La revue +globale est ACCEPTED sans blocage ; la publication reste à sceller. + +Les autres validations finales transmises à cette édition réussissent : AST +des 43 Python, C17 fullscreen/G2, cinq bindings, manifests historiques +54/105, budget immuable et diff-check. Les nouveaux fichiers de preuves et +la correction offline du parent sont visibles séparément dans le worktree ; +ils ne sont pas des changements effectués par cette rédaction documentaire. + diff --git a/tooling/probes/step20c-corec-v2/evidence/binary-identities.json b/tooling/probes/step20c-corec-v2/evidence/binary-identities.json new file mode 100644 index 0000000..1a9f8e0 --- /dev/null +++ b/tooling/probes/step20c-corec-v2/evidence/binary-identities.json @@ -0,0 +1,24 @@ +{ + "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" + }, + "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" + }, + "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" + }, + "wlroots": { + "path": "/usr/lib/libwlroots-0.20.so", + "sha256": "7edca9a7d65855addda68e29ba5db94d57c803eb5fa7d0f86db3136b90ca9837" + } +} diff --git a/tooling/probes/step20c-corec-v2/evidence/git-source-reproduction.json b/tooling/probes/step20c-corec-v2/evidence/git-source-reproduction.json new file mode 100644 index 0000000..3aec4e6 --- /dev/null +++ b/tooling/probes/step20c-corec-v2/evidence/git-source-reproduction.json @@ -0,0 +1,79 @@ +{ + "source_commit": "bf00b0b0ed3e20bfb7c68d2fbbe6553594f3167a", + "archive_sha256": "c5a1a8845860931a975599a93565b2a083ff8a9594fc06c12f1d1bd4974cdd88", + "commands": [ + { + "argv": [ + "python3", + "-B", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/runtime-next-git-kit/tooling/probes/step20c-corec-v2/assemble.py", + "--project-git", + "/home/fy59/Documents/Development/swayfx-mosaic", + "--scene-git", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/sources/scenefx.git", + "--destination", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-core" + ], + "exit": 0 + }, + { + "argv": [ + "python3", + "-B", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/runtime-next-git-kit/tooling/probes/step20c-corec-v2/verify.py", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-core" + ], + "exit": 0 + }, + { + "argv": [ + "python3", + "-B", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/runtime-next-git-kit/tooling/probes/step20c-corec-v2/oom/assemble-variant.py", + "--core", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-core", + "--destination", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-oom" + ], + "exit": 0 + }, + { + "argv": [ + "python3", + "-B", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/runtime-next-git-kit/tooling/probes/step20c-corec-v2/gpu/reproduce.py", + "--core", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-core/scene", + "--destination", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-gpu", + "--work", + "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/git-next-repro-work" + ], + "exit": 0 + } + ], + "checks": { + "git-next-repro-core/scene": { + "files": 85, + "bytes_and_modes_exact": true + }, + "git-next-repro-core/mosaic": { + "files": 417, + "bytes_and_modes_exact": true + }, + "git-next-repro-oom/scene": { + "files": 86, + "bytes_and_modes_exact": true + }, + "git-next-repro-oom/mosaic": { + "files": 417, + "bytes_and_modes_exact": true + }, + "git-next-repro-gpu": { + "files": 87, + "bytes_and_modes_exact": true + } + }, + "status": "PASS", + "native_builds_or_runs": 0 +} diff --git a/tooling/probes/step20c-corec-v2/evidence/runtime-summary.json b/tooling/probes/step20c-corec-v2/evidence/runtime-summary.json new file mode 100644 index 0000000..d07f918 --- /dev/null +++ b/tooling/probes/step20c-corec-v2/evidence/runtime-summary.json @@ -0,0 +1,164 @@ +{ + "ticket": "SWAYFX_MOSAIC_STEP20C_REBUILD_FROM_GIT_COREC_OOM_GPU_NIGHT_SHIFT_V1", + "source_commit_for_remaining_runs": "bf00b0b0ed3e20bfb7c68d2fbbe6553594f3167a", + "identity": "COREC_V2_REDERIVED", + "runs_consumed": 12, + "captures_consumed": 102, + "capture_caps_consumed": 148, + "run_limit": 14, + "capture_limit": 180, + "production_authorized": false, + "results": [ + { + "id": "P0", + "status": "PARTIALLY_FEASIBLE", + "captures": 10, + "binary_sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "5c29de515ff94695aabc62e85d45f36f" + }, + { + "id": "P1", + "status": "PARTIALLY_FEASIBLE", + "captures": 10, + "binary_sha256": "b7fa32116e3c42706b9b02da7df12f27e76d82dd253deb8bdec81519eed145f6", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "5ac3ec24778847d3a1d1452cd6c25caa" + }, + { + "id": "C1", + "status": "PARTIALLY_FEASIBLE", + "captures": 16, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "5490373d496c4d82b72a9e5f146ad66b" + }, + { + "id": "C2", + "status": "PARTIALLY_FEASIBLE", + "captures": 8, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "f2933d864c6e46abbc0bbffd5d6f8a75" + }, + { + "id": "C3", + "status": "PARTIALLY_FEASIBLE", + "captures": 9, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "932467dd9b70412b8cb91f375dc64302" + }, + { + "id": "C4", + "status": "PARTIALLY_FEASIBLE", + "captures": 9, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "a9edaa8d77024db198ec1f2e06b4e328" + }, + { + "id": "C5", + "status": "PARTIALLY_FEASIBLE", + "captures": 12, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "b28ab37dbb6e4d8da842b511be191e3b" + }, + { + "id": "C6", + "status": "PARTIALLY_FEASIBLE", + "captures": 10, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": null, + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "a594f94bf0a54ba39f10de1ad4fe3c21" + }, + { + "id": "C7", + "status": "INCONCLUSIVE", + "captures": 10, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": "Ambiguous: reconstructed camera clamp mismatch", + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "6ea13abc103540ebb2f0874040a83c5f" + }, + { + "id": "C8", + "status": "INCONCLUSIVE", + "captures": 0, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "runner_failure": "Ambiguous: exact two-child group preparation", + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "2d540bd387b949e2848216bf48000fbd" + }, + { + "id": "O1", + "status": "INCONCLUSIVE", + "captures": 6, + "binary_sha256": "6067946bd79ad6fd8da7669ab9b0b3bacfd2638f5d3d8382002b9118db20d835", + "runner_failure": "Ambiguous: popup child-first destruction order", + "scientific_cleanup": false, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "dcb32bacb26349078f9ca4a7876980b8" + }, + { + "id": "O2", + "status": "NOT_RUN", + "captures": 0, + "reason": "O1 INCONCLUSIVE dependent gate closed" + }, + { + "id": "G2", + "status": "INCONCLUSIVE", + "captures": 2, + "binary_sha256": "b2ba890908e385b0a8884e786b279bfb2e582eed38c7fcd0587b418326eca5bc", + "runner_failure": "RuntimeError: epoch 1 rejected; STOP, no next command/retry", + "scientific_cleanup": true, + "mechanical_rescue": false, + "all_processes_exit0": true, + "token": "4965cef41139433bab3c06f321829068" + }, + { + "id": "R1", + "status": "NOT_RUN", + "captures": 0, + "reason": "optional distinct discriminant not admitted" + } + ], + "limitations": [ + "C7 consumed fixture migration oracle error, never rerun", + "C8 exact group preparation absent, zero captures, no fullscreen comparison to P1", + "O1 root-only closure rejected common oracle, no final pair, no retroactive upgrade", + "G2 A source rejected EGL client_version2 versus GL ES3.2; zero raw bytes, no B or A-return", + "No native commit/present/buffer lifetime/GPU completion/atomic generation proof" + ] +} diff --git a/tooling/probes/step20c-corec-v2/graphics/offline/test_prospective.py b/tooling/probes/step20c-corec-v2/graphics/offline/test_prospective.py index 4df3cb3..6f9c431 100644 --- a/tooling/probes/step20c-corec-v2/graphics/offline/test_prospective.py +++ b/tooling/probes/step20c-corec-v2/graphics/offline/test_prospective.py @@ -108,7 +108,8 @@ class Next(unittest.TestCase): for bad,code in [(raw, None),(raw,-9),(raw,7),(raw.replace(', 1,',', 2,'),0),(raw.replace('71','32'),0),('EXIT error=0',0)]:self.rejects(oom_handler.expected_disconnect,bad,code) s=SimpleNamespace(comp=Mock());s.comp.poll.return_value=-9;self.rejects(oom_handler.availability,s) def test_compositor_only_environment_no_helpers_clients(self): - env=oom.process_environment(LAB,'O1','a'*32) + # Use the per-test OFFLINE_TEST_ONLY root; LAB/O1 contains the sealed real-run token. + env=oom.process_environment(self.root,'O1','a'*32) with patch.dict(os.environ,env):self.assertFalse(any(k.startswith('SMX_OOM_') for k in gate.clean_environment(LAB))) s=engine.Session.__new__(engine.Session);s.run=self.root;s.handles=[];s.proc={};s.expired=False;s.env={};s.oom_env=env;s.compositor_environment=dict(MOSAIC_G2_DIR='offline',MOSAIC_G2_NONCE='a'*64,WLR_RENDERER='gles2');s.debit=Mock();s.record=Mock() with patch.object(engine.shutil,'which',return_value='/usr/bin/prlimit'),patch.object(engine.subprocess,'Popen',return_value=Mock(pid=12)) as popen: diff --git a/tooling/probes/step20c-corec-v2/reviews/final-global-review.json b/tooling/probes/step20c-corec-v2/reviews/final-global-review.json new file mode 100644 index 0000000..c862809 --- /dev/null +++ b/tooling/probes/step20c-corec-v2/reviews/final-global-review.json @@ -0,0 +1,99 @@ +{ + "schema": "corec-v2-final-global-readonly-review-v1", + "reviewer": "/root/tranche_final_audit", + "independent": true, + "decision": "PASS", + "review_status": "ACCEPTED", + "scope": "Final global audit of experimental CORE-C V2 source kit, documentation, scientific evidence, lifecycle and persistence boundaries", + "baseline_commit": "339dda45bc81b953e2f0afadf28765149e3a1ba1", + "published_source_commit": "bf00b0b0ed3e20bfb7c68d2fbbe6553594f3167a", + "blocking_findings": [], + "findings": [ + { + "id": "N1", + "classification": "NON_BLOCKING", + "subject": "C7 migration oracle omits native refocus", + "disposition": "Retain INCONCLUSIVE; prospective correction in a future tranche only" + }, + { + "id": "N2", + "classification": "NON_BLOCKING", + "subject": "C8 owner and peer do not form the comparable two-child group", + "disposition": "Retain INCONCLUSIVE and fullscreen comparison NOT_EXERCISED" + }, + { + "id": "N3", + "classification": "NON_BLOCKING", + "subject": "O1 root-only close rejected by the common child-first oracle", + "disposition": "Retain scientific cleanup INCONCLUSIVE, six captures and O2 NOT_RUN" + }, + { + "id": "N4", + "classification": "NON_BLOCKING", + "subject": "Disclosed historical system cores and incomplete early environment provenance", + "disposition": "Retain explicit historical limitations; no zero-outside-LAB claim" + }, + { + "id": "F1", + "classification": "FUTURE_SCOPE", + "subject": "Per-factory sidecar memory and linear lookup scalability", + "disposition": "Global performance and allocator overhead NOT_MEASURED" + }, + { + "id": "F2", + "classification": "FUTURE_SCOPE", + "subject": "Remaining native qualification, production policy and maintenance decisions", + "disposition": "No production integration or new runtime authorization" + } + ], + "retained_conclusions": { + "global": "PARTIALLY_ADVANCED", + "disposition": "PRIVATE_COREC_V2_NEEDS_TARGETED_EVIDENCE", + "oom_recommendation": "C_FURTHER_NATIVE_REVIEW", + "production_availability": "UNDECIDED", + "STEP20C": "NEXT", + "production_multi_output": "NOT_YET_SUPPORTED", + "production_authorized": false + }, + "independent_checks": { + "git_diff_check": "PASS", + "python_AST": 43, + "local_document_links": 348, + "unique_markers": 43, + "required_answers": 16, + "runtime_review_artifact_hashes": 27, + "protected_hashes": 8, + "CORE_scene_files_bytes_modes": 85, + "CORE_mosaic_files_bytes_modes": 417, + "protected_production_source_delta": "EMPTY", + "offline_test_token_budget_bindings": "PASS", + "runs": 12, + "captures": 102, + "reserved_capture_caps": 148, + "all_recorded_run_durations_below_150s": true + }, + "sha256": { + "reviewed_integration_dossier": "b9eb8a0e95501f78d6d45827793ab318ba452e0bbe65ec0d8a849f674b2c1102", + "source_c_review": "26aa862c741196fdbb8d7cdf5509301e49f763cdd22ffa7bcb1a4bbf09c66f90", + "remaining_runtime_final_review": "3372e0ba9f7b33da4fbc041dc4eea97ccc000fb1a9cf809b189c29c90b510569", + "offline_delta_review": "a164271eab56f561f1064880be2e38f7ed4f66005f7e18df4665bdcaf73fe749", + "offline_test_delta": "8d4f80c9d7f5dee53f06b9538d5523525e62eda77e4fb1632491a724e2cb8df2", + "runtime_summary": "941e73254330e324d3cbc0565e3c9ccc76dcb0f8a2f76fee2a4a6a2475eed705", + "budget": "dfe1897e255ca5a96b7b66b0af0728acdffdf3ddf397a3fa3c6b1011b07c9db6", + "pre_final_system_check": "7392ead2d8792d854240b867c84c735e4f74eb4868c95188b6b4826d51a1bd35", + "closeout_receipt_audit": "3380c7067a78ed3adb797c656f94e08b28a44e31ba5d17669b0e47a7f711f373" + }, + "final_publication": "PENDING_PARENT_CLOSEOUT_NOT_A_REVIEW_FINDING", + "source_edits": 0, + "artifact_writes_by_reviewer": 0, + "new_builds": 0, + "new_native_runs": 0, + "new_clients": 0, + "new_captures": 0, + "IPC_calls": 0, + "new_reservations": 0, + "git_mutations": 0, + "committed": false, + "pushed": false, + "materialized_by": "Parent transcription of explicit structured reviewer response; reviewer performed no file write" +} diff --git a/tooling/probes/step20c-corec-v2/reviews/initial-runtime-review.json b/tooling/probes/step20c-corec-v2/reviews/initial-runtime-review.json new file mode 100644 index 0000000..1f0b292 --- /dev/null +++ b/tooling/probes/step20c-corec-v2/reviews/initial-runtime-review.json @@ -0,0 +1,79 @@ +{ + "schema": "corec-v2-independent-current-eight-run-review", + "decision": "ACCEPTED_PARTIAL_EVIDENCE_C7_INCONCLUSIVE", + "runtime_findings": [ + { + "severity": "P2", + "file": "runtime-git-kit/tooling/probes/step20c-corec-v2/graphics/cases.py", + "symbol": "dynamic_geometry(previous) lines110-112; dynamic_campaign migration", + "requirement": "Reconstruct exact pinned native camera behavior after migration, without treating ordinary refocus as a compositor defect", + "evidence": "move.c661 calls workspace_move_to_output; move.c668 seat_set_focus. seat.c1204-1212 adjusts focused cell camera. Migrated snapshot workspace6 IDs8,9,10 width640 each, focused10 logical bounds1280..1920 viewport800: right-width=1120; actual1120. Fixture min(previous800,max1120)=800 rejects it.", + "smallest_correction": "Future source-only fixture correction must distinguish resize clamp from migration refocus and add direct offline negative/positive cases; preserve C7 INCONCLUSIVE, do not rerun or retroactively PASS." + } + ], + "core_defect_established": false, + "run_set": [ + "P0", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7" + ], + "statuses": { + "P0": "PARTIALLY_FEASIBLE", + "C1": "PARTIALLY_FEASIBLE", + "C2": "PARTIALLY_FEASIBLE", + "C3": "PARTIALLY_FEASIBLE", + "C4": "PARTIALLY_FEASIBLE", + "C5": "PARTIALLY_FEASIBLE", + "C6": "PARTIALLY_FEASIBLE", + "C7": "INCONCLUSIVE" + }, + "binary_sha256": "91f48aae2675331e0a2c60ec2fedf983745c521c75232c704a6516a4140801fb", + "budget_sha256": "8ce8a4134ff841dd0a60e2b108cd8dd688ff891f0867facb377bd0013263d839", + "admission_sha256": "0cf469b78016845e73c5c483150c1964e350ba312fa0dfc0c2e1b91d145be0f1", + "delta_review_sha256": "363080a9bae08a85f00213450b65529538487b4b699152f449539bf860cae21b", + "evidence_manifest_sha256": "324b4f27c4978b7c8abb721df9183beb79febe2caed1c6b8e80dd555db1d0eca", + "offline_checks_sha256": "0b29fddc1d39da4011e18d06603ea0f769fa317226439b93a29ca32433d74695", + "input_checks_sha256": "05cbc1225739c24cc29becc8e0120cc728e854a9ae42074edf60b911150dbafa", + "captures_total": 84, + "input_wire_pairs_checked": 28, + "closures_checked": 30, + "all_exit0_no_rescue": true, + "terminal_IPC_exit": 1, + "C2_axis_annotation_sha256": "95aab3fea44bead98bde84f1dd5aba62106f3fa5c48ccd3d1ceef99d2c44f63d", + "C2": "Legacy raw crossing field X0 NOT_EXERCISED retained; executed validator axis1 Y600 independently corroborated A505..675 and B585..715", + "C6": "Held configure39 follows ACK30; native timeout transaction waiting1; client remains alive and ACK39 later; saved native identity NOT_OBSERVABLE", + "limitations": [ + "P0 single standard control only; pristine fractional/rotation specific controls not run", + "No native presentation, atomic generation, complete damage, saved node/buffer identity or GPU lifetime proof from pixels", + "C7 resize stages camera800 legal nonsaturating; migration pixels/input and return-back stages not reached", + "Standard-layout C1 H2 differences expected while popups continue; final H2 exact", + "No universal click-through; outside grab dismissal retained separately" + ], + "reviewer_native_runs": 0, + "new_reservations": 0, + "source_edits": false, + "commit_push": false, + "output_captures_total": 84, + "generated_marker_source_pngs": 2, + "png_files_total": 86, + "capture_count_correction": { + "superseded_receipt": "runtime-receipt-superseded-marker-count.json", + "superseded_sha256": "9b8466b35ce2562d73db0bf9d99b38dcf8aea0238384cd377354ec2dc09523e3", + "output_captures_per_run": { + "P0": 10, + "C1": 16, + "C2": 8, + "C3": 9, + "C4": 9, + "C5": 12, + "C6": 10, + "C7": 10 + }, + "explanation": "86 PNG files comprise 84 output captures and two generated marker-source.png files in C3/C4, counts_as_capture=False. Source OOM review unchanged; no new audit/run/reservation." + } +} diff --git a/tooling/probes/step20c-corec-v2/reviews/offline-post-run-delta-review.json b/tooling/probes/step20c-corec-v2/reviews/offline-post-run-delta-review.json new file mode 100644 index 0000000..59b6ffc --- /dev/null +++ b/tooling/probes/step20c-corec-v2/reviews/offline-post-run-delta-review.json @@ -0,0 +1,29 @@ +{ + "decision": "PASS", + "scope": "Only test_compositor_only_environment_no_helpers_clients self.root instead of LAB and explanatory comment", + "reviewer": "offline_isolation_delta_review", + "independent": true, + "materialized_by": "parent from explicit reviewer final response, no reviewer file write", + "findings": [], + "tests": { + "offline_suite": "48/48 PASS", + "actual_function_namespace_ignores_real_O1_collision": "PASS", + "actual_function_fake_existing_token_refused": "PASS", + "fake_existing_token_unchanged": "PASS", + "real_token_and_budget_hashes_unchanged": "PASS", + "git_diff_check_bounded_file": "PASS" + }, + "sha256": { + "source_test": "8d4f80c9d7f5dee53f06b9538d5523525e62eda77e4fb1632491a724e2cb8df2", + "real_O1_token": "e4416c9a2967e65bebb0c49667400538904503b8a5e5d185ee9318547d304d0d", + "real_budget": "dfe1897e255ca5a96b7b66b0af0728acdffdf3ddf397a3fa3c6b1011b07c9db6", + "preserved_failure": "fe2141fcdbd575f70be427added2d1f676a23dfd31a188c921571f2846ad6a49", + "gpu_manifest": "38b1daba551758e0969312a1ed5fc459af877ee7d443f2135d6aa62e4831af0e" + }, + "native_runtime": "NOT_RUN", + "new_native_captures": 0, + "new_reservations": 0, + "source_edits_by_reviewer": false, + "committed": false, + "pushed": false +} diff --git a/tooling/probes/step20c-corec-v2/reviews/remaining-run-admission.json b/tooling/probes/step20c-corec-v2/reviews/remaining-run-admission.json new file mode 100644 index 0000000..83eb818 --- /dev/null +++ b/tooling/probes/step20c-corec-v2/reviews/remaining-run-admission.json @@ -0,0 +1,86 @@ +{ + "authorized_runs": [ + "P1", + "C8", + "O1", + "O2", + "G2" + ], + "conditions": { + "C8": "Only via reviewed parent transport after P1 PARTIALLY_FEASIBLE; compare actual P1/C8 configured crossing, roles and geometry before result acceptance", + "G2": "Exactly one A/B/A-return acquisition; strict GLES3 RBO capability only; reject unsupported attachment/context/error/state and STOP without B or retry after rejected A; native_gl_status remains NOT_RUN until actual execution", + "O2": "Only after O1 COMPLETED PARTIALLY_FEASIBLE and no critical or unresolved survival/invariant failure; Ledger.admit enforces" + }, + "decision": "ACCEPTED", + "full_kit_manifest_sha256": "19ad4085ced4a2d9f77f665adff430ca2cf56d0cb41af930356f82d5a28d1370", + "independent": true, + "manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121", + "not_admitted": [ + "R1" + ], + "parent_transport_sha256": "ba2a43e70cbdef9a4ef9aab4529efb8bb4558208f148062a47b3bb07eed9a34b", + "prospective": { + "C8": { + "client_binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/graphics-next-work/client-build/fullscreen-client", + "client_binary_sha256": "82fc218f15f2405cca0f2290cc41bbbc6dfead18c641f796f8fcd4012a16af70", + "client_build_receipt": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/graphics-next-work/client-compile.json", + "client_build_receipt_sha256": "00c97bec3f87077f7edb6fd5e0d0e7ced7ed6c4c1ac76c9d8456647eb59ee793", + "client_build_review": "ACCEPTED", + "decision": "ACCEPTED", + "source_manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121" + }, + "G2": { + "binding": { + "binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/builds/gpu-mosaic/sway/swayfx-mosaic", + "client": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/gpu-work/client-build/g2-client", + "client_sha256": "45b98828e84b94954b4382a3ec1a72d92624667e74534463c133eb3118a689f8", + "gate_file": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/gpu-work/native-runtime-gate.json", + "source_manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121" + }, + "build_review": "ACCEPTED", + "build_review_receipt": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/ownreview-gpu-built/receipt.json", + "build_review_receipt_sha256": "00e78a136ea39a873adbee07653969f7265607c91d5dec5226f9708a14cc0aec", + "client_build_review": "ACCEPTED", + "decision": "ACCEPTED", + "gate_file": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/gpu-work/native-runtime-gate.json", + "gate_file_sha256": "75c0c663552eff71bde989e586a8fea5cf97714d3a26400ffdf8ed71566f2e1a", + "gl_observability_preflight": "ACCEPTED", + "gl_observability_preflight_receipt": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/review-gpu-fifo-delta/receipt.json", + "gl_observability_preflight_receipt_sha256": "247fa681a20433a36eb8ba6a6545c6c784f6e8d1cf168345fcabb867a86737c4", + "gpu_source_manifest": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/results/gpu-source-freeze-corrected.json", + "gpu_source_manifest_sha256": "38b1daba551758e0969312a1ed5fc459af877ee7d443f2135d6aa62e4831af0e", + "gpu_source_review": "ACCEPTED", + "gpu_source_review_receipt": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/review-gpu-fifo-delta/receipt.json", + "gpu_source_review_receipt_sha256": "247fa681a20433a36eb8ba6a6545c6c784f6e8d1cf168345fcabb867a86737c4", + "native_gl_status": "NOT_RUN", + "pair": 3, + "source_manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121" + }, + "O1": { + "client_build_review": "ACCEPTED", + "decision": "ACCEPTED", + "oom_source_review_sha256": "a953a38b49bea11e9c19e84ed2d8218a16b2e5d980e0ba57677eeee0ddf62c6c", + "source_manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121", + "variant_identity": "COREC_V2_NATIVE_OOM_DIAGNOSTIC" + }, + "O2": { + "client_build_review": "ACCEPTED", + "decision": "ACCEPTED", + "oom_source_review_sha256": "a953a38b49bea11e9c19e84ed2d8218a16b2e5d980e0ba57677eeee0ddf62c6c", + "source_manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121", + "variant_identity": "COREC_V2_NATIVE_OOM_DIAGNOSTIC" + }, + "P1": { + "client_binary": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/graphics-next-work/client-build/fullscreen-client", + "client_binary_sha256": "82fc218f15f2405cca0f2290cc41bbbc6dfead18c641f796f8fcd4012a16af70", + "client_build_receipt": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/graphics-next-work/client-compile.json", + "client_build_receipt_sha256": "00c97bec3f87077f7edb6fd5e0d0e7ced7ed6c4c1ac76c9d8456647eb59ee793", + "client_build_review": "ACCEPTED", + "decision": "ACCEPTED", + "source_manifest_sha256": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121" + } + }, + "publication_sha256": "ca17909631b03826605ca1ee3d4f4287c9e1328c9e8992487ece0d997e2a2759", + "reviewer": "/root/remaining_run_admission", + "scope": "Exact remaining source/publication/binary/client/caps bindings only; conditional private ticket runs, no runtime observation inherited" +} diff --git a/tooling/probes/step20c-corec-v2/reviews/remaining-runtime-early-review.json b/tooling/probes/step20c-corec-v2/reviews/remaining-runtime-early-review.json new file mode 100644 index 0000000..d671f2b --- /dev/null +++ b/tooling/probes/step20c-corec-v2/reviews/remaining-runtime-early-review.json @@ -0,0 +1,204 @@ +{ + "IPC_calls": 0, + "O1_native_failure": { + "children": "0", + "failures": "1", + "initialized": "0", + "listeners": "0", + "matched": "1", + "nonce": "dcb32bacb26349078f9ca4a7876980b8", + "parent": "0x55dca3a1ec80", + "pid": "3324847", + "published": "0", + "role": "root_popup", + "successes": "0", + "tree": "0x55dca46ebf50", + "xdg": "0x55dca4750200", + "xdg_parent": "0x55dca4770910" + }, + "O1_scientific_cleanup": "FALSE, retained oracle failure; do not promote to PF", + "O1_survival": "Post-injection snapshots/captures and later IPC rc0; neighbor serial42/43 before close_owner; same PID in native lines; all processes rc0 no rescue", + "O1_wire_root": { + "parent": "TOPLEVEL", + "parent_xdg": 9, + "popup": "POPUP_A", + "role": 14, + "serial": 31, + "wl": 12, + "xdg": 11 + }, + "O2": "NOT_RUN_BLOCKED_BY_O1_INCONCLUSIVE", + "P1_independent_pixels": "PASS exact complete mapped H2, A-only H2 and final baseline replayed from raw captures", + "budget": { + "captures": 100, + "runs": 11, + "sha256": "84e19df60a786b2c346ac58b7179ab1a355142246a06b30d2a98e7d8a4b01873", + "unchanged": true + }, + "committed": false, + "critical_common_failure_for_G2_demonstrated": false, + "critical_leak_demonstrated": false, + "decision": "PASS_BOUNDED_EVIDENCE_REVIEW", + "evidence_sha256": { + "graphics-runs/C8/run/compositor.log": "7a8d4c1963cbbf9edf80f0edc61cfa20fbc150b4d8d25d28eb8bc4229a618971", + "graphics-runs/C8/run/config": "caf7cdff074714cb5b2ba35827558ce5a7defda125de034a7d42296f03b0528b", + "graphics-runs/C8/run/events.jsonl": "186f6c15ae2d3cd1dc8d32879a5e35e277e5577b0be141a79c2692fdf76ddf4d", + "graphics-runs/C8/run/filler0-closed-3324744.log": "5c38d9f9c4098626b02621acf0767b8568252cb616219da26e190b7a99d0a6bc", + "graphics-runs/C8/run/filler0.log": "5c38d9f9c4098626b02621acf0767b8568252cb616219da26e190b7a99d0a6bc", + "graphics-runs/C8/run/fullscreen-before-snapshot.json": "4940bcf318256d9ac86fff32b6d3104b3f6808922cae296dc48500e7886cdd99", + "graphics-runs/C8/run/fullscreen-peer-closed-3324753.log": "0cc01b5502b258adfe98eba1c69fbe28915dac9503cca20ff45bd81f5c322f41", + "graphics-runs/C8/run/fullscreen-peer.log": "0cc01b5502b258adfe98eba1c69fbe28915dac9503cca20ff45bd81f5c322f41", + "graphics-runs/C8/run/outcome.json": "552ed76022f8675c63d75e9b41406ec0754b2e5826b342020c559c4458724bd1", + "graphics-runs/C8/run/owner-closed-3324748.log": "f7c75750e4f2e5536d89eb4f9180ec68f68e885b4e1e0b109ec3bd9f0fcdc517", + "graphics-runs/C8/run/owner.log": "f7c75750e4f2e5536d89eb4f9180ec68f68e885b4e1e0b109ec3bd9f0fcdc517", + "graphics-runs/C8/run/pointer.log": "fbf1d66c7352dee486b0d01ae2d4e258a14c003a534fb592498727ff17ca402f", + "graphics-runs/C8/run/proc-maps.txt": "1b098ca0e65add33840d46e2be6639f42fac6e5d87aebcc74ab5aaa3a256e199", + "graphics-runs/C8/run/reference-closed-3324736.log": "8998c5cec8c36d81d8907248913dab7a1b93ee999e2b27f139e57526dfc68bc4", + "graphics-runs/C8/run/reference.log": "8998c5cec8c36d81d8907248913dab7a1b93ee999e2b27f139e57526dfc68bc4", + "graphics-runs/C8/run/runtime-identity.json": "f91f0bcf1659c348cb4970d87e505510d71d1e66d789393d71a2146e6fc78b85", + "graphics-runs/C8/run/startup-snapshot.json": "ac7adbd8ae0e4b928f80749ee831ebd2f2318d0aa8456547549838ff7e33298b", + "graphics-runs/C8/run/terminal-ipc.json": "c4d44ea275c98e70966926571f95b83a96776fdf06ebf987bc2b2fa9f9a85630", + "graphics-runs/O1/run/H2-reference1.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/O1/run/H2-reference2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/O1/run/compositor.log": "329ad681d7fbaae086365b21c57f077e0f0e1dec61aac158233ff54ceb7daf40", + "graphics-runs/O1/run/config": "caf7cdff074714cb5b2ba35827558ce5a7defda125de034a7d42296f03b0528b", + "graphics-runs/O1/run/events.jsonl": "9ca550feba31bfdfc5afbe8c855e83348b560e238e2d76858051302d9c88df82", + "graphics-runs/O1/run/filler0-closed-3324882.log": "fa784f8ca1d816ca009d25d4540704d14889c2453149b744cf4b2b140f5f3dd7", + "graphics-runs/O1/run/filler0.log": "fa784f8ca1d816ca009d25d4540704d14889c2453149b744cf4b2b140f5f3dd7", + "graphics-runs/O1/run/oom-after-snapshot.json": "fef07f9f67ad6f28ba9bf4e1f9329c4b9fec9f4451f62cd98a0f9d054404f338", + "graphics-runs/O1/run/oom-before-snapshot.json": "686834730d06fbb4bc8e28d858ba863dbae1a516774e4da7d5b3d44d1b099b8a", + "graphics-runs/O1/run/oom-partial-failure.json": "58ec2f56a18a742a9f992d25229a784f81624dcdb4dcf38075c1699c3ca98203", + "graphics-runs/O1/run/oom-post-H1.png": "c8d50e1a0e52074bf595a82a56d5db9f1790cf0cfd7e510c32ceceeba4295802", + "graphics-runs/O1/run/oom-post-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/O1/run/oom-pre-H1.png": "c8d50e1a0e52074bf595a82a56d5db9f1790cf0cfd7e510c32ceceeba4295802", + "graphics-runs/O1/run/oom-pre-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/O1/run/oom-token": "e4416c9a2967e65bebb0c49667400538904503b8a5e5d185ee9318547d304d0d", + "graphics-runs/O1/run/outcome.json": "ff778e31269c9d3494a38cd07e70a2d1b60a42b3d25c9336b3be431594d8d776", + "graphics-runs/O1/run/owner-closed-3324886.log": "3f8e81302a78ab16a1796f6dafc8e5d4cb9051abd79b981caa3bd0fa60a425fe", + "graphics-runs/O1/run/owner-geometry.json": "82cb362257a10a14326b664a0b7dc39dbb447d8e19b0af652a5460f7ec3ed294", + "graphics-runs/O1/run/owner-owner-snapshot.json": "ae35734e8209c1c5b8baba886f4324a133690df0172e87cfa4be864d844f91b6", + "graphics-runs/O1/run/owner.log": "3f8e81302a78ab16a1796f6dafc8e5d4cb9051abd79b981caa3bd0fa60a425fe", + "graphics-runs/O1/run/pointer.log": "3e000d65bad98a385f2320e3c0f14c9dfdecded8d0a117fcda4f3f0fdaf8b0aa", + "graphics-runs/O1/run/proc-maps.txt": "9787ff1cd58ee7de606167531afa27cc7c6270a8d9125e7f81a83580a47ec7ca", + "graphics-runs/O1/run/reference-closed-3324875.log": "5fe3c64d386206db19d8e886cb555f296eb5fc8ff9ea3dd2462f6a483ec4136c", + "graphics-runs/O1/run/reference-stability.json": "f6557d7b4e29b35adcaeafbd4391ebd72faf26d4d8a870c4f668a0d3236e1c78", + "graphics-runs/O1/run/reference.log": "5fe3c64d386206db19d8e886cb555f296eb5fc8ff9ea3dd2462f6a483ec4136c", + "graphics-runs/O1/run/runtime-identity.json": "9053ccfc5e2c4848b15a345aad62e739766fd0c1d32921695f53e9e0d5d59531", + "graphics-runs/O1/run/startup-snapshot.json": "070cad8377aa884463b1dc86cb7d35efd700a23ab967165bed6439bb2a991b55", + "graphics-runs/O1/run/terminal-ipc.json": "c4d44ea275c98e70966926571f95b83a96776fdf06ebf987bc2b2fa9f9a85630", + "graphics-runs/P1/run/H2-reference1.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/P1/run/H2-reference2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/P1/run/compositor.log": "169c700f1fb87c362817b85ef8a559ba3daa54f1492d99905f9cb8ca6ff734b3", + "graphics-runs/P1/run/config": "caf7cdff074714cb5b2ba35827558ce5a7defda125de034a7d42296f03b0528b", + "graphics-runs/P1/run/events.jsonl": "339e34ff32aa4950dfe4bff88663f92182443835eb2c5bd49c2b2c8cb221a9ee", + "graphics-runs/P1/run/filler0-closed-3324617.log": "0ead301c465e67e0cfbeee98eb5a3565a1918f7816b317f2b342c3b7a2dd3572", + "graphics-runs/P1/run/filler0.log": "0ead301c465e67e0cfbeee98eb5a3565a1918f7816b317f2b342c3b7a2dd3572", + "graphics-runs/P1/run/fullscreen-B-closed-H1.png": "57d05417142dec4c40d97240ce1a19c74c943f18e12d641fe14c8b82f931f3ac", + "graphics-runs/P1/run/fullscreen-B-closed-H2.png": "cb3ae85599512bb4cd321ca6e1e6d6098d58e0722b6417c78771e985f5ef6586", + "graphics-runs/P1/run/fullscreen-after-owner-snapshot.json": "f4b15db051c8e8c01af7aeb39a00e371203827b4fdd3398b5b2572a6387ab9a6", + "graphics-runs/P1/run/fullscreen-before-snapshot.json": "490ca9c0126eba35d213c86ad9cf752cbafd297f8cefe2bc453c98546e8a47ad", + "graphics-runs/P1/run/fullscreen-comparability.json": "104f3dd9b66b6ad8463651474403904fbc49a73a9c25c12a1c18333a15f42a80", + "graphics-runs/P1/run/fullscreen-final-H1.png": "af3ac8ce331306347f6bd66831c4eae9bca1f2e42ecb25bb639cbfd16b5e622f", + "graphics-runs/P1/run/fullscreen-final-H2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/P1/run/fullscreen-mapped-H1.png": "41043f2d03433de3c0a1f396d320a1241bb36e18afd02d13863912c2117b054f", + "graphics-runs/P1/run/fullscreen-mapped-H2.png": "55157d11ee8dfe0e56e0a1def7b0efb13659e5eef75bae9561789408d836b90a", + "graphics-runs/P1/run/fullscreen-owner.png": "195648a5928a4c3f963afbb610645a4b4d83bbdecf6a45b43abaa52ea122fc83", + "graphics-runs/P1/run/fullscreen-peer-closed-3324628.log": "8081fa8b3dcab33c21e222305f770233d9815a433d32d4749b652aa5e25bb9f4", + "graphics-runs/P1/run/fullscreen-peer.log": "8081fa8b3dcab33c21e222305f770233d9815a433d32d4749b652aa5e25bb9f4", + "graphics-runs/P1/run/fullscreen-rootA.png": "57d05417142dec4c40d97240ce1a19c74c943f18e12d641fe14c8b82f931f3ac", + "graphics-runs/P1/run/outcome.json": "2d6f603a9b8d304b1af0931463abeeeaee4e0cf9e6bc140810fe4eb76b931e04", + "graphics-runs/P1/run/owner-closed-3324623.log": "0de4bca13044d88fa8ae1704741da137f2ba4c623069b18003fc25fd725d9114", + "graphics-runs/P1/run/owner-geometry.json": "8b59c66a34d6613579dc2fccabe9826b77283f810a97ee1cf71e9cfa3ab20a34", + "graphics-runs/P1/run/owner-owner-snapshot.json": "7cfb55fff4ad43ecd022eddf12266739a6bf9056a42294f9b8a8805bb7df70f5", + "graphics-runs/P1/run/owner.log": "0de4bca13044d88fa8ae1704741da137f2ba4c623069b18003fc25fd725d9114", + "graphics-runs/P1/run/pointer.log": "f082f3a4978914b3709aa7a928c961d434c38a27ae34a07bad1e6f4e95254588", + "graphics-runs/P1/run/proc-maps.txt": "c11c8be4a17a8d9e18bd69ce1fa9b23a7e1dd661960bcb480e36c5cc5729bbb0", + "graphics-runs/P1/run/reference-closed-3324611.log": "01030c793f57a2f65e4580e394967f4f13ac5621d6a5cd653ad732bd35550965", + "graphics-runs/P1/run/reference-stability.json": "f6557d7b4e29b35adcaeafbd4391ebd72faf26d4d8a870c4f668a0d3236e1c78", + "graphics-runs/P1/run/reference.log": "01030c793f57a2f65e4580e394967f4f13ac5621d6a5cd653ad732bd35550965", + "graphics-runs/P1/run/runtime-identity.json": "8a31adf0682d86251ed6903e00b01d305e544f7acb0f4bcb9665c03040dee301", + "graphics-runs/P1/run/startup-snapshot.json": "fc6cc0d684bf0a6ce9378ce317eb0ea4d983f170dc0aa5c39cebf7cfa15f1751", + "graphics-runs/P1/run/terminal-ipc.json": "e6674bddc8ac2b06fb5c2373cf7bc54f0906e7f252559f46928ce70fd0e70cd4" + }, + "findings": [ + { + "evidence": "C8 snapshot workspace6 Mosaic: filler8, group10 with owner9 only, peer11 as workspace sibling; guard fails before captures. P1 actual group10 has owner9+peer11.", + "file": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/runtime-next-git-kit/tooling/probes/step20c-corec-v2/graphics/fullscreen.py", + "severity": "P2", + "smallest_correction_direction": "Future separately authorized fixture must prepare and verify actual group under Mosaic; preserve exact invariant, no replay of consumed C8.", + "symbol": "run: group preparation", + "violated_requirement": "C8 actual equal-child nonleaf fullscreen group comparable to P1" + }, + { + "evidence": "O1 actual destruction order A,TOPLEVEL after failed root allocation; no B CREATE. Common client_exit accepts B,A,TOPLEVEL or TOPLEVEL only, rejects root-only order despite CLOSE_RECEIVED, rc0, EXIT error0 and SHM1/1. Final 2 captures absent.", + "file": "/var/tmp/swayfx-mosaic-corec-v2-i516p6po/runtime-next-git-kit/tooling/probes/step20c-corec-v2/graphics/oom_handler.py", + "severity": "P2", + "smallest_correction_direction": "Future bounded OOM-specific closure oracle verifies exact root-failure lifecycle; preserve current INCONCLUSIVE and no retry.", + "symbol": "run -> Session.close_client -> validators.client_exit", + "violated_requirement": "Prospective O1 validates actual root-failure popup lifecycle and owner closure without nonexistent B" + } + ], + "git_operations": 0, + "independent": true, + "limitations": [ + "C8 fullscreen/nonleaf comparison NOT_EXERCISED", + "O1 INCONCLUSIVE final captures absent", + "Full damage/stale-listener/availability qualification NOT_PROVEN", + "Native GL remains NOT_RUN before G2" + ], + "new_builds": 0, + "new_captures": 0, + "new_runs": 0, + "post_injection_maps_limit": "availability() validates current PID/executable/wlroots maps before oom-after snapshot; its return was not archived because final oom-measurements save was skipped. proc-maps/runtime-identity are startup evidence; do not claim separate full post-injection maps archive.", + "pushed": false, + "results": { + "C8": { + "all_process_exits": 0, + "captures": 0, + "mechanical_rescue": false, + "outer_runner_exit": 1, + "runner_failure": "Ambiguous: exact two-child group preparation", + "scientific_cleanup": true, + "status": "INCONCLUSIVE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.002 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "O1": { + "all_process_exits": 0, + "captures": 6, + "mechanical_rescue": false, + "outer_runner_exit": 1, + "runner_failure": "Ambiguous: popup child-first destruction order", + "scientific_cleanup": false, + "status": "INCONCLUSIVE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.002 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + }, + "P1": { + "all_process_exits": 0, + "captures": 10, + "mechanical_rescue": false, + "outer_runner_exit": 0, + "runner_failure": null, + "scientific_cleanup": true, + "status": "PARTIALLY_FEASIBLE", + "terminal_ipc": { + "ipc_exit": 1, + "stderr": "00:00:00.001 [ERROR] [common/ipc-client.c:86] Unable to receive IPC response\n", + "stdout": "" + } + } + }, + "reviewer": "/root/remaining_run_admission", + "schema": "remaining-runtime-early-independent-review-v1", + "scope": "Only P1/C8/O1 actual evidence and G2 dependency-stop gate; no repair/run/retry", + "source_edits": false, + "terminal_endpoint": "terminal swaymsg exit rc1 Unable to receive IPC response together with compositor rc0 and shutdown teardown is endpoint unavailability; does not establish compositor shutdown bug", + "verification_note": "First read-only evidence check compared richer outcome.json to compact ledger outcome and failed assertion; corrected comparison verifies shared status/process facts. No runtime action occurred." +} diff --git a/tooling/probes/step20c-corec-v2/reviews/remaining-runtime-final-review.json b/tooling/probes/step20c-corec-v2/reviews/remaining-runtime-final-review.json new file mode 100644 index 0000000..b484e3c --- /dev/null +++ b/tooling/probes/step20c-corec-v2/reviews/remaining-runtime-final-review.json @@ -0,0 +1,232 @@ +{ + "G2": { + "EGL_client_version": 2, + "GL_VERSION": "OpenGL ES 3.2 Mesa 26.2.4-arch1.1", + "allocation_length": "NOT_PROVEN", + "baseline_H2": "PASS exact complete RGB 800x600; 2 captures only, no H1 A/A-return comparison", + "cleanup": { + "all_process_exit0": true, + "mechanical": "PASS", + "private_runtime_removed": true, + "reaped": true, + "rescue": false, + "scientific": "PASS", + "terminal_IPC_exit": 1, + "watchdog": false + }, + "consumed": true, + "epochs_2_3": "NOT_RUN", + "error_observation": "pre_errors and version query_errors empty after executed pre/version drains; read_errors/restore_errors remain zero-initialized because early refusal precedes state save/bind/read/restore. Empty arrays are not read success or observed restoration.", + "first_A": "REJECTED", + "metadata_bytes": 1776, + "metadata_rows": [ + "begin", + "sample", + "rejected" + ], + "native_READ_SUCCESS": "NOT_PROVEN", + "no_retry": "PASS no raw files, no epoch2/3 tokens/data and exactly one client source-A command", + "observed_dmabuf": { + "allocation_length": "NOT_PROVEN", + "borrowed": true, + "dimensions": [ + 800, + 600 + ], + "format": 875713112, + "modifier": "020000001046bb04", + "planes": [ + { + "dev": 12, + "fd": 32, + "fstat_ok": true, + "ino": 32909, + "offset": 0, + "stride": 3584 + }, + { + "dev": 12, + "fd": 33, + "fstat_ok": true, + "ino": 32909, + "offset": 2293760, + "stride": 1024 + } + ] + }, + "observed_native_object_metadata": { + "dimensions": [ + 800, + 600 + ], + "fbo_rbo_tex": [ + 7, + 13, + 4 + ], + "fx": "5572d9a735d0", + "image": "5572d9ad6270", + "wlr": "5572d99d5900" + }, + "point": 0, + "raw_GPU_bytes": 0, + "raw_GPU_files": 0, + "reason": "GLES_STATE_NOT_SUPPORTED", + "reason_interpretation": "Frozen g2_read requires both EGL client_version>=3 and GL_VERSION prefix OpenGL ES 3.; observed EGL value fails. Refusal conforms to accepted strict capability contract. No relaxation/retry authorized.", + "source_client_command": [ + "G2_SOURCE_BYTES command=G2-A bytes=1920000 crc32=c03ad22d exact_original=not-return" + ], + "state_zero_fields": "before/after and attachment/channel zeros unmeasured initialized values on this early return", + "status": "INCONCLUSIVE", + "uniforms_and_halfpixel": "NOT_OBSERVED" + }, + "IPC_calls": 0, + "committed": false, + "decision": "PASS_BOUNDED_RECORDING_AND_STOP_PROTOCOL", + "evidence_sha256": { + "gpu-kit/g2_gl.h": "cd175030be6a2e5d0af036c714c03455ef417f78f20360e00f7e6d1d7be7ab13", + "gpu-kit/g2_native.h": "0dfa9e089853a078094736da7f4e133d7fd648500d380dd7f536a7a6f80fdd8e", + "gpu-kit/scenario.py": "a894a74d5b1a9c0378485f0291a8ae788a56bb33ab26665dc6cd033a9271c738", + "gpu-work/acquisition/epoch-1.consumed": "92728523a6a90f41ad63b37bcb08901ed0dedbb1e3743f93dea3ff4aa535e30c", + "gpu-work/acquisition/epoch-1.jsonl": "a8ac7f57be576a793f373fb5363fd4b05351ed5cd60bb5cbefd8ec905566f6ce", + "graphics-runs/G2/run/G2-H2-baseline.json": "1cfa58941ac41b07ea7206add5d1722fa2749eb5be5274b9006b4cbcba8f31b3", + "graphics-runs/G2/run/G2-H2-baseline1.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/G2/run/G2-H2-baseline2.png": "4471e93ccb6cf3ff4970f61fce405431a228af598d2f1f030a3b7586962ecd7a", + "graphics-runs/G2/run/compositor.log": "4a220e8610b627e74775a1866f1cbc6cc926dfda9cf276c873c632fb26ea73e9", + "graphics-runs/G2/run/config": "caf7cdff074714cb5b2ba35827558ce5a7defda125de034a7d42296f03b0528b", + "graphics-runs/G2/run/events.jsonl": "6da260a376155fbe4d170651943113d5d4927ed6e94d3f7fe57806e36de169af", + "graphics-runs/G2/run/g2-background-closed-3347683.log": "64e75816dbb8a6013fa0614637f8176d9ad922e8c630c46b8d92317e36a170d3", + "graphics-runs/G2/run/g2-background.log": "64e75816dbb8a6013fa0614637f8176d9ad922e8c630c46b8d92317e36a170d3", + "graphics-runs/G2/run/g2-glass-closed-3347685.log": "b9c79aee77e15c9b99e43d786009d5b79f279368a3c4da94f3e9be19ea7daf63", + "graphics-runs/G2/run/g2-glass.log": "b9c79aee77e15c9b99e43d786009d5b79f279368a3c4da94f3e9be19ea7daf63", + "graphics-runs/G2/run/g2-reference-closed-3347672.log": "68ab7f0f14e6bfcb09dff2176c8e493de6f84287d1d1fedb9d4904d195c37bd2", + "graphics-runs/G2/run/g2-reference.log": "68ab7f0f14e6bfcb09dff2176c8e493de6f84287d1d1fedb9d4904d195c37bd2", + "graphics-runs/G2/run/outcome.json": "61a6735ad0c700978a2f58c85ba0d59487cb863a81b7c933da63fbc1ccea10d3", + "graphics-runs/G2/run/pointer.log": "fbf1d66c7352dee486b0d01ae2d4e258a14c003a534fb592498727ff17ca402f", + "graphics-runs/G2/run/proc-maps.txt": "fe4ed2ab19539069e1adf7cc047a29af0e9f3bd91a1fdc4d17f274c8ce04c89d", + "graphics-runs/G2/run/runtime-identity.json": "49f38e896a3670ec9bb69d3d1c5809b4a017024693800a6738eaadf9eacea5e8", + "graphics-runs/G2/run/startup-snapshot.json": "01923c0cfc26c32f2675b0386f845b0bc6ffcf262fd5ab6f182ef6ba40f1871b", + "graphics-runs/G2/run/terminal-ipc.json": "e6674bddc8ac2b06fb5c2373cf7bc54f0906e7f252559f46928ce70fd0e70cd4", + "results/native-G2-outer.json": "61c72e5203c2b32143774249bdb595f802b591e2168fa371cf1a8da973d20fd2", + "review-oom-runtime/runtime-receipt.json": "ce5b5bf1d673f18b1eed77c8b3993caa3ea55fa171369cce7737dc5788fe4982", + "review-remaining-runtime/G2-dependency-decision.json": "346cf42b038e3f6f17d07ef363f47edec63ccdf8addecb65de4e22cd65e026d2", + "review-remaining-runtime/early-receipt.json": "fc9fc09efb117282089575503c8716aee4846d931378ce6cd8f378a1c7cb8906" + }, + "git_operations": 0, + "independent": true, + "ledger": { + "O2": "NOT_RUN_BLOCKED_BY_O1_INCONCLUSIVE", + "R1": "NOT_RUN_NOT_ADMITTED", + "completed_reservations": 12, + "immutable_binding_sha256": { + "results/pre-run-freeze.json": "f3e01cf4fdf65a27595f104d105e0b5241c40da8e0ea33b90f0fa1e981ea5767", + "results/pre-run-publication.json": "8ef64e846f789faa75ce3c2dd04f092b1d6cf7b58a1de5e502768d7c4ee61616", + "results/remaining-pre-run-freeze.json": "414e57983d5218fcbea8235c53c09bc8377137d413b5aacf5b0890494db7d121", + "results/remaining-publication.json": "ca17909631b03826605ca1ee3d4f4287c9e1328c9e8992487ece0d997e2a2759", + "review-graphics/run-admission.json": "0cf469b78016845e73c5c483150c1964e350ba312fa0dfc0c2e1b91d145be0f1", + "review-remaining-admission/run-admission.json": "0fb5664d23928444b10309467f9c0aecc228f95bb524db4024a2340594b065c0" + }, + "immutable_prior_bindings": "PASS every recorded manifest/review/publication SHA still exact", + "launched": 12, + "limits": { + "captures": 180, + "captures_per_run": 18, + "duration_s": 150, + "runs": 14 + }, + "output_capture_debits": 102, + "per_run": { + "C1": { + "captures": 16, + "reserved_cap": 18, + "status": "PARTIALLY_FEASIBLE" + }, + "C2": { + "captures": 8, + "reserved_cap": 12, + "status": "PARTIALLY_FEASIBLE" + }, + "C3": { + "captures": 9, + "reserved_cap": 12, + "status": "PARTIALLY_FEASIBLE" + }, + "C4": { + "captures": 9, + "reserved_cap": 12, + "status": "PARTIALLY_FEASIBLE" + }, + "C5": { + "captures": 12, + "reserved_cap": 12, + "status": "PARTIALLY_FEASIBLE" + }, + "C6": { + "captures": 10, + "reserved_cap": 12, + "status": "PARTIALLY_FEASIBLE" + }, + "C7": { + "captures": 10, + "reserved_cap": 14, + "status": "INCONCLUSIVE" + }, + "C8": { + "captures": 0, + "reserved_cap": 12, + "status": "INCONCLUSIVE" + }, + "G2": { + "captures": 2, + "reserved_cap": 16, + "status": "INCONCLUSIVE" + }, + "O1": { + "captures": 6, + "reserved_cap": 8, + "status": "INCONCLUSIVE" + }, + "P0": { + "captures": 10, + "reserved_cap": 10, + "status": "PARTIALLY_FEASIBLE" + }, + "P1": { + "captures": 10, + "reserved_cap": 10, + "status": "PARTIALLY_FEASIBLE" + } + }, + "reservations": 12, + "reserved_capture_caps": 148, + "sha256": "dfe1897e255ca5a96b7b66b0af0728acdffdf3ddf397a3fa3c6b1011b07c9db6" + }, + "new_blocking_findings": [], + "new_builds": 0, + "new_captures": 0, + "new_clients": 0, + "new_runs_by_reviewer": 0, + "next_smallest_step": "Complete evidence/documentation handoff with immutable refusals and consumed statuses; no further graphics or retry under this review", + "out_of_scope_observation": "results/phase-status.json is a historical intermediate snapshot of 8 runs84 captures; final report must use this reconciled ledger and avoid treating that intermediate file as final", + "own_review_artifacts_only": true, + "phase_I": { + "GPU_completion": "NOT_PROVEN", + "GPU_object_lifetime": "NOT_PROVEN", + "GPU_render_input_equivalence": "NOT_PROVEN", + "atomic_transaction_generation": "NOT_PROVEN", + "complete_damage_stale_pixels": "NOT_PROVEN", + "native_commit_present": "NOT_PROVEN", + "presented_physical_buffer_identity": "NOT_PROVEN", + "retained_scope": "Prior eight-run review retained; C6 held configure/timeout/ACK evidence does not identify native saved buffer or atomic generation. P1 sampled control remains PF; C7/C8/O1/G2 remain INCONCLUSIVE.", + "shader_uniforms_halfpixel": "NOT_OBSERVED_DUE_EARLY_REJECTION", + "status": "PARTIAL_EVIDENCE_ONLY", + "whole_field_GPU_causality": "NOT_PROVEN" + }, + "prior_fixture_findings": "C7/P2 retained first-eight review; C8 and O1/P2 retained early-receipt; no repairs/retries performed", + "production": "NOT_AUTHORIZED; STEP20C gates remain open, partial evidence only", + "pushed": false, + "reviewer": "/root/remaining_run_admission", + "schema": "remaining-runtime-final-independent-review-v1", + "scope": "Exact G2 epoch1 refusal, cleanup, final ledger accounting and phase-I evidence boundaries; reuse prior first-eight-run and early remaining-run reviews", + "source_edits": false +}