From dd593787fa6fda547e8ee0308edc5defef7de9e9 Mon Sep 17 00:00:00 2001 From: Harlan GitHub Agent Date: Sat, 5 Sep 2026 14:00:26 +1000 Subject: [PATCH 1/2] fix(ops): exempt skilld CLI packages from the release-age gate so the grammar check can dlx fresh releases --- pnpm-workspace.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 52fe19ff..fefc1d39 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -38,6 +38,18 @@ minimumReleaseAgeExclude: - '@sentry/server-utils@10.73.0' - '@sentry/vue@10.73.0' - import-in-the-middle@3.4.0 + # The published-cli-grammar check runs `pnpm dlx skilld@` on the + # main push, always inside the release-age window. Exempt the CLI and its + # platform binaries or the check can never pass after a CLI publish. + - skilld + - skilld-cli-darwin-arm64 + - skilld-cli-darwin-x64 + - skilld-cli-linux-arm64-gnu + - skilld-cli-linux-arm64-musl + - skilld-cli-linux-x64-gnu + - skilld-cli-linux-x64-musl + - skilld-cli-win32-arm64-msvc + - skilld-cli-win32-x64-msvc shellEmulator: true autoInstallPeers: false From 3b68f4781100180c3ce8d692315532d49f8b8225 Mon Sep 17 00:00:00 2001 From: Harlan GitHub Agent Date: Sun, 6 Sep 2026 16:08:42 +1000 Subject: [PATCH 2/2] fix: resolve issue #147 --- .../server/utils/daily-health-check.spec.ts | 34 +++++++ .../server/utils/daily-health-check.ts | 95 +++++++++++++++---- .../daily-health-check-x-discovery.test.ts | 1 + 3 files changed, 110 insertions(+), 20 deletions(-) diff --git a/layers/identity/server/utils/daily-health-check.spec.ts b/layers/identity/server/utils/daily-health-check.spec.ts index 6d4c2aa5..46a68cc0 100644 --- a/layers/identity/server/utils/daily-health-check.spec.ts +++ b/layers/identity/server/utils/daily-health-check.spec.ts @@ -66,6 +66,7 @@ function summary(overrides: Partial = {}): DailyHealthC discoveryCandidatesOverdue: 0, discoveryClaimsStale: 0, leaderboardApprovalsStuck: 0, + leaderboardApprovalDetails: [], failedJobDetails: [], }, cost: { @@ -226,6 +227,21 @@ describe('evaluateDailyHealthStatus', () => { }) }) + it('names the invisible leaderboard repositories in the reason', () => { + const input = summary({ + pipeline: { + ...summary().pipeline, + leaderboardApprovalsStuck: 1, + leaderboardApprovalDetails: [{ owner: 'missing-owner', repo: 'missing-repo', reviewedAt: 1_774_473_000 }], + }, + }) + + expect(evaluateDailyHealthStatus(input)).toEqual({ + status: 'AMBER', + reasons: ['1 reviewed leaderboard repository remained invisible for over 15 minutes: missing-owner/missing-repo.'], + }) + }) + it('keeps unengaged source removal informational and flags user impact amber', () => { const informational = summary({ pipeline: { @@ -468,6 +484,9 @@ describe('buildDailyHealthCheck', () => { expect(uncertain.activity.digestsFailed24h).toBe(1) expect(uncertain.pipeline.discoveryCandidatesExhausted).toBe(1) expect(uncertain.pipeline.leaderboardApprovalsStuck).toBe(1) + expect(uncertain.pipeline.leaderboardApprovalDetails).toEqual([ + { owner: 'missing-owner', repo: 'missing-repo', reviewedAt: nowSec - 901 }, + ]) expect(uncertain.status).toBe('RED') sqlite.close() }) @@ -518,6 +537,21 @@ describe('daily health rendering', () => { expect(renderDailyHealthCheckHtml(input)).toContain('Pipeline <degraded>') expect(renderDailyHealthCheckHtml(input)).not.toContain('