From 7363064d821c5c07544c22ab7adf07e7d21bf4ab Mon Sep 17 00:00:00 2001 From: OpeItcLoc03 Date: Thu, 21 May 2026 10:24:49 +0000 Subject: [PATCH] meta(tasks): create [secrets-out-of-common] in OpeItcLoc03/admin --- .tasks/STATUS.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 548dd52..9b2fcf4 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -247,3 +247,55 @@ Done — 🟢 с close-note: «roadmap expanded; N impl-tasks created for first --- + +## ⚪ [secrets-out-of-common] — Этап 1 secret-management фикса: вынести `~/projects/.common/secrets/` в `~/.config/projects-secrets/` (вне git-tree). Не блокирует migration (независимый workstream). + +**Why это дыра:** +1. `.common/` — git-tracked tree. Один неаккуратный `git add .` из wrong dir / отключение gitignore rule → leak в историю. +2. Synology Hyper Backup тащит весь `~/projects/` → секреты сидят в backup'ах на kreknin (и были на dead-DSM). +3. IDE indexing / LSP / Cursor / Copilot — `.env` файлы в workspace видны редактору; в зависимости от расширений могут уйти в cloud. +4. Любой `find ~/projects | xargs grep` — даёт plain-text secrets. + +Этап 1 — быстрый фикс, low-risk, обратимый. Этап 2 (`secrets-manager-adopt`) — стратегический (encrypted-at-rest через `pass`). + +См. `concepts/admin-infra-project.md` §Initial admin agenda E.2. + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** **1. Audit:** `ls ~/projects/.common/secrets/` — какие файлы там лежат сейчас? Список ожидаемых из памяти: +- `interns.env` — API keys для cheap LLM endpoints +- `gitea-token.txt` — admin-scoped Gitea token (admin-scope per memory) +- `vds-kzntsv.env` — VDS creds (ssh + DB + portainer + ntfy) +- возможно другие + +**2. Audit потребителей:** +- `~/projects/.common/lib/interns-mcp/` — где читается `interns.env`? Grep по `interns.env` или `dotenv` calls. +- `~/projects/.common/lib/projects-meta-mcp/` — где читается token? Часто это `~/.config/projects-mcp/auth.toml` отдельно (см. setup-projects-meta skill); но возможны cross-refs. +- `~/.claude.json` `mcpServers.*` — где ENV/args ссылаются на `.common/secrets/*`? +- `~/projects/.common/secrets/vds-kzntsv.env` — кто его читает (scripts? local docs only?). + +**3. Migration:** +```bash +mkdir -p ~/.config/projects-secrets +cp -r ~/projects/.common/secrets/* ~/.config/projects-secrets/ +chmod 600 ~/.config/projects-secrets/* # paranoid; Windows ACL отдельно +``` + +**4. Update consumers:** для каждого identifier'а из шага 2 — поменять path на абсолютный `~/.config/projects-secrets/` или принять env-override (рекомендуется env-override: легче тестировать на других машинах). + +**5. Verify:** в чистой сессии `claude --reload` + проверить что `mcp__interns__*` и `mcp__projects-meta__*` всё ещё работают. + +**6. Cleanup `.common/secrets/`:** +- Удалить (`rm -rf ~/projects/.common/secrets/`) +- НЕ оставлять stub-файлы или README — это вектор для regression'а. +- Git: `cd ~/projects/.common && git add -A && git commit -m "secrets: move out of common (now at ~/.config/projects-secrets/)"` если `.common` git-tracked. + +**7. Cross-machine note:** other machines (если есть) — повторить шаги 3-5 при первой возможности (вписать как note в close). + +Acceptance: `ls ~/projects/.common/secrets/` returns ENOENT, MCP servers still work, no `.env` references to `.common/secrets/` в коде/configs. + +Done — 🟢; unblock `secrets-manager-adopt`. +**Branch:** n/a + + +---