Handoff S170 → S171
HANDOFF S170 → S171
HÀNH ĐỘNG ĐẦU TIÊN PHIÊN S171 (làm ngay)
Bước 1 — Nạp context 30 giây:
search_knowledge("handoff s170 to s171")
search_knowledge("s170 finalize pa5 report clarify 2")
search_knowledge("s170 infra health ssh contabo tailscale")
Bước 2 — Áp memory #28 kỷ luật 2 vòng rà soát: mọi prompt/phản hồi phải qua 2 vòng (vòng 1 OR compliance, vòng 2 tận gốc), báo cáo ngắn gọn cả 2 vòng trong response. KHÔNG đợi Huyên nhắc.
Bước 3 — Giao Claude Code prompt S171A ở Mục 8 dưới. Copy nguyên văn, không sửa. Đây là blocker duy nhất của cả chuỗi S171.
Bước 4 — Sau khi agent S171A báo cáo: Desktop rà 2 vòng → Huyên chốt PA access → Desktop soạn S171B → S171C.
KHÔNG duyệt PA5 migration trước khi S171A xong. KHÔNG tự cài Tailscale/CF Tunnel. KHÔNG soạn S171B/C trước khi có kết quả S171A.
THÔNG TIN HẠ TẦNG QUAN TRỌNG (đọc kỹ)
Contabo vừa launch Firewall mới tháng 4/2026. Email thông báo Huyên đã nhận và forward cho Desktop S170:
From: Contabo
Hello, We've launched Contabo Firewall — included free with every VPS and VDS. It's the first feature out of Contabo Labs. Activate it and all inbound traffic is blocked by default. From there, you define exactly what gets through — by port, protocol, or source IP. Outgoing traffic stays completely unrestricted.
In practice: your web server accepts HTTPS, SSH is locked to your IP, and everything else never reaches your OS.
Firewall is in your Customer Control Panel at new.contabo.com under Network Services → Firewall. Your new.contabo.com credentials may differ from your my.contabo.com login.
Hệ quả với Incomex Saigon VPS:
- Contabo Firewall có thể đã active → block port 22 SSH (root cause nghi ngờ cao)
- Huyên dùng ADSL IP KHÔNG cố định → không thể whitelist IP tĩnh
- Phải giải pháp zero-trust độc lập IP (Tailscale mesh là ứng viên hàng đầu Huyên nghiêng)
- Contabo có API mới cho Firewall — có thể dùng auto-update rule (PA-E)
1. Tóm tắt 1 câu
S170 đã fix bug doc_id encoding tận gốc (PA5 design: xoá _fs_key + migrate 7147 rows + CHECK constraint). Phát hiện CRITICAL GAP monitoring (Uptime Kuma 0 notification + 41 cron log-only). Còn 3 việc S171 theo thứ tự: Contabo Firewall + IP động vĩnh viễn (P0 blocker) → DOT-VPS-HEALTH + Telegram + provider policy watch → PA5 execute migration.
2. Quyết định kỹ thuật chốt
- PA5 CHỐT design, CHƯA EXECUTE: migrate
kb_documents.key__→/, xoá_fs_key()15 call sites + 1 def, ADD CHECK constraintkey NOT LIKE '%\_\_%' - Số rows migration thật: kb_documents 1630 + history 2473 + audit_log 3044 = 7147 rows
- Huyên chốt: giữ Nuxt /registries tạm làm tài liệu, KHÔNG xoá phiên này (6 pages dùng Directus SDK trực tiếp vi phạm HP nhưng hoãn xử lý)
- Huyên chốt: pg_cron không cài, Uptime Kuma đã có = dùng Uptime Kuma làm backbone health check, Telegram Bot làm alert channel (< 2 phút 24/7)
- Huyên nghiêng Tailscale cho IP động vĩnh viễn (free, mesh, SSH qua 100.x.x.x cố định, không phụ thuộc ADSL) — nhưng agent S171A phải so sánh 5 PA trước, Huyên chốt cuối
- Contabo Firewall CHƯA xác nhận có phải gốc SSH down không — agent S171A PHẢI đăng nhập panel check
3. Sai lầm + bài học chuỗi S170 (tuyệt đối tránh S171)
- AP-CLOSE 3 lần liên tiếp: agent bỏ self-check, bỏ sections, claim "CLEAN" bằng grep hẹp → S171 MỌI prompt phải có self-check checklist tick từng mục cuối report
- AP-VERIFY-HẸP (anti-pattern mới): agent verify theo keyword thay vì nguyên tắc HP kiến trúc. Nuxt registries dùng Directus SDK trực tiếp nhưng agent claim "HP-compliant" → S171 verify phải theo nguyên tắc, không keyword
- NT-09 vi phạm ngầm: agent kết luận "transient network" khi không chắc, không flag → S171 ép agent ghi "KHÔNG CHẮC + lý do" khi không có evidence dứt khoát
- Pattern NT-05 lặp 3 lần: S167 cron nghỉ việc + S170 SSH down âm thầm + S170 Contabo policy thay đổi — tất cả không ai biết → S171 phải có cơ chế tự phát hiện (DOT-VPS-HEALTH + provider policy watch)
- Kỷ luật 2 vòng rà soát (memory #28): Desktop S170 pattern cố hữu là rà qua loa rồi chốt, chỉ rà sâu khi Huyên nhắc → từ S171 tự rà đủ 2 vòng
4. Dữ liệu có con số
| Metric | Giá trị |
|---|---|
| kb_documents | 1809 rows (1630 có __, 0 có /) |
| kb_documents_history | 2473 rows (2473 có __) |
| kb_audit_log | 3047 rows (3044 có __) |
| PA5 migration total | 7147 rows |
| Uptime Kuma monitors | 4 (0 notification channels ⚠️) |
| Cron log-only | 41+ jobs ⚠️ |
_fs_key call sites |
15 + 1 def trong agent-data-repo |
| Legacy purge candidates (S172) | 10 items |
| SSH uptime hiện tại | 53 ngày (không reset khi "down") |
5. TD Updates (Desktop sẽ patch tracker trực tiếp qua agent-data MCP)
- TD-DOC-ID-ENCODING: UNBLOCKED (design chốt) nhưng HOLD EXECUTE. Blocker: chờ S171A giải pháp SSH vĩnh viễn. Data: 7147 rows. DDL trong
reports/s170-finalize-pa5-reportSection C1. - TD-INFRA-MONITORING-GAP (NEW, CRITICAL): Uptime Kuma 4 monitors, 0 notification channels. 41+ cron log-only. Không monitor SSH/Nuxt/PG/Qdrant/Docker/disk. Fix ở S171B.
- TD-DOT-VPS-HEALTH (PROPOSED): Backbone Uptime Kuma + Telegram. DOT cặp (DOT-A scan + DOT-B verify alert). Dual-trigger cron 5 phút + event. Hoàn thiện 5 câu XII ở S171B.
- TD-SSH-ACCESS-PERMANENT (NEW, P0 BLOCKER): Huyên ADSL IP động. Contabo Firewall có thể là root cause. S171A so sánh 5 PA (Tailscale/CF Tunnel/port knocking/CIDR/Contabo API auto-update). Huyên nghiêng Tailscale.
- TD-PROVIDER-POLICY-WATCH (NEW): Cơ chế theo dõi Contabo/GitHub/Cloudflare changelog. S171B thiết kế (RSS feed? cron check? manual weekly?).
- TD-DOT-319-HP-SCANNER (PROPOSED, HOLD): Design trong
s170-finalize-pa5-report. Tự phát hiện vi phạm HP Nuxt/Directus/API. Hoãn cài đến sau S171. - TD-NUXT-HP-VIOLATION-REGISTRIES (HOLD): Huyên giữ tạm làm tài liệu. 6 pages Directus SDK trực tiếp. Phiên S172+ refactor.
6. Roadmap S171
| Bước | Prompt | Mục tiêu | Blocker |
|---|---|---|---|
| 1 | S171A (sẵn ở Mục 8) | Contabo Firewall check + so sánh 5 PA zero-trust + recommend | - |
| 2 | S171B (soạn sau B1) | DOT-VPS-HEALTH 5 câu XII + Telegram + provider policy watch | Kết quả S171A |
| 3 | S171C (soạn sau B2) | Execute PA5 migration 7147 rows + cài DOT-318 HP scanner | SSH vĩnh viễn từ S171A |
7. Tài liệu path
knowledge/current-state/reports/s170-finalize-pa5-report(rev 2, 42607 chars) — PA5 designknowledge/current-state/reports/s170-infra-health— Contabo/SSH/monitoring auditknowledge/current-state/project-progress-tracker.md— tracker sẽ được Desktop patchknowledge/dev/ssot/operating-rules.mdv7.54 — 16 CP + 6 CQ + 13 NT + Section XII- Memory #28 — kỷ luật 2 vòng rà soát
8. PROMPT S171A SẴN SÀNG (Desktop copy nguyên văn giao Claude Code)
# MISSION: S171A-SSH-PERMANENT — Contabo Firewall check + IP động vĩnh viễn
## CHECKPOINT
- ĐỌC SKILL trước mọi việc
- search_knowledge("handoff s170 to s171")
- search_knowledge("s170 infra health ssh contabo")
- search_knowledge("operating rules v7.54 NT-05 NT-09 NT-13 CP-07 CP-12")
- search_knowledge("constitution HP v4.4")
- search_knowledge("tailscale cloudflare tunnel zero trust ssh ip dynamic")
## BỐI CẢNH
S170 phát hiện SSH VPS down âm thầm. Agent S170 kết luận "transient network"
KHÔNG CHẮC (vi phạm NT-09 ngầm). Huyên cung cấp: Contabo vừa launch Firewall
tháng 4/2026 (default block all inbound, Customer Control Panel new.contabo.com
→ Network Services → Firewall). Huyên dùng ADSL IP KHÔNG cố định, không thể
whitelist IP tĩnh.
## TUYÊN NGÔN
① Vĩnh viễn? — whitelist IP ADSL = tạm, IP đổi là down lại
② Cơ hội nhầm? — không, phải không phụ thuộc IP
③ Lỗi = cơ hội vàng — lộ ra cần access zero-trust độc lập IP
## MỤC TIÊU
### A. Xác nhận root cause SSH (NT-09)
1. Đăng nhập Contabo Control Panel new.contabo.com → Network Services → Firewall
2. Kiểm tra: firewall active? rule nào? port 22 whitelist ai?
3. Nếu firewall block port 22 → đây là gốc
4. Nếu không → điều tra thêm, KHÔNG kết luận "transient" trừ khi có evidence
5. Ghi "KHÔNG CHẮC + lý do" nếu không dứt điểm
### B. So sánh 5 PA access zero-trust (bảng đầy đủ, không ô trống)
| PA | Mô tả 1 câu | Setup cost | Vĩnh viễn? | IP động OK? | Bảo mật | Free? | Khuyến nghị |
|----|------------|-----------|-----------|------------|---------|-------|-------------|
| PA-A Tailscale mesh | VPS + macbook join tailnet, SSH 100.x.x.x | ? | ? | ? | ? | ? | ? |
| PA-B Cloudflare Tunnel | VPS expose SSH qua CF tunnel + Access auth | ? | ? | ? | ? | ? | ? |
| PA-C Port knocking | Knock sequence → tạm mở SSH | ? | ? | ? | ? | ? | ? |
| PA-D Whitelist CIDR ISP | Mở SSH cho toàn dải ISP Huyên | ? | ? | ? | ? | ? | ? |
| PA-E Contabo API auto-update | Cron macbook tự update firewall rule IP mới | ? | ? | ? | ? | ? | ? |
Recommend 1 PA kèm lý do bám tuyên ngôn 3 câu.
### C. Impact lên workflow hiện tại
- SSH GitHub Actions deploy có cần điều chỉnh không?
- Docker expose ports có ảnh hưởng không?
- Nuxt/API public endpoints có bị ảnh hưởng không?
## CONSTRAINTS
- Contabo panel: ĐƯỢC đăng nhập, ĐƯỢC thêm whitelist IP Huyên TẠM THỜI
(comment rõ TEMPORARY). KHÔNG xoá rule khác, KHÔNG tắt firewall
- Tailscale/CF Tunnel/tool mới: CHỈ đề xuất, KHÔNG tự cài
- Contabo API: CHỈ đọc để khảo sát, KHÔNG tự tạo rule qua API
- NT-09: không chắc → "KHÔNG CHẮC + lý do"
- Kỷ luật 2 vòng rà soát trước khi báo cáo
## THẾ NÀO LÀ ĐẠT
1. Root cause SSH có evidence (Contabo panel output)
2. Bảng 5 PA × 7 cột đầy đủ, không ô trống
3. Recommend 1 PA + lý do bám tuyên ngôn 3 câu
4. Impact workflow trả lời cụ thể 3 câu C
5. Self-check checklist 4 mục cuối report
## AP-CLOSE
1. Append section "S171A Contabo + PA Comparison" vào
reports/s170-finalize-pa5-report
2. git commit nếu có config change
3. Tracker:
- TD-SSH-ACCESS-PERMANENT: IN-PROGRESS → RECOMMENDED
- TD-DOC-ID-ENCODING: giữ HOLD
4. Self-check checklist cuối report
5. CHỜ Desktop duyệt PA — KHÔNG tự cài
9. Ghi chú kỹ thuật cho Desktop S171
- Artifact rewrite hay bị lỗi hiển thị khi content lớn → dùng
upload_documenttrực tiếp hoặc in text vào chat, tránh rewrite artifact cũ - Huyên không hiểu kỹ thuật, chỉ làm việc khi AI/agent không thể — Desktop phải tự upload KB, tự patch tracker, tự điều hành agent
- Context ~85% là ngưỡng chuyển phiên bắt buộc (memory)