From cf3b86a696ebd335fbc7f836853bd0efb2a52935 Mon Sep 17 00:00:00 2001 From: Kawa Date: Mon, 13 Apr 2026 14:10:43 +0200 Subject: [PATCH] docs(phase-10): record RTVAL-01 PASS on re-test with fixed .intunewin build - Flip RTVAL-01 from FAIL to PASS after re-test against live tenant rubis.fr - Reference evidence screenshots (tenant-upload, app-assigned) - Fix Package SHA256 (strip trailing garbage) to 8818124aa97ed3da24bf73a1f08f43065e6efea46f44a3abffc9983b097d3ddc - Update top-level Status to IN PROGRESS; plan 10-02 resumed at Task 2 - Resolve ISSUE-01 (fixed in 74535ea HMAC scope + 7716246 Detection.xml alignment) - Lock package to ImpTune commit 00b709d --- .../RUNTIME-VALIDATION.md | 23 +++++++++--------- .../evidence/rtval-01-app-assigned.png | Bin 0 -> 21618 bytes .../evidence/rtval-01-tenant-upload.png | Bin 0 -> 9389 bytes 3 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 .planning/phases/10-real-world-runtime-validation/evidence/rtval-01-app-assigned.png create mode 100644 .planning/phases/10-real-world-runtime-validation/evidence/rtval-01-tenant-upload.png diff --git a/.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md b/.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md index 3e359ff..51c25f5 100644 --- a/.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md +++ b/.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md @@ -1,6 +1,6 @@ # Runtime Validation Report — ImpTune v1.1 -**Status:** BLOCKED — RTVAL-01 FAIL; plan 10-02 stopped at task 1; gap-closure required before resuming +**Status:** IN PROGRESS — RTVAL-01 PASS on re-test (2026-04-13) against fixed build; plan 10-02 resumed at Task 2 (RTVAL-02 on-device install) **Started:** 2026-04-13 **Signed off by:** **Signed off date:** @@ -8,24 +8,25 @@ ## Tenant & Environment | Field | Value | |-------|-------| -| Intune tenant (domain) | arescom.fr | +| Intune tenant (domain) | rubis.fr | | Test device hostname | ARES-5CG5220YTM | | Windows OS build | 26200.7171 | | Device is Intune-managed | yes | | Driver vendor(s) tested | ricoh.zip - PCL6 Driver for Universal Print | -| ImpTune commit SHA | 1c3f458583d826bdcde7ffa5192de6f2fb8e1202 | +| ImpTune commit SHA | 00b709d25aa20a3d5fbdabb728f6083d4f9f958c | | Package file name | Copieur_2eme.intunewin | -| Package SHA256 | 0aac31ff190d21cbb4c76a81d4ad32657a5a3298e7e3fcc79a080e87cf40c333 | +| Package SHA256 | 8818124aa97ed3da24bf73a1f08f43065e6efea46f44a3abffc9983b097d3ddc | | Generated at | 2026-04-13 | ## RTVAL-01 — Tenant ingestion -Status: FAIL -Tested: 2026-04-13 -Evidence: No screenshot captured — the Intune upload form never reached a populated state. UI remained empty; there was no visible error banner to screenshot. -Verbatim symptom (technician): "The intunewin package cant be uploaded, the OK button is greyed out and none of the fields (name, platform, size, mam enabled) gets populated." -Interpretation: Intune accepted the file transfer but was unable to parse its embedded Detection.xml / package metadata. The Win32 app creation wizard stalls in this state when the .intunewin content manifest is malformed or when the embedded `detection.xml` is missing or structurally invalid. This is a structural defect in the package that ImpTune is generating — exactly the runtime gap RTVAL-01 is designed to catch. No portal error banner was shown because the failure occurs silently during client-side metadata extraction. -Package tested: Copieur_2eme.intunewin (SHA256 0aac31ff190d21cbb4c76a81d4ad32657a5a3298e7e3fcc79a080e87cf40c333, ImpTune commit 1c3f458) +Status: PASS +Tested: 2026-04-13 (re-test against fixed build) +Evidence: +- evidence/rtval-01-tenant-upload.png — Intune Win32 app wizard with parsed .intunewin metadata populated (name, platform, size, MAM enabled) +- evidence/rtval-01-app-assigned.png — app assignment screen showing the test device group +Notes: Initial run on 2026-04-13 failed with empty wizard fields and greyed-out OK button (see ISSUE-01). Root cause was two structural defects in the .intunewin generator: (1) HMAC was computed over ciphertext only instead of IV+ciphertext, and (2) Detection.xml did not match the IntuneWinAppUtil.exe reference format. Both fixed in commits 74535ea and 7716246. Re-test on the fixed build against live tenant rubis.fr: package parses cleanly, all wizard fields populate, OK button enabled, assignment saved successfully. +Package tested: Copieur_2eme.intunewin (SHA256 8818124aa97ed3da24bf73a1f08f43065e6efea46f44a3abffc9983b097d3ddc, ImpTune commit 00b709d) ## RTVAL-02 — Install under SYSTEM (pnputil + $PSScriptRoot) Status: BLOCKED — depends on RTVAL-01 PASS; RTVAL-01 returned FAIL (Intune cannot parse generated .intunewin). Cannot proceed until package structure defect is resolved. @@ -52,7 +53,7 @@ Notes: - **Affected file:** Copieur_2eme.intunewin (evidence/Copieur_2eme.intunewin) - **Affected code:** ImpTune .intunewin generator (commit 1c3f458) - **Resolution path:** Debug the generator to verify Detection.xml is being created, embedded, and follows the expected Intune Win32 app manifest schema. Recommended: run `/gsd:debug` on the .intunewin generator, OR let phase verification surface this as a gap and use `/gsd:plan-phase 10 --gaps` to draft a gap-closure plan. -- **Status:** Open — plan 10-02 stopped; gap-closure cycle required before retesting +- **Status:** Resolved in commits 74535ea (HMAC over IV+ciphertext) and 7716246 (Detection.xml alignment with IntuneWinAppUtil.exe reference format). Re-tested 2026-04-13 against live tenant rubis.fr — package now parses; wizard fields populate; OK button enabled. ## Sign-off - [ ] All five RTVAL criteria PASS or have documented rationale diff --git a/.planning/phases/10-real-world-runtime-validation/evidence/rtval-01-app-assigned.png b/.planning/phases/10-real-world-runtime-validation/evidence/rtval-01-app-assigned.png new file mode 100644 index 0000000000000000000000000000000000000000..727bba4f218af2925f47eaeb6defde1c5f12250d GIT binary patch literal 21618 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 TfQUdU)0eb=*Vin$aWCW__P7J` literal 0 HcmV?d00001 diff --git a/.planning/phases/10-real-world-runtime-validation/evidence/rtval-01-tenant-upload.png b/.planning/phases/10-real-world-runtime-validation/evidence/rtval-01-tenant-upload.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7ce532b7b228dd3f5c160f48d97506ff62ca53 GIT binary patch literal 9389 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