From 6cf3e8bea1a808640b4afb8a7f1a93f90b439ce6 Mon Sep 17 00:00:00 2001
From: Self-Managing Codebase Manager
<7004983+WillTaylor22@users.noreply.github.com>
Date: Sun, 31 May 2026 04:33:10 +0000
Subject: [PATCH] memory: vercel MCP silently hides projects even with correct
team
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
New learnings entry covering a second distinct failure signature for
step 1 (deploy health) — same fallback (curl + Vercel-bot status) as
the existing 'vercel-bot-status-as-deploy-health-fallback' note, but
with a different diagnostic to avoid misreading 'project missing' as
'project deleted, file a ticket'.
---
.claude/memory/MEMORY.md | 1 +
.../learnings/2026-05-31-vercel-mcp-silently-hides-projects.md | 3 +++
2 files changed, 4 insertions(+)
create mode 100644 .claude/memory/learnings/2026-05-31-vercel-mcp-silently-hides-projects.md
diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md
index 1fcb6ba..b8809bc 100644
--- a/.claude/memory/MEMORY.md
+++ b/.claude/memory/MEMORY.md
@@ -18,6 +18,7 @@ Keep this file under 200 lines — anything longer is content bloat, not memory.
- [learnings/fetch-before-merge-on-long-lived-branch](learnings/2026-05-27-fetch-before-merge-on-long-lived-branch.md) — On long-lived branches, run `git fetch origin ` before `git merge origin/`; local origin ref goes stale during review-feedback rounds (PR #12 round 3 escalation)
- [learnings/git-checkout-theirs-replaces-whole-file](learnings/2026-05-27-git-checkout-theirs-replaces-whole-file.md) — `git checkout --theirs ` during a merge replaces the WHOLE file, silently reverting unrelated edits earlier on the branch; verify with `git diff origin/` afterwards (PR #29 round 1)
- [learnings/verify-ticket-issues-still-exist-on-main](learnings/2026-05-28-verify-ticket-issues-still-exist-on-main.md) — Re-read the ticket's target file in current `origin/` before drafting; humans push small fixes direct-to-main between ticket creation and agent pickup (PR #29 ENG-30 round 1)
+- [learnings/vercel-mcp-silently-hides-projects](learnings/2026-05-31-vercel-mcp-silently-hides-projects.md) — Vercel MCP can return only a subset of a team's projects even with the right teamId — `get_project(self-managing-codebase)` 404'd despite the project being healthy; use the curl+Vercel-bot fallback, don't assume it was deleted
## Decisions
- [decisions/mcp-for-small-writes-checkout-for-big](decisions/2026-05-26-mcp-for-small-writes-checkout-for-big.md) — Single-file writes go through GitHub MCP; multi-file or test-needing changes use the mounted checkout + `git push`
diff --git a/.claude/memory/learnings/2026-05-31-vercel-mcp-silently-hides-projects.md b/.claude/memory/learnings/2026-05-31-vercel-mcp-silently-hides-projects.md
new file mode 100644
index 0000000..6903107
--- /dev/null
+++ b/.claude/memory/learnings/2026-05-31-vercel-mcp-silently-hides-projects.md
@@ -0,0 +1,3 @@
+# Vercel MCP can silently hide projects even with the right team
+
+Step 1's "Vercel MCP can't see the deploy" failure has two distinct signatures, not one. The existing `vercel-bot-status-as-deploy-health-fallback` covers the 403 / wrong-team case. Today's signature: with `team_N9qAlwx7VXCCkK811yQBrId4` (Versey, the correct team — confirmed by the `vercel.com/versey/self-managing-codebase` deploy URL on the Vercel bot's PR-status comments), `mcp__vercel__list_projects` returns only `versey` and `mcp__vercel__get_project({projectId: "self-managing-codebase"})` returns 404. The project demonstrably exists and is healthy (prod `curl` returned 200, `dpl_WUCHXeNYYGMZsUHWUUnvcxJYN82d`). So neither auth nor team is wrong — the MCP credential is scoped to a subset of the team's projects. Don't conclude "project deleted, file a ticket"; use the same fallback (curl prod + Vercel-bot commit status on the latest PR HEAD).