From e863d33efb66343a50cb62516ad0a58fa92b5a98 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Apr 2026 13:13:15 +0000 Subject: [PATCH 1/2] Initial plan From 4497672add93bbd59056b5a41e30e25e117ede66 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Apr 2026 13:24:55 +0000 Subject: [PATCH 2/2] fix: resolve CI build failures and YAML validation errors - Add missing mempalaceProjectIndexed property to test fixtures in policy-service, memory-service, orchestrator, and mcp-gateway - Add 'if_project_not_indexed' to BootstrapStepSchema condition enum (was used in mcp-gateway but not declared in shared-types) - Fix YAML parsing error in packforge-memory.yaml by wrapping long constraint text with >- block scalar to avoid unquoted colons - Update CI matrix from Node.js [20,22] to [22,24] and opt into Node.js 24 Actions runtime (Node.js 20 deprecated June 2, 2026) Agent-Logs-Url: https://github.com/Mutigen/packforge/sessions/7381d250-d15c-413a-9fd6-21b54f4defa4 --- .github/workflows/ci.yml | 4 +++- .github/workflows/release.yml | 2 ++ apps/mcp-gateway/src/index.test.ts | 1 + apps/memory-service/src/index.test.ts | 1 + apps/orchestrator/src/index.test.ts | 1 + apps/policy-service/src/index.test.ts | 1 + packages/shared-types/src/activation.ts | 8 +++++++- packs/quality/packforge-memory.yaml | 5 ++++- 8 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5da623..1cf5be9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,9 +13,11 @@ jobs: ci: name: Build & Test runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true strategy: matrix: - node-version: [20, 22] + node-version: [22, 24] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 11a136e..6143ee8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,8 @@ jobs: release: name: Create Release runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - uses: actions/checkout@v4 diff --git a/apps/mcp-gateway/src/index.test.ts b/apps/mcp-gateway/src/index.test.ts index b515171..8da657f 100644 --- a/apps/mcp-gateway/src/index.test.ts +++ b/apps/mcp-gateway/src/index.test.ts @@ -74,6 +74,7 @@ execution_policy: gitNexusClusters: [], gitNexusProcessLabels: [], hasMemPalace: false, + mempalaceProjectIndexed: false, hasObsidianVault: false, obsidianVaults: [], }, diff --git a/apps/memory-service/src/index.test.ts b/apps/memory-service/src/index.test.ts index c283c85..c850cbd 100644 --- a/apps/memory-service/src/index.test.ts +++ b/apps/memory-service/src/index.test.ts @@ -34,6 +34,7 @@ function makePlan(projectId = 'proj'): ActivationPlan { gitNexusClusters: [], gitNexusProcessLabels: [], hasMemPalace: false, + mempalaceProjectIndexed: false, hasObsidianVault: false, obsidianVaults: [], }, diff --git a/apps/orchestrator/src/index.test.ts b/apps/orchestrator/src/index.test.ts index 59a11e8..d68c59f 100644 --- a/apps/orchestrator/src/index.test.ts +++ b/apps/orchestrator/src/index.test.ts @@ -74,6 +74,7 @@ const baseCtx = { gitNexusClusters: [] as string[], gitNexusProcessLabels: [] as string[], hasMemPalace: false, + mempalaceProjectIndexed: false, hasObsidianVault: false, obsidianVaults: [] as string[], } diff --git a/apps/policy-service/src/index.test.ts b/apps/policy-service/src/index.test.ts index 3866f04..f68f9fe 100644 --- a/apps/policy-service/src/index.test.ts +++ b/apps/policy-service/src/index.test.ts @@ -20,6 +20,7 @@ const baseContext: ProjectContext = { gitNexusClusters: [], gitNexusProcessLabels: [], hasMemPalace: false, + mempalaceProjectIndexed: false, hasObsidianVault: false, obsidianVaults: [], } diff --git a/packages/shared-types/src/activation.ts b/packages/shared-types/src/activation.ts index 61dfce7..6feda94 100644 --- a/packages/shared-types/src/activation.ts +++ b/packages/shared-types/src/activation.ts @@ -42,7 +42,13 @@ export const BootstrapStepSchema = z.object({ id: z.string().min(1), label: z.string().min(1), command: z.string().min(1), - condition: z.enum(['always', 'if_missing_gitnexus', 'if_missing_deps', 'if_mempalace_available']), + condition: z.enum([ + 'always', + 'if_missing_gitnexus', + 'if_missing_deps', + 'if_mempalace_available', + 'if_project_not_indexed', + ]), description: z.string().min(1).optional(), }) diff --git a/packs/quality/packforge-memory.yaml b/packs/quality/packforge-memory.yaml index 3535a8a..5d86340 100644 --- a/packs/quality/packforge-memory.yaml +++ b/packs/quality/packforge-memory.yaml @@ -41,7 +41,10 @@ instructions: - Do not modify the palace structure (wings/rooms) — only read and add drawers. - When MemPalace is available, call get_project_history at session start to surface evolution since last run. - Compare current stack/phase/domain against the project history snapshot to detect drift before recommending changes. - - After fixing any non-obvious bug or discovering a non-trivial edge case, MUST call mempalace_diary_write with agent="packforge" and entry in format "PROBLEM: X | ROOT_CAUSE: Y | FIX: Z | AFFECTED: file". This is how PackForge learns from practice automatically. + - >- + After fixing any non-obvious bug or discovering a non-trivial edge case, MUST call mempalace_diary_write + with agent="packforge" and entry in format "PROBLEM: X | ROOT_CAUSE: Y | FIX: Z | AFFECTED: file". + This is how PackForge learns from practice automatically. tools_allowed: - mempalace_search - mempalace_status