Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion docs/LOOPDECK_GOAL_AUDIT_2026-07-05.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 2 additions & 1 deletion docs/NEXT_BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
18 changes: 18 additions & 0 deletions scripts/ui-patrol-evidence.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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),
Expand All @@ -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.",
Expand All @@ -70,6 +74,7 @@ try {
? "complete"
: "pending_artifact_incomplete",
workflow,
schedule_cron: scheduleCron,
scheduled_run: latestScheduled,
artifact: artifactName,
png_count: pngs.length,
Expand Down Expand Up @@ -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));
}
3 changes: 3 additions & 0 deletions src/packaging/plugin-files.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
19 changes: 19 additions & 0 deletions tasks/todo.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down