From 7dcc1395ac7c0e6911773ba5688e8ef1cf9d8766 Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 13 Jul 2026 11:00:30 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8C=BA=E5=88=86=20MDTODO=20source=20?= =?UTF-8?q?=E4=B8=8E=20target=20freshness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/src/mdtodo-safe-input-adoption.test.ts | 10 ++++++++++ .../microservices/code-queue/src/skill-availability.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/src/mdtodo-safe-input-adoption.test.ts b/scripts/src/mdtodo-safe-input-adoption.test.ts index 19d011ea..fad0ea9d 100644 --- a/scripts/src/mdtodo-safe-input-adoption.test.ts +++ b/scripts/src/mdtodo-safe-input-adoption.test.ts @@ -22,9 +22,11 @@ describe("MDTODO safe title stdin adoption", () => { const temporary = mkdtempSync("/tmp/unidesk-mdtodo-safe-input-"); try { const source = join(temporary, "source"); + const staleSource = join(temporary, "stale-source"); const staleTarget = join(temporary, "stale-target"); const readyTarget = join(temporary, "ready-target"); writeFixture(source, true); + writeFixture(staleSource, false); writeFixture(staleTarget, false); writeFixture(readyTarget, true); @@ -41,6 +43,14 @@ describe("MDTODO safe title stdin adoption", () => { freshness: "ready", warning: null, }); + expect(collectMdtodoSafeTitleStdinCapability(staleSource, readyTarget)).toMatchObject({ + nonBlocking: true, + ready: true, + freshness: "source-stale", + source: { ready: false }, + target: { ready: true }, + warning: expect.stringContaining("approved source"), + }); } finally { rmSync(temporary, { recursive: true, force: true }); } diff --git a/src/components/microservices/code-queue/src/skill-availability.ts b/src/components/microservices/code-queue/src/skill-availability.ts index 8cf0f127..a89ed208 100644 --- a/src/components/microservices/code-queue/src/skill-availability.ts +++ b/src/components/microservices/code-queue/src/skill-availability.ts @@ -364,7 +364,7 @@ function probeMdtodoSafeTitleStdin(skillsPath: string): MdtodoSafeTitleStdinProb export function collectMdtodoSafeTitleStdinCapability(sourcePath: string, targetPath: string): MdtodoSafeTitleStdinCapability { const source = probeMdtodoSafeTitleStdin(sourcePath); const target = probeMdtodoSafeTitleStdin(targetPath); - const freshness = target.ready + const freshness = source.ready && target.ready ? "ready" : source.ready ? "target-stale"