tasks(unify-backup-notifications): close 🟢 — unified push+email across VDS/RUVDS/windows-host
Acceptance:
- 3 scripts (VDS bash + RUVDS ps1 + windows-host ps1) синхронизированы под
unified push + email format (commit 73ad6dd0).
- VDS deployed + smoke ntfy+email ✓.
- RUVDS deployed + smoke ntfy+email ✓.
- windows-host smoke + deploy — closed-by-inspection per user direction
«все ок»: parser-check достаточно, deploy.ps1 готов для self-deploy
elevated PS у user'а. Без deploy сегодня ночью 03:00 MSK прогон в
STAROM format'е (cosmetic, не functional regression).
Также атомарный revert (`.bak-pre-unify` на каждом хосте) задокументирован
в .tasks/unify-backup-notifications.md § Closed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,39 +1,42 @@
|
|||||||
---
|
---
|
||||||
_last_updated_: 2026-05-25T07:30:00+03:00
|
_last_updated_: 2026-05-25T07:50:00+03:00
|
||||||
session_id: 2026-05-25-unify-backup-notifications
|
session_id: 2026-05-25-close-unify-backup-notifications
|
||||||
---
|
---
|
||||||
|
|
||||||
# Next session handoff
|
# Next session handoff
|
||||||
|
|
||||||
## Recent commits
|
## Recent commits
|
||||||
|
|
||||||
- `scripts(backup-notifications): unify push + email format across VDS/RUVDS/windows-host` (этот раунд)
|
- `tasks(unify-backup-notifications): close 🟢 — unified push+email across VDS/RUVDS/windows-host` (этот раунд)
|
||||||
|
- `tasks: rm obsolete NEXT-SESSION-PROMPT.md (leaked creds in history since 2026-05-21)` (этот раунд)
|
||||||
|
- `scripts(backup-notifications): unify push + email format across VDS/RUVDS/windows-host` (`73ad6dd0`)
|
||||||
- `wiki(claude): add session-handoff trigger line`
|
- `wiki(claude): add session-handoff trigger line`
|
||||||
- `wiki(ingest): RUVDS IIS migration + daily backup pipeline`
|
- `wiki(ingest): RUVDS IIS migration + daily backup pipeline`
|
||||||
- `tasks(books-ssh-audit-shared-vds): close 🟢`
|
|
||||||
- `tasks(windows-host-fallback-backup-daily): close 🟢`
|
|
||||||
|
|
||||||
## Open треки
|
## Open треки
|
||||||
|
|
||||||
| Трек | Готовность | Entry-point |
|
| Трек | Готовность | Entry-point |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `unify-backup-notifications` 🟡 | 90% — 3 scripts edited, VDS+RUVDS deployed+smoke ✓, **windows-host deploy pending elevated PS** | `.tasks/unify-backup-notifications.md` + `scripts/windows-host-fallback-backup-daily/deploy.ps1` |
|
| `iis-migration-to-ruvds` 🟡 | soak (kupimknigi + emspb DNS flipped 2026-05-24, оставшиеся 22 hostnames в очереди, tandemmebel.ru excluded) | `.tasks/iis-migration-to-ruvds.md` |
|
||||||
| `iis-migration-to-ruvds` 🟡 | soak (kupimknigi + emspb DNS flipped 2026-05-24) | `.tasks/iis-migration-to-ruvds.md` |
|
| `infra-inventory` ⚪ | ready, не начат | `.tasks/infra-inventory.md` |
|
||||||
| `infra-inventory` ⚪ | ready, not started | `.tasks/infra-inventory.md` |
|
| `books-bookva-user-whitelist-gathering` ⚪ | ready, не начат — long-lead gathering | `.tasks/books-bookva-user-whitelist-gathering.md` |
|
||||||
| `books-vds-bookva-bootstrap` 🔵 | blocked on victor/books tenant-split Phase 4 | `.tasks/books-vds-bookva-bootstrap.md` |
|
| `books-vds-bookva-bootstrap` 🔵 | blocked on victor/books tenant-split Phase 4 | `.tasks/books-vds-bookva-bootstrap.md` |
|
||||||
|
| `books-dns-cutover-bookva` 🔵 | blocked on books-vds-bookva-bootstrap | `.tasks/books-dns-cutover-bookva.md` |
|
||||||
|
|
||||||
## Спроси user'а
|
## Спроси user'а
|
||||||
|
|
||||||
- **Открывал ли elevated PowerShell и запустил `& .\scripts\windows-host-fallback-backup-daily\deploy.ps1`?** Это closes `unify-backup-notifications`.
|
- **windows-host deploy сделан?** Если `Get-FileHash C:\ProgramData\backup\run.ps1` matches `scripts/windows-host-fallback-backup-daily/run.ps1` (elevated check) — deploy ок, и сегодня ночью 03:00 MSK пушнёт в едином формате. Если нет — старый формат на одну ночь.
|
||||||
- **Пришли ли TEST ntfy + email от VDS + RUVDS** (2 push'а с title `[TEST] <HOST> backup OK 2026-05-25`)? Format читается одинаково?
|
- **На night-run 2026-05-25 → 26 push'и + emails пришли все 3?** Title pattern `<HOST> backup OK <date>` / subject `[<HOST>] backup OK <date>`. Если что-то отвалилось — `.bak-pre-unify` файлы лежат на каждом хосте для quick rollback.
|
||||||
- **DNS swap для оставшихся 22 hostnames** (`iis-migration-to-ruvds` next-action #3) — продолжаем или ждём ещё soak'а?
|
- **DNS swap для 22 hostnames** (`iis-migration-to-ruvds` next-action #3) — продолжаем или ещё soak?
|
||||||
|
- **Plaintext creds в git history** (NEXT-SESSION-PROMPT.md): user сегодня acceptуnул risk без rotation. Если позже передумаем — rotate MSSQL SA + snolla DB user + stayer DB user + VM admin (`Pryakhin9`).
|
||||||
|
|
||||||
## Не делать (preemptive guards)
|
## Не делать (preemptive guards)
|
||||||
|
|
||||||
- **Не push без grant'а** (project-discipline Rule 4 — session-start = ask-mode). Этот раунд commit'а — local-only пока user не разрешит push.
|
- **Не push без grant'а** (project-discipline Rule 4 — session-start = ask-mode). Каждая сессия начинает спрашивать заново.
|
||||||
- **Не trigger полный backup-run для smoke** (21-81 min wall-clock). Smoke = только notify-channel через `smoke-notify.ps1`, не full pipeline.
|
- **Не trigger полный backup-run для smoke** (21-81 min wall-clock). Smoke = только notify-channel через `scripts/<slug>/smoke-notify.ps1`.
|
||||||
- **Не оставлять windows-host deploy в подвешенном состоянии** — без deploy он сегодня ночью (03:00 MSK) пушнёт в STAROM формате, regression. После deploy → закрыть task `unify-backup-notifications`.
|
- **Не history-rewrite + force-push** для cleanup creds в `NEXT-SESSION-PROMPT.md` без явного user-approve — user уже принял risk на ad-hoc rotation, не на destructive history operations.
|
||||||
|
- **Не fold `traefik`/`portainer` управление через SSH compose** на VDS — Portainer-managed per `.wiki/concepts/portainer-stack-management-vds.md`, кроме `traefik`+`portainer` themselves.
|
||||||
|
|
||||||
## Memory updates за сессию
|
## Memory updates за сессию
|
||||||
|
|
||||||
- (нет на этом раунде)
|
- (нет на этом раунде — все правила/паттерны уже зафиксированы в project CLAUDE.md + global skills)
|
||||||
|
|||||||
@@ -1,18 +1,7 @@
|
|||||||
# Admin Task Board
|
# Admin Task Board
|
||||||
_Updated: 2026-05-25 (`unify-backup-notifications` 🟡 paused — 3 scripts edited под единый push+email format; VDS+RUVDS deployed + smoke notify ✓; windows-host deploy pending elevated PS у user'а. VDS `run.sh` импортирован в repo как canonical source. Pre-existing: `books-ssh-audit-shared-vds` 🟢, `windows-host-fallback-backup-daily` 🟢, все 3 daily backups live на kreknin.)_
|
_Updated: 2026-05-25 (`unify-backup-notifications` 🟢 closed — 3 scripts под единый push+email format committed `73ad6dd0`, VDS+RUVDS deployed+smoke ✓, windows-host self-deploy на user'е через `scripts/windows-host-fallback-backup-daily/deploy.ps1` elevated. Также удалён obsolete `.tasks/NEXT-SESSION-PROMPT.md` (содержал plaintext creds в git history с 2026-05-21; user accept risk без rotation/rewrite). VDS `run.sh` теперь в repo как canonical source. Pre-existing: все 3 daily backups live на kreknin.)_
|
||||||
|
|
||||||
## 🟡 [unify-backup-notifications] — единый формат push + email для всех 3 backup-pipelines (VDS / RUVDS / windows-host)
|
## 🟢 [unify-backup-notifications] — closed 2026-05-25 — единый формат push + email для VDS/RUVDS/windows-host (3 scripts), VDS run.sh импортирован в repo. См. [unify-backup-notifications.md](unify-backup-notifications.md) § Closed. windows-host self-deploy остаётся на user'е (elevated PS).
|
||||||
|
|
||||||
**Status:** paused (pending windows-host elevated deploy)
|
|
||||||
**Where I stopped:** 2026-05-25 — 3 scripts edited + parser-check ✓. **VDS + RUVDS deployed + smoke notify ✓** (ntfy_ok + email_ok с TEST-prefix). **windows-host pending elevated deploy** — `scripts/windows-host-fallback-backup-daily/deploy.ps1` готов, user запустит из elevated PS позже. Smoke на windows-host skipped по user-decision (доверяем parser-проверке).
|
|
||||||
**Next action:**
|
|
||||||
1. User: open elevated PowerShell, `cd C:\Users\vitya\projects\.admin`, `& .\scripts\windows-host-fallback-backup-daily\deploy.ps1`.
|
|
||||||
2. (Optional) `& .\scripts\windows-host-fallback-backup-daily\smoke-notify.ps1` — отправит TEST ntfy + email, verify format.
|
|
||||||
3. Verify первой ночью (2026-05-25 03:00 MSK windows-host → 04:30 RUVDS → 05:00 VDS) что push'и + email'ы пришли с единым форматом, нет regression.
|
|
||||||
4. Закрыть task.
|
|
||||||
**Branch:** master
|
|
||||||
<!-- created-by: vitya / 2026-05-25 / trigger: user-decision — unify backup notifications -->
|
|
||||||
<!-- paused: vitya / 2026-05-25 / pending windows-host elevated deploy -->
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -89,10 +89,28 @@ Tail (last 40 lines):
|
|||||||
- [x] ntfy push для всех 3: title = `<HOST> backup OK <date>`, body = `<duration>, size=<>, snapshots=<>, dest=kreknin:<>`, tags `green_circle`.
|
- [x] ntfy push для всех 3: title = `<HOST> backup OK <date>`, body = `<duration>, size=<>, snapshots=<>, dest=kreknin:<>`, tags `green_circle`.
|
||||||
- [x] Email subject для всех 3: `[<HOST>] backup OK <date>`. Body — единый template.
|
- [x] Email subject для всех 3: `[<HOST>] backup OK <date>`. Body — единый template.
|
||||||
- [x] Failure path: title `<HOST> backup FAILED <date>`, subject `[<HOST>] backup FAILED <date>`, tags `red_circle`, body — единый.
|
- [x] Failure path: title `<HOST> backup FAILED <date>`, subject `[<HOST>] backup FAILED <date>`, tags `red_circle`, body — единый.
|
||||||
- [x] Smoke от VDS + RUVDS через notify-channels: push приходит, email приходит. (2026-05-25, см. completed steps)
|
- [x] Smoke от VDS + RUVDS через notify-channels: push приходит, email приходит. (2026-05-25)
|
||||||
- [ ] Smoke от windows-host — **deferred** (user-decision 2026-05-25: пропустить smoke, доверяем parser-проверке).
|
- [x] Smoke от windows-host — **closed by inspection** (user-decision: parser-check достаточно, doверяем).
|
||||||
- [ ] **Deploy на windows-host pending** — user сделает elevated PS позже. До deploy'а windows-host остаётся на pre-unify формате.
|
- [x] Deploy на windows-host — **closed by inspection** (user принимает self-deploy elevated, scripts/.../deploy.ps1 ready, user-side action).
|
||||||
- [ ] User-verify: phone ntfy уведомления — TEST из VDS + RUVDS пришли, format читается?
|
- [x] User-verify: TEST из VDS + RUVDS — confirmed («все ок» 2026-05-25).
|
||||||
|
|
||||||
|
## Closed
|
||||||
|
|
||||||
|
**2026-05-25** — task closed по user-direction «закрывай задачу, все ок».
|
||||||
|
|
||||||
|
**State at close:**
|
||||||
|
- 3 scripts (`scripts/vds-backup-rsync-kreknin/run.sh` + `scripts/ruvds-backup-daily-kreknin/run.ps1` + `scripts/windows-host-fallback-backup-daily/run.ps1`) синхронизированы под unified push+email format. Committed `73ad6dd0`, pushed origin/master.
|
||||||
|
- VDS deployed (sha256=27b09ca272bb, smoke ntfy+email ✓).
|
||||||
|
- RUVDS deployed (sha256=f3bb57a86af5, smoke ntfy+email ✓).
|
||||||
|
- windows-host **pending self-deploy user'ом** через `scripts/windows-host-fallback-backup-daily/deploy.ps1` (elevated PS, UAC required). До deploy'а — сегодня ночью 03:00 MSK прогон в STAROM format'е (не функциональный regression, только cosmetic differ от VDS+RUVDS на одну ночь).
|
||||||
|
|
||||||
|
**Atomic revert** (если что — на каждом хосте есть `.bak-pre-unify`):
|
||||||
|
- VDS: `ssh vitya@vds.kzntsv.site 'sudo install -m 755 -o root -g root /opt/stacks/backup/scripts/run.sh.bak-pre-unify /opt/stacks/backup/scripts/run.sh'`
|
||||||
|
- RUVDS: `ssh -i ~/.ssh/ruvds-iis-migration Administrator@80.64.31.36 'powershell Move-Item C:\ProgramData\backup\run.ps1.bak-pre-unify C:\ProgramData\backup\run.ps1 -Force'`
|
||||||
|
- windows-host: elevated PS `Move-Item C:\ProgramData\backup\run.ps1.bak-pre-unify C:\ProgramData\backup\run.ps1 -Force` (если уже deployed когда-то).
|
||||||
|
|
||||||
|
<!-- closed-by: vitya / 2026-05-25 / user-direction «все ок» -->
|
||||||
|
|
||||||
|
|
||||||
## Completed steps
|
## Completed steps
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user