From ecfbb3f37d5be62d6f5812c24a4e94152e0b890e Mon Sep 17 00:00:00 2001 From: Rick Rezinas Date: Sun, 19 Jul 2026 11:25:17 -0700 Subject: [PATCH] fix(LifeosUpgrade): m-005 detect uses mixed-case LifeOS/MEMORY/ and can never match MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The m-005 check tests /^LifeOS\/MEMORY\//m against .gitignore, but the tree uses LIFEOS/MEMORY/ — as do the migration's own name field and the three comment lines directly above the regex. On a case-sensitive filesystem the check can never pass, so a correctly configured install reports m-005 as MISSING permanently. Reproduce on Linux with LIFEOS/MEMORY/ present in .gitignore: bun LIFEOS/TOOLS/LifeosUpgrade.ts --diagnose -> m-005 MISSING macOS hides this because HFS+/APFS are case-insensitive by default. --- LifeOS/install/LIFEOS/TOOLS/LifeosUpgrade.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LifeOS/install/LIFEOS/TOOLS/LifeosUpgrade.ts b/LifeOS/install/LIFEOS/TOOLS/LifeosUpgrade.ts index 5007662fa3..eff17fd55f 100755 --- a/LifeOS/install/LIFEOS/TOOLS/LifeosUpgrade.ts +++ b/LifeOS/install/LIFEOS/TOOLS/LifeosUpgrade.ts @@ -117,7 +117,7 @@ const MIGRATIONS: Migration[] = [ // policy gitignores LEARNING/, OBSERVABILITY/, STATE/, etc. selectively; // Phase G may broaden this. For now, we detect "any LIFEOS/MEMORY/ rule" as // applied. - return /^LifeOS\/MEMORY\//m.test(content); + return /^LIFEOS\/MEMORY\//m.test(content); }, apply: () => { throw new Error("m-005 apply not implemented — modify .gitignore in source PR rather than via tool. The detect-only check surfaces missing state.");