diff --git a/docs/LOOPDECK_GOAL_AUDIT_2026-07-05.md b/docs/LOOPDECK_GOAL_AUDIT_2026-07-05.md index ffbed3e3..6bd8ec2e 100644 --- a/docs/LOOPDECK_GOAL_AUDIT_2026-07-05.md +++ b/docs/LOOPDECK_GOAL_AUDIT_2026-07-05.md @@ -130,7 +130,9 @@ Verified CI and operational evidence: `ui-patrol` evidence remains pending. - `corepack pnpm evidence:ui-patrol` now repeats that check and reports `pending_no_schedule_run` until a real `schedule` run with the - `ui-patrol-screenshots` artifact and 9 png files exists. + `ui-patrol-screenshots` artifact and 9 png files exists. Pending output + includes `next_expected_schedule_utc` and `schedule_cron` so the next review + can wait for the real weekly cron window. - `corepack pnpm e2e:browser` on `codex/reuse-copy-fallback-audit-refresh` forced clipboard writes to fail and verified the prompt detail manual-copy fallback for saved improvement drafts. diff --git a/docs/NEXT_BACKLOG.md b/docs/NEXT_BACKLOG.md index b5cbc03b..c25fdb82 100644 --- a/docs/NEXT_BACKLOG.md +++ b/docs/NEXT_BACKLOG.md @@ -123,7 +123,8 @@ Current goal audit: - `corepack pnpm evidence:ui-patrol` is the repeatable scheduled evidence checker. It reports `pending_no_schedule_run` until a real `schedule` event exists and only reports `complete` after downloading `ui-patrol-screenshots` - and finding 9 png files. + and finding 9 png files. Pending output includes `next_expected_schedule_utc` + and `schedule_cron` so agents know when to re-check the external event. - Local `corepack pnpm ui-patrol` on current main after PR #410 passed and captured 9 png files. - PR #447 added local `expected_impact` evidence to prompt improvements so diff --git a/docs/superpowers/plans/2026-07-05-promptlane-95-quality-plan.md b/docs/superpowers/plans/2026-07-05-promptlane-95-quality-plan.md index 21e5ebe8..9db64153 100644 --- a/docs/superpowers/plans/2026-07-05-promptlane-95-quality-plan.md +++ b/docs/superpowers/plans/2026-07-05-promptlane-95-quality-plan.md @@ -142,7 +142,9 @@ - `corepack pnpm evidence:ui-patrol` is the repeatable checker for that blocker. It must stay `pending_no_schedule_run` while only workflow_dispatch evidence exists, and it must require the `ui-patrol-screenshots` artifact - with 9 png files before returning `complete`. + with 9 png files before returning `complete`. Pending output includes + `next_expected_schedule_utc` and `schedule_cron` so the next check can wait + for the real weekly cron window. - `corepack pnpm evidence:quality` emits the `promptlane_95_quality` summary and must include `scorecard_axes`, `scheduled_ui_patrol`, and `native_dialog_approved_dogfood` blockers until every axis reaches its 9.5 diff --git a/scripts/ui-patrol-evidence.mjs b/scripts/ui-patrol-evidence.mjs index 97cc48e6..f45ebf7e 100644 --- a/scripts/ui-patrol-evidence.mjs +++ b/scripts/ui-patrol-evidence.mjs @@ -7,6 +7,7 @@ import { join } from "node:path"; const workflow = "ui-patrol.yml"; const artifactName = "ui-patrol-screenshots"; const expectedPngCount = 9; +const scheduleCron = "17 6 * * 1"; const runs = ghJson([ "run", @@ -27,6 +28,8 @@ if (!latestScheduled) { check: "scheduled_ui_patrol", status: "pending_no_schedule_run", workflow, + schedule_cron: scheduleCron, + next_expected_schedule_utc: nextWeeklyScheduleUtc(new Date()), expected_artifact: artifactName, expected_png_count: expectedPngCount, latest_manual_run: latestManualRun(runs), @@ -44,6 +47,7 @@ if ( check: "scheduled_ui_patrol", status: "pending_schedule_not_successful", workflow, + schedule_cron: scheduleCron, scheduled_run: latestScheduled, next_action: "Inspect the scheduled ui-patrol workflow run and fix failures before claiming scheduled evidence.", @@ -70,6 +74,7 @@ try { ? "complete" : "pending_artifact_incomplete", workflow, + schedule_cron: scheduleCron, scheduled_run: latestScheduled, artifact: artifactName, png_count: pngs.length, @@ -128,6 +133,19 @@ function findPngs(dir) { .sort(); } +function nextWeeklyScheduleUtc(now) { + const next = new Date(now); + const daysUntilMonday = (1 - next.getUTCDay() + 7) % 7; + next.setUTCDate(next.getUTCDate() + daysUntilMonday); + next.setUTCHours(6, 17, 0, 0); + + if (next <= now) { + next.setUTCDate(next.getUTCDate() + 7); + } + + return next.toISOString(); +} + function print(value) { console.log(JSON.stringify(value, null, 2)); } diff --git a/src/packaging/plugin-files.test.ts b/src/packaging/plugin-files.test.ts index 5edf6c6d..be71f5e4 100644 --- a/src/packaging/plugin-files.test.ts +++ b/src/packaging/plugin-files.test.ts @@ -885,10 +885,13 @@ describe("plugin packaging files", () => { expect(evidenceScript).toContain("ui-patrol-screenshots"); expect(evidenceScript).toContain("scheduled_ui_patrol"); expect(evidenceScript).toContain("pending_no_schedule_run"); + expect(evidenceScript).toContain("next_expected_schedule_utc"); + expect(evidenceScript).toContain("schedule_cron"); expect(workflow).toContain("schedule:"); expect(workflow).toContain('cron: "17 6 * * 1"'); for (const content of [goalAudit, backlog, todo]) { expect(content).toContain("corepack pnpm evidence:ui-patrol"); + expect(content).toContain("next_expected_schedule_utc"); expect(content).toContain("workflow_dispatch run `28717406758`"); expect(content).toContain("9 png files"); expect(content).toContain("no `schedule` event"); diff --git a/tasks/todo.md b/tasks/todo.md index fa63dcc4..86c58de8 100644 --- a/tasks/todo.md +++ b/tasks/todo.md @@ -1,5 +1,24 @@ # 작업 계획 +## 2026-07-06 PromptLane UI Patrol Next Schedule Evidence + +- [x] CHECK: `ui-patrol.yml` still has no `schedule` event, and + `evidence:ui-patrol` only said to wait for the weekly cron. +- [x] RED: packaging guard required `scripts/ui-patrol-evidence.mjs` and the + scheduled-evidence docs to mention `next_expected_schedule_utc` and + `schedule_cron`; the focused test failed while those fields were absent. +- [x] GREEN: pending `evidence:ui-patrol` output now includes the weekly cron + expression and the next expected UTC schedule time. +- [x] EFFECT: future agents know when to re-check the external schedule event + instead of rerunning unrelated local UI checks. + +### 판단 기준 + +- Do not treat `next_expected_schedule_utc` as completion evidence. +- Do not mark scheduled `ui-patrol` complete without a real `schedule` event + and 9-png artifact. +- Keep pending output raw-free and free of local paths. + ## 2026-07-06 PromptLane External Evidence Action Criteria - [x] CHECK: The remaining 9.5 blockers are external, but the recommended next