diff --git a/L0/install-log.md b/L0/install-log.md index eb6d92b..578f3a1 100644 --- a/L0/install-log.md +++ b/L0/install-log.md @@ -340,9 +340,31 @@ claude **Решение по экспозиции токена:** PAT (`9e0f1f71...546d`) утёк в чат и в `.git/config` двух клонов. Юзер сознательно скипнул ротацию (private gitea на собственном сервере, риск приемлемый). Зафиксировано как факт; технический gap для скила setup-projects-meta — отдельная задача `setup-projects-meta-token-leak` в `claude-skills/.tasks/`. -##### 11c-2 — `/setup-interns` ⏳ +##### 11c-2 — `/setup-interns` 🔄 -(после ротации токена) +**Pre-step (на ноуте):** клонировать `.common/` целиком, сохранив существующий sub-репо `lib/projects-meta-mcp/`: + +```powershell +$common = "$PROJECTS_DIR\.common" +$tmp = "$PROJECTS_DIR\.common.bak-projects-meta-mcp" +Move-Item "$common\lib\projects-meta-mcp" $tmp +Remove-Item -Recurse -Force $common +git clone https://git.kzntsv.site/OpeItcLoc03/common.git $common +New-Item -ItemType Directory -Force -Path "$common\lib" | Out-Null +Move-Item $tmp "$common\lib\projects-meta-mcp" +``` + +Verify: `Test-Path "$common\lib\interns-mcp\pyproject.toml"`, `Test-Path "$common\config\interns\config.yaml"`, `Test-Path "$common\lib\projects-meta-mcp\dist\server.js"` — все True. + +**Факт первого запуска (2026-05-06):** +- Phase 0 ✅ (Python 3.12.13 в mise, Node 24.15.0) +- Phase 1 ❌ STOP: ".common/lib/interns-mcp/ not found" +- **Причина:** скил `setup-interns` ищет `/.common/...` **относительно cwd**. На ноуте `claude` был запущен из `C:\Windows\System32` — там нет `.common/`. +- Сравнение: `setup-projects-meta` SKILL.md уже исправлен на абсолютный `~/projects/.common/...` (через done-задачу `using-projects-meta-fix-paths`). У `setup-interns` тот же баг — task `setup-interns-fix-paths` открыт в `claude-skills/.tasks/STATUS.md`. + +**Workaround для field-test:** `cd $PROJECTS_DIR` перед `claude`. Тогда cwd содержит `.common/` как ребёнка, скил его находит. + +(второй запуск — после re-launch claude из `$PROJECTS_DIR`) ##### 11c-3 — `/setup-tasks`, 11c-4 — `/setup-wiki`, 11c-5 — `/setup-context7` ⏳ @@ -366,6 +388,8 @@ claude - **2026-05-06 шаг 11c-1 / setup-projects-meta**: при first-clone без creds скил fallback'ается на `https://USER:TOKEN@host/...` → токен пишется в `.git/config` клонированного репо. Это утечка. Канон в скиле: `git -c http.extraheader="Authorization: token $T" clone …` (per-invocation, не персистит). Создать задачу `setup-projects-meta-token-leak` в `claude-skills/.tasks/`. - **2026-05-06 шаг 11c-1**: `~\.claude.json` после первого `claude login` — без ключа `mcpServers`. Все setup-* должны идемпотентно добавлять корневой ключ. setup-projects-meta это сделал правильно — ок. - **2026-05-06 шаг 11c-1 — security**: PAT, выданный юзером в чат, оказался в (a) транскрипте Claude / телеметрии, (b) `.git/config` двух клонов, (c) `auth.toml`. Юзер скипнул ротацию (private gitea, low-stakes). **Канон для bootstrap.ps1 (на будущее, для public hosts)**: токен запрашивать через `Read-Host -AsSecureString` в shell-промпте до запуска `claude`, не через чат. Для приватных gitea — на усмотрение администратора. +- **2026-05-06 шаг 11c-2 — cwd**: setup-* скилы расходятся в способе адресации `.common/`. `setup-projects-meta` использует абсолютный `~/projects/.common/...` (исправлено в done-задаче `using-projects-meta-fix-paths`). `setup-interns` всё ещё юзает cwd-относительный `/.common/...`. На голой Win11 у юзера cwd при первом `claude` часто `C:\Windows\System32` (он не делает `cd`) — `setup-interns` падает в Phase 1. **Канон для bootstrap.ps1**: явно `Set-Location $PROJECTS_DIR` ДО запуска claude. Долгосрочно: фабрикa-aware скилы должны читать `projects_dir` из `~/.config/factory/home.toml`. Открыта задача `setup-interns-fix-paths` в `claude-skills/.tasks/`. +- **2026-05-06 шаг 11c-2 — `.common` clone**: `setup-projects-meta` создаёт только `.common/lib/projects-meta-mcp/` (через `mkdir -p ~/projects/.common/lib && git clone …`), но НЕ клонирует сам репо `.common`. В результате на новой машине после setup-projects-meta существует псевдо-`.common/` без `CLAUDE.md`, `config/`, `prompts/`, `scripts/`, `lib/interns-mcp/` — это ломает `setup-interns` и любой следующий setup-* в цепочке. **Канон для bootstrap.ps1 / для L1 manifest**: `dot-common` — отдельный компонент с `source: { type: git, url: "{gitea}/common" }, target: "{projects_dir}/.common"`, ставится ДО projects-meta-mcp. В текущем field-test'е сделан pre-step вручную (move projects-meta-mcp aside → clone .common → restore). ## Resume point — 2026-05-06 (перерыв)