meta(tasks): create [secrets-out-of-common] in OpeItcLoc03/admin
This commit is contained in:
@@ -247,3 +247,55 @@ Done — 🟢 с close-note: «roadmap expanded; N impl-tasks created for first
|
|||||||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-21T10:24:24.685Z -->
|
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-21T10:24:24.685Z -->
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## ⚪ [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/<file>` или принять 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
|
||||||
|
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: OpeItcLoc03/workshop / 2026-05-21T10:24:48.748Z -->
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user