From b20f623d0c95fc1d2140e61f6bd37d9704332cf9 Mon Sep 17 00:00:00 2001 From: Imani Manyara Date: Sat, 3 Oct 2026 04:51:47 -0400 Subject: [PATCH 1/2] Keep scheduled workflows enabled through quiet periods GitHub disables a public repository's scheduled workflows after 60 days without a push, and says nothing. In 2026-09 that silently stopped CodeQL on two repositories that were finished rather than abandoned. This adds a weekly caller of laranail/.github's reusable keepalive, which re-enables every workflow that is active or was disabled for inactivity, itself included. Re-enabling resets the clock; no commits are made. Workflows a human disabled are left alone. --- .github/workflows/keepalive.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/keepalive.yml diff --git a/.github/workflows/keepalive.yml b/.github/workflows/keepalive.yml new file mode 100644 index 0000000..8f807a1 --- /dev/null +++ b/.github/workflows/keepalive.yml @@ -0,0 +1,19 @@ +name: Keepalive + +# GitHub disables a public repository's scheduled workflows after 60 days with +# no push, without telling anyone. This re-enables them weekly, which resets +# that clock. The logic, and what it deliberately leaves alone, is in +# laranail/.github's reusable keepalive.yml. + +on: + schedule: + - cron: "17 5 * * 1" + workflow_dispatch: + +permissions: {} + +jobs: + keepalive: + permissions: + actions: write + uses: laranail/.github/.github/workflows/keepalive.yml@main From 0e8c44be4f04f6ba174a1ce7ed9a4dd0167f4021 Mon Sep 17 00:00:00 2001 From: Imani Manyara Date: Sat, 3 Oct 2026 05:14:58 -0400 Subject: [PATCH 2/2] Assert a non-empty run list strictly in ValidationFake A fresh phpstan-strict-rules resolve rejects assertNotEmpty(), which turned static analysis red on main and on every pull request. The two calls compare arrays, so assertNotSame([], ...) has the same meaning and matches the assertSame([], ...) this class already uses for the inverse. --- src/Testing/ValidationFake.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Testing/ValidationFake.php b/src/Testing/ValidationFake.php index 17e578f..b3ba322 100644 --- a/src/Testing/ValidationFake.php +++ b/src/Testing/ValidationFake.php @@ -43,7 +43,7 @@ public function __construct() public function assertValidated(?Closure $matching = null): void { if (! $matching instanceof Closure) { - Assert::assertNotEmpty($this->completed, 'Expected at least one passing validation run; none happened.'); + Assert::assertNotSame([], $this->completed, 'Expected at least one passing validation run; none happened.'); return; } @@ -58,7 +58,7 @@ public function assertValidated(?Closure $matching = null): void public function assertFailed(?Closure $matching = null): void { if (! $matching instanceof Closure) { - Assert::assertNotEmpty($this->failed, 'Expected at least one failing validation run; none happened.'); + Assert::assertNotSame([], $this->failed, 'Expected at least one failing validation run; none happened.'); return; }