From 5e2210ecc0b053ed1552a3fa94a67c9dc368e5fd Mon Sep 17 00:00:00 2001 From: Kawa Date: Mon, 13 Apr 2026 11:19:59 +0200 Subject: [PATCH] docs(phase-10): create runtime validation phase plan --- ...-01-preflight-package-and-scaffold-PLAN.md | 156 +++++++++++++ ...-02-live-intune-runtime-validation-PLAN.md | 207 ++++++++++++++++++ .../10-03-report-signoff-PLAN.md | 144 ++++++++++++ 3 files changed, 507 insertions(+) create mode 100644 .planning/phases/10-real-world-runtime-validation/10-01-preflight-package-and-scaffold-PLAN.md create mode 100644 .planning/phases/10-real-world-runtime-validation/10-02-live-intune-runtime-validation-PLAN.md create mode 100644 .planning/phases/10-real-world-runtime-validation/10-03-report-signoff-PLAN.md diff --git a/.planning/phases/10-real-world-runtime-validation/10-01-preflight-package-and-scaffold-PLAN.md b/.planning/phases/10-real-world-runtime-validation/10-01-preflight-package-and-scaffold-PLAN.md new file mode 100644 index 0000000..0e322f1 --- /dev/null +++ b/.planning/phases/10-real-world-runtime-validation/10-01-preflight-package-and-scaffold-PLAN.md @@ -0,0 +1,156 @@ +--- +phase: 10-real-world-runtime-validation +plan: 01 +type: execute +wave: 1 +depends_on: [] +files_modified: + - .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + - .planning/phases/10-real-world-runtime-validation/evidence/.gitkeep +autonomous: false +requirements: + - RTVAL-05 +must_haves: + truths: + - "A real .intunewin package generated by the current ImpTune build exists on disk and its SHA256 is recorded" + - "A RUNTIME-VALIDATION.md scaffold exists with tenant, device, OS build, and driver vendor fields ready to fill" + - "An evidence/ folder exists under the phase directory for screenshots and logs" + artifacts: + - path: ".planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md" + provides: "Scaffolded evidence report with metadata table and empty result sections" + contains: "## Tenant & Environment" + - path: ".planning/phases/10-real-world-runtime-validation/evidence/.gitkeep" + provides: "Evidence folder placeholder so git tracks the directory" + key_links: + - from: "imptune package export UI" + to: "RUNTIME-VALIDATION.md metadata" + via: "technician records printer name, driver vendor, SHA256, build commit" + pattern: "Package SHA256:.*[a-f0-9]{64}" +--- + + +Produce the artifact under test and the evidence scaffold before any real-world testing begins. + +Purpose: You cannot validate what you did not generate. Lock the exact commit, package, and metadata that will be sent to the tenant so the final report is reproducible. +Output: A real .intunewin package generated by the running ImpTune instance and a RUNTIME-VALIDATION.md scaffold with all environment fields waiting to be filled in. + + + +@C:/Users/SebastienQUEROL/.claude/get-shit-done/workflows/execute-plan.md +@C:/Users/SebastienQUEROL/.claude/get-shit-done/templates/summary.md + + + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@.planning/REQUIREMENTS.md + + + + + + Task 1: Scaffold RUNTIME-VALIDATION.md and evidence folder + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md, .planning/phases/10-real-world-runtime-validation/evidence/.gitkeep + +Create `RUNTIME-VALIDATION.md` under the phase directory with the following sections (empty values to be filled by technician in later tasks): + +``` +# Runtime Validation Report — ImpTune v1.1 + +**Status:** DRAFT (in progress) +**Started:** +**Signed off by:** +**Signed off date:** + +## Tenant & Environment +| Field | Value | +|-------|-------| +| Intune tenant (domain) | | +| Test device hostname | | +| Windows OS build | | +| Device is Intune-managed | yes / no | +| Driver vendor(s) tested | | +| ImpTune commit SHA | | +| Package file name | | +| Package SHA256 | | +| Generated at | | + +## RTVAL-01 — Tenant ingestion +Status: PENDING +Evidence: (screenshot path) +Notes: + +## RTVAL-02 — Install under SYSTEM (pnputil + $PSScriptRoot) +Status: PENDING +Evidence: (IntuneManagementExtension.log excerpt path) +Notes: + +## RTVAL-03 — Detection rule reports Installed +Status: PENDING +Evidence: (screenshot path) +Notes: + +## RTVAL-04 — Uninstall under SYSTEM +Status: PENDING +Evidence: (log path + screenshot) +Notes: + +## Issues Found +(list any defects; link to v1.1 tickets or defer rationale) + +## Sign-off +- [ ] All five RTVAL criteria PASS or have documented rationale +- [ ] Evidence files committed under `evidence/` +- [ ] Signed by: ___________________ +``` + +Also create `.planning/phases/10-real-world-runtime-validation/evidence/.gitkeep` as an empty file so git tracks the evidence directory. + + + test -f .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md && test -f .planning/phases/10-real-world-runtime-validation/evidence/.gitkeep && grep -q "RTVAL-01" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md && grep -q "Sign-off" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + + RUNTIME-VALIDATION.md scaffold exists with all five RTVAL sections and a sign-off block; evidence/ folder exists in git. + + + + Task 2: Technician generates a real .intunewin package from running ImpTune + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + +PAUSE for human technician. Claude cannot run Docker + click through the export UI + read a local file's hash on the user's box. The executor agent must present the following instructions and wait. + +Technician MUST perform the following: + +1. Start ImpTune from the current commit (`docker compose up` or the local dev command). +2. Record the current commit SHA: `git rev-parse HEAD` and paste into RUNTIME-VALIDATION.md "ImpTune commit SHA". +3. In the UI, pick or create a test printer using a driver vendor representative of the target MSP environment (e.g., HP Universal, Konica Minolta, Brother). Record the vendor in the report. +4. Export the package via the package export button. Save the resulting `.intunewin` file locally. +5. Compute its SHA256: `certutil -hashfile .intunewin SHA256` (Windows) or `sha256sum .intunewin` (Linux/WSL). Paste into report. +6. Fill in tenant domain, test device hostname, Windows OS build (`winver` on device), and generation timestamp in the report metadata table. +7. Copy the generated `.intunewin` file into `.planning/phases/10-real-world-runtime-validation/evidence/` (or note its archived location if too large for git). + +Expected outcome: RUNTIME-VALIDATION.md metadata table is FULLY populated before proceeding to plan 10-02. + +Resume signal: reply "metadata filled" (with the package SHA256) or describe blockers. + + + ! grep -E "^\| (Intune tenant|Test device hostname|Windows OS build|Driver vendor\(s\) tested|ImpTune commit SHA|Package file name|Package SHA256|Generated at) \| *\|" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + + Every row in the Tenant & Environment metadata table has a non-empty value; technician has replied "metadata filled". + + + + + +- RUNTIME-VALIDATION.md exists with scaffold +- Metadata table populated (commit SHA, tenant, device, OS build, vendor, package SHA256) +- A real .intunewin file is generated and located (path or archive recorded) + + + +Technician signals "metadata filled"; report metadata table has no empty fields; package file exists and its SHA256 is recorded. + + + +After completion, create `.planning/phases/10-real-world-runtime-validation/10-01-preflight-package-and-scaffold-SUMMARY.md` + diff --git a/.planning/phases/10-real-world-runtime-validation/10-02-live-intune-runtime-validation-PLAN.md b/.planning/phases/10-real-world-runtime-validation/10-02-live-intune-runtime-validation-PLAN.md new file mode 100644 index 0000000..be3eaa7 --- /dev/null +++ b/.planning/phases/10-real-world-runtime-validation/10-02-live-intune-runtime-validation-PLAN.md @@ -0,0 +1,207 @@ +--- +phase: 10-real-world-runtime-validation +plan: 02 +type: execute +wave: 2 +depends_on: + - 10-01 +files_modified: + - .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + - .planning/phases/10-real-world-runtime-validation/evidence/ +autonomous: false +requirements: + - RTVAL-01 + - RTVAL-02 + - RTVAL-03 + - RTVAL-04 +must_haves: + truths: + - "A real Intune tenant accepted the generated .intunewin without format errors (RTVAL-01)" + - "A real Intune-managed Windows endpoint ran the install script under SYSTEM with pnputil staging drivers and $PSScriptRoot resolving (RTVAL-02)" + - "Intune detection rule reports 'Installed' on the endpoint after install (RTVAL-03)" + - "Intune uninstall removes the printer cleanly under SYSTEM context (RTVAL-04)" + artifacts: + - path: ".planning/phases/10-real-world-runtime-validation/evidence/rtval-01-tenant-upload.png" + provides: "Screenshot of Intune showing successful package upload" + - path: ".planning/phases/10-real-world-runtime-validation/evidence/rtval-02-install-log.txt" + provides: "IntuneManagementExtension.log excerpt showing install success + pnputil + $PSScriptRoot" + - path: ".planning/phases/10-real-world-runtime-validation/evidence/rtval-03-detection.png" + provides: "Screenshot of Intune device install status = Installed" + - path: ".planning/phases/10-real-world-runtime-validation/evidence/rtval-04-uninstall-log.txt" + provides: "Log + printer-list verification showing printer removed under SYSTEM" + key_links: + - from: "Intune tenant" + to: "generated .intunewin from plan 10-01" + via: "Win32 app upload" + pattern: "Package (uploaded|accepted)" + - from: "install script ($PSScriptRoot)" + to: "bundled driver folder inside .intunewin" + via: "pnputil /add-driver staging under SYSTEM" + pattern: "pnputil.*Published Name|Driver package added successfully" +--- + + +Drive the four real-world RTVAL behavioral checks end-to-end on a live Intune tenant against a real Windows endpoint, and capture hard evidence (screenshots + device logs) for each. + +Purpose: This is the phase's whole reason for existing. Every check here is a behavior no unit test can prove — it has to happen on real hardware with a real tenant. +Output: evidence/ folder populated with RTVAL-01..04 artifacts and RUNTIME-VALIDATION.md status lines flipped from PENDING to PASS/FAIL. + + + +@C:/Users/SebastienQUEROL/.claude/get-shit-done/workflows/execute-plan.md +@C:/Users/SebastienQUEROL/.claude/get-shit-done/templates/summary.md + + + +@.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md +@.planning/REQUIREMENTS.md + + + + + + Task 1: RTVAL-01 — Upload .intunewin to real Intune tenant + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md, .planning/phases/10-real-world-runtime-validation/evidence/rtval-01-tenant-upload.png, .planning/phases/10-real-world-runtime-validation/evidence/rtval-01-app-assigned.png + +PAUSE for human technician. Requires Intune tenant admin credentials — no complete free CLI path exists. + +Technician MUST: + +1. Sign in to https://intune.microsoft.com with tenant admin. +2. Go to Apps → Windows → Add → App type: Windows app (Win32). +3. Upload the `.intunewin` file from plan 10-01. +4. OBSERVE: Intune parses the file and presents the app metadata form without format errors. +5. Fill in minimal app info (name = "ImpTune RTVAL Test - "), install command, uninstall command, detection rule (use the generated detect script: File exists / custom script as produced by ImpTune), requirement = Windows 10/11 x64, assignment = the single test device only. +6. Save the app. OBSERVE: app appears in the apps list with "Waiting for install status" or similar. +7. Capture screenshots: + - `evidence/rtval-01-tenant-upload.png` — upload success page showing the parsed .intunewin metadata + - `evidence/rtval-01-app-assigned.png` — app assignment screen showing the test device group +8. Update RUNTIME-VALIDATION.md section "RTVAL-01 — Tenant ingestion": + - Status: PASS if tenant accepted the package with NO format errors. FAIL otherwise. + - Evidence: paths to the two screenshots. + - Notes: any warnings Intune surfaced. + +PASS: Intune accepted the upload and allowed assignment WITHOUT a format/extraction error. +FAIL: tenant rejected the file, surfaced a parse error, or could not load detection metadata — record the exact error text verbatim in Notes. + +Resume signal: reply "RTVAL-01 PASS" + screenshot paths, or "RTVAL-01 FAIL" with exact tenant error text. + + + test -f .planning/phases/10-real-world-runtime-validation/evidence/rtval-01-tenant-upload.png && ! grep -A1 "RTVAL-01 — Tenant ingestion" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md | grep -q "Status: PENDING" + + RTVAL-01 status is PASS or FAIL in the report; tenant upload screenshot committed; any FAIL has verbatim error text in Notes. + + + + Task 2: RTVAL-02 — Install on device under SYSTEM; verify pnputil + $PSScriptRoot + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md, .planning/phases/10-real-world-runtime-validation/evidence/rtval-02-install-log.txt, .planning/phases/10-real-world-runtime-validation/evidence/rtval-02-install-status.png + +PAUSE for human technician. Requires physical/virtual access to the test Intune-managed Windows endpoint. + +Technician MUST: + +1. On the test device, force Intune sync: Settings → Accounts → Access work or school → Info → Sync (or restart `IntuneManagementExtension`). +2. Wait for Intune to push the assignment. Typical latency 5–30 minutes. +3. While install runs, open `C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log` and `AgentExecutor.log`. +4. After install completes, extract the block covering this app's install run and save as `evidence/rtval-02-install-log.txt`. +5. OBSERVE in the log — every item below MUST be visible: + a. The install script ran under `NT AUTHORITY\SYSTEM` (script banner or process token). + b. `$PSScriptRoot` resolved to the Intune app staging directory (not empty, not `C:\Windows\system32`). + c. `pnputil /add-driver` (or equivalent) executed against the bundled driver folder and reported success (`Driver package added successfully` or `Published Name:`). + d. Final script exit code is 0. +6. Also capture Intune portal view: Apps → the test app → Device install status → test device → Install status = "Installed". Screenshot as `evidence/rtval-02-install-status.png`. +7. Update RUNTIME-VALIDATION.md section "RTVAL-02": + - Status: PASS only if ALL four observations hold. Otherwise FAIL with which observation failed. + - Evidence: both file paths. + +PASS: SYSTEM context + $PSScriptRoot resolved + pnputil staged drivers + exit 0. +FAIL: ANY of the above missing. Record the exact log excerpt showing the failure in Notes; open a defect ticket in "Issues Found". + +Resume signal: reply "RTVAL-02 PASS" + log path, or "RTVAL-02 FAIL" with failing observation and excerpt. + + + test -f .planning/phases/10-real-world-runtime-validation/evidence/rtval-02-install-log.txt && ! grep -A1 "RTVAL-02 — Install under SYSTEM" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md | grep -q "Status: PENDING" + + RTVAL-02 status is PASS or FAIL in the report; install log committed; for PASS the log shows SYSTEM, pnputil success, $PSScriptRoot resolved, and exit 0. + + + + Task 3: RTVAL-03 — Confirm Intune detection rule reports Installed + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md, .planning/phases/10-real-world-runtime-validation/evidence/rtval-03-detection.png, .planning/phases/10-real-world-runtime-validation/evidence/rtval-03-detect-manual.txt + +PAUSE for human technician. + +Technician MUST: + +1. In Intune portal: Apps → the test app → Device install status → test device row → confirm "Installation status" = **Installed** (this is driven by the generated detect script). +2. On the endpoint itself, confirm the printer is present: + - PowerShell (user context OK for verification only): `Get-Printer | Where-Object Name -eq ""` returns a row. + - OR open Settings → Bluetooth & devices → Printers & scanners → confirm printer visible. +3. Run the generated detect script manually once to cross-check: + - Open admin PowerShell and execute the detect script; confirm exit code 0. +4. Screenshot Intune "Installed" status as `evidence/rtval-03-detection.png`. +5. Save detect script manual run transcript as `evidence/rtval-03-detect-manual.txt`. +6. Update RUNTIME-VALIDATION.md section "RTVAL-03": + - Status: PASS if Intune shows Installed AND manual detect script exits 0 AND printer is visible. Otherwise FAIL. + +PASS: Intune "Installed" + printer visible + detect script exit 0. +FAIL: Intune shows "Not detected", manual detect non-zero, or printer missing. Record in Notes. + +Resume signal: reply "RTVAL-03 PASS" + evidence paths, or "RTVAL-03 FAIL" with observed status. + + + test -f .planning/phases/10-real-world-runtime-validation/evidence/rtval-03-detection.png && ! grep -A1 "RTVAL-03 — Detection rule" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md | grep -q "Status: PENDING" + + RTVAL-03 status is PASS or FAIL; detection screenshot and manual-run transcript committed. + + + + Task 4: RTVAL-04 — Intune uninstall removes printer cleanly under SYSTEM + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md, .planning/phases/10-real-world-runtime-validation/evidence/rtval-04-uninstall-log.txt, .planning/phases/10-real-world-runtime-validation/evidence/rtval-04-uninstall-status.png + +PAUSE for human technician. + +Technician MUST: + +1. In Intune portal: change the app assignment for the test device from Required to Uninstall (or remove assignment and add as Uninstall). +2. Force Intune sync on the device again. Wait for the uninstall to run. +3. Extract the uninstall run from `IntuneManagementExtension.log` and save as `evidence/rtval-04-uninstall-log.txt`. +4. OBSERVE in the log: + a. Uninstall script ran under `NT AUTHORITY\SYSTEM`. + b. Final script exit code 0. +5. On the endpoint, confirm the printer is GONE: + - `Get-Printer | Where-Object Name -eq ""` returns nothing. + - OR Settings → Printers & scanners → printer no longer listed. +6. Confirm Intune portal shows "Not installed" for the test device. +7. Screenshot as `evidence/rtval-04-uninstall-status.png`. +8. Update RUNTIME-VALIDATION.md section "RTVAL-04": + - Status: PASS if SYSTEM context + exit 0 + printer gone + Intune "Not installed". Otherwise FAIL with which check failed. + +PASS: clean removal under SYSTEM, zero leftover printer artifacts. +FAIL: printer still present, non-zero exit, or tenant shows install failure. Record in Notes. + +Resume signal: reply "RTVAL-04 PASS" + evidence paths, or "RTVAL-04 FAIL" with failing check. + + + test -f .planning/phases/10-real-world-runtime-validation/evidence/rtval-04-uninstall-log.txt && ! grep -A1 "RTVAL-04 — Uninstall under SYSTEM" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md | grep -q "Status: PENDING" + + RTVAL-04 status is PASS or FAIL; uninstall log and status screenshot committed; printer confirmed removed on the device for PASS. + + + + + +- evidence/rtval-01-tenant-upload.png exists +- evidence/rtval-02-install-log.txt exists and shows SYSTEM + pnputil + $PSScriptRoot +- evidence/rtval-03-detection.png exists and shows Installed +- evidence/rtval-04-uninstall-log.txt exists and shows clean removal +- RUNTIME-VALIDATION.md status lines for RTVAL-01..04 are PASS or FAIL (no PENDING) + + + +All four RTVAL checkpoint tasks have signaled a final status (PASS or FAIL) with evidence files committed to evidence/. Any FAIL has a corresponding "Issues Found" entry in the report with defect ticket or deferral rationale. + + + +After completion, create `.planning/phases/10-real-world-runtime-validation/10-02-live-intune-runtime-validation-SUMMARY.md` + diff --git a/.planning/phases/10-real-world-runtime-validation/10-03-report-signoff-PLAN.md b/.planning/phases/10-real-world-runtime-validation/10-03-report-signoff-PLAN.md new file mode 100644 index 0000000..d49f83f --- /dev/null +++ b/.planning/phases/10-real-world-runtime-validation/10-03-report-signoff-PLAN.md @@ -0,0 +1,144 @@ +--- +phase: 10-real-world-runtime-validation +plan: 03 +type: execute +wave: 3 +depends_on: + - 10-01 + - 10-02 +files_modified: + - .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + - .planning/REQUIREMENTS.md + - .planning/ROADMAP.md +autonomous: false +requirements: + - RTVAL-05 +must_haves: + truths: + - "A reviewer can open RUNTIME-VALIDATION.md and read a complete signed-off report with tenant, device, OS build, driver vendor, screenshots/logs, and any issues" + - "Every RTVAL-01..04 result is PASS/FAIL with cited evidence (no PENDING)" + - "Any FAIL has either a v1.1 defect ticket or a written deferral rationale" + - "REQUIREMENTS.md and ROADMAP.md mark Phase 10 complete" + artifacts: + - path: ".planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md" + provides: "Final signed-off runtime validation report" + contains: "Signed off by:" + key_links: + - from: "RUNTIME-VALIDATION.md Sign-off checklist" + to: "evidence/*.png and evidence/*.txt files from plan 10-02" + via: "markdown relative links" + pattern: "\\]\\(evidence/.*\\)" +--- + + +Convert the draft RUNTIME-VALIDATION.md into a signed-off, reviewable report and update tracking docs so Phase 10 can be marked complete. + +Purpose: RTVAL-05 requires a reviewer-grade report, not just scattered evidence files. This plan closes the loop. +Output: A final RUNTIME-VALIDATION.md committed to the repo plus REQUIREMENTS.md/ROADMAP.md ticks. + + + +@C:/Users/SebastienQUEROL/.claude/get-shit-done/workflows/execute-plan.md +@C:/Users/SebastienQUEROL/.claude/get-shit-done/templates/summary.md + + + +@.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md +@.planning/REQUIREMENTS.md +@.planning/ROADMAP.md + + + + + + Task 1: Finalize RUNTIME-VALIDATION.md report body + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + +Read the current RUNTIME-VALIDATION.md (populated by plans 10-01 and 10-02). Then: + +1. For each RTVAL-01..04 section, ensure: + - Status line is PASS or FAIL (not PENDING). + - Evidence paths use markdown relative links like `[screenshot](evidence/rtval-01-tenant-upload.png)`. + - Notes field has at least one sentence (either "no anomalies" or description of issues). +2. For each FAIL, confirm there is a corresponding entry under "## Issues Found" formatted as: + ``` + - **[RTVAL-0X]** "> + ``` + If a FAIL has no Issues Found entry yet, add one noting "TODO: triage — see Task 2 checkpoint". +3. Update the "Status" field at the top from `DRAFT (in progress)` to `READY FOR SIGN-OFF`. + +Do NOT fabricate results. If any section is still PENDING because plan 10-02 did not actually run, STOP and return an error to the executor — 10-03 must not be run before 10-02 is complete. + + + ! grep -q "Status: PENDING" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md && grep -q "READY FOR SIGN-OFF\|SIGNED OFF" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + + Report has zero PENDING status lines, all evidence links are markdown-valid, Issues Found is consistent with FAILs, and top-level status is READY FOR SIGN-OFF. + + + + Task 2: Human review and sign-off + .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + +PAUSE for human reviewer. The reviewer (user acting as technician/owner) MUST: + +1. Open `.planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md`. +2. Walk every RTVAL-01..04 section and click every evidence link. Confirm screenshots open and log excerpts are readable. +3. For every FAIL, confirm the "Issues Found" entry is present AND has either: + - a v1.1 defect ticket ID (open a ticket if needed), OR + - an explicit deferral to v1.2 with written rationale. +4. If satisfied, edit the report's Sign-off block: + - Change `Signed off by:` to the reviewer's name. + - Change `Signed off date:` to today's date. + - Tick the three sign-off checkboxes. + - Change the top-level Status from `READY FOR SIGN-OFF` to `SIGNED OFF`. +5. If NOT satisfied, describe exactly which section is lacking and which additional evidence is required. The plan loops back to plan 10-02 (or a gap-closure plan). + +Resume signal: reply "signed off" (after editing the file) or describe missing evidence. + + + grep -q "^\*\*Status:\*\* SIGNED OFF" .planning/phases/10-real-world-runtime-validation/RUNTIME-VALIDATION.md + + Report top-level status = SIGNED OFF; Signed off by/date populated; all three sign-off checkboxes ticked. + + + + Task 3: Tick RTVAL requirements and mark Phase 10 complete in tracking docs + .planning/REQUIREMENTS.md, .planning/ROADMAP.md + +Only run after Task 2 signals "signed off". Verify by grepping the report for `Status: SIGNED OFF` — if absent, STOP. + +Then: + +1. In `.planning/REQUIREMENTS.md`: + - Change `- [ ] **RTVAL-01**` through `- [ ] **RTVAL-05**` to `- [x]`. + - In the Traceability table, change status for RTVAL-01..05 from `Pending` to `Complete`. If any RTVAL ended FAIL and was deferred, mark it `Deferred (v1.2)` instead and add a footnote link to the report's Issues Found entry. + +2. In `.planning/ROADMAP.md`: + - Change `- [ ] **Phase 10: Real-World Runtime Validation**` to `- [x]` and append `(completed )`. + - In the Progress table row for Phase 10, set `Plans Complete` to `3/3`, `Status` to `Complete`, and `Completed` to today's date. + +Do not touch unrelated rows. Preserve existing formatting exactly. + + + grep -q "\[x\] \*\*RTVAL-05\*\*" .planning/REQUIREMENTS.md && grep -q "\[x\] \*\*Phase 10" .planning/ROADMAP.md + + REQUIREMENTS.md has RTVAL-01..05 ticked (or explicitly deferred); ROADMAP.md Phase 10 ticked with completion date and 3/3 plans. + + + + + +- RUNTIME-VALIDATION.md top-level status = SIGNED OFF +- Sign-off name + date populated +- Zero PENDING status lines +- REQUIREMENTS.md RTVAL-01..05 ticked +- ROADMAP.md Phase 10 ticked + + + +A fresh reviewer can clone the repo, open RUNTIME-VALIDATION.md, follow every evidence link, and reach the same PASS/FAIL verdicts. Tracking docs reflect phase completion. + + + +After completion, create `.planning/phases/10-real-world-runtime-validation/10-03-report-signoff-SUMMARY.md` +