20B-P1 — Stop Context-Pack KB Upload Prompt (rev2)
20B-P1 — Stop Context-Pack KB Upload (rev2)
Date: 2026-05-05 | Status: PROMPT — chờ dispatch Controlling: GPT execution directive (gate P1→P2→P3→P4) + GPT review rev1 (6 patches applied) Scope: Patch DOT script để ngừng upload context-pack lên KB. KHÔNG delete, KHÔNG cron, KHÔNG chạy build. Prior: 20A/20B-P0 inspection report PASS
§0. Mission
Khóa vòi: patch dot-context-pack-build.sh để build mới không upload context-pack lên KB/vector nữa.
Giữ nguyên: filesystem generation + PG manifest publishing. Không làm: delete KB docs cũ, cron, search API patch, Đ43 patch, chạy build script.
§1. Connection
ssh contabo
§2. Pre-read (bắt buộc)
Đọc 3 tài liệu từ KB:
knowledge/dev/laws/dieu44-trien-khai/reports/20a-20b-p0-search-vector-hygiene-inspection-report.md— evidence B1-B3knowledge/dev/laws/dieu44-trien-khai/reviews/opus-review-20a-20b-p0-report-and-next-proposal-2026-05-05.mdknowledge/dev/laws/dieu44-trien-khai/reviews/gpt-review-20a-20b-p0-report-and-execution-directive-2026-05-05.md
Key facts:
- Script path:
/opt/incomex/dot/bin/dot-context-pack-build.sh - KB mirror step: bước 7e (log chứa "KB mirror")
- Upload dùng
doc_id="context-pack/${BUILD_ID}/${outname}" - Script ~1.100+ dòng, rev 11
§3. Preflight — PG manifest constraint check
Trước khi patch, kiểm tra kb_mirror_status có constraint không:
docker exec -i postgres psql -U directus -d directus <<'SQL'
-- Check constraints
SELECT conname, pg_get_constraintdef(oid)
FROM pg_constraint
WHERE conrelid='context_pack_manifest'::regclass
AND pg_get_constraintdef(oid) ILIKE '%kb_mirror_status%';
-- Current values in use
SELECT DISTINCT kb_mirror_status
FROM context_pack_manifest
ORDER BY 1;
SQL
Quyết định:
- Nếu
skippedhoặcdisabledđã là giá trị hợp lệ (trong constraint hoặc đã tồn tại) → dùng giá trị đó trong log/status. - Nếu KHÔNG hợp lệ → KHÔNG invent status mới. Giữ nguyên hành vi manifest, chỉ skip upload step. Ghi TD: "manifest kb_mirror_status semantics cần patch riêng dưới Đ43/20C."
Mục tiêu P1 là stop upload, không sửa manifest semantics.
§4. Backup
SCRIPT="/opt/incomex/dot/bin/dot-context-pack-build.sh"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BACKUP_PATH="/opt/incomex/backups/dot-context-pack-build.sh.pre-20b-p1.${TIMESTAMP}"
cp "$SCRIPT" "$BACKUP_PATH"
# Verify backup identical
diff "$SCRIPT" "$BACKUP_PATH"
echo "Diff exit: $?"
ls -la "$BACKUP_PATH"
Nếu backup fail → KHÔNG patch. Upload partial report. HARD STOP.
§5. Inspect — tìm chính xác vùng cần patch
KHÔNG dùng line number cứng. Grep trước, đọc context sau.
# Tìm KB mirror/upload block
grep -n 'KB mirror\|kb_mirror\|upload_document\|createDocument\|7e\|context-pack.*BUILD_ID' "$SCRIPT" | head -20
# Tìm function chứa upload logic
grep -n 'function\|publish_kb\|mirror_kb\|upload_section\|upload_to_kb' "$SCRIPT" | head -20
# Sau khi biết dòng, đọc context ±20 dòng
# sed -n '<START>,<END>p' "$SCRIPT"
Ghi lại vùng chính xác của KB mirror block.
§6. Patch — env flag (ưu tiên)
Cách ưu tiên: env flag
Thêm biến ở đầu script (hoặc trong config section):
KB_MIRROR_ENABLED="${KB_MIRROR_ENABLED:-false}"
Wrap chỉ KB upload block:
if [ "$KB_MIRROR_ENABLED" = "true" ]; then
... existing KB upload block nguyên vẹn ...
else
log_warn "7e KB mirror SKIPPED (disabled by 20B-P1; filesystem + PG manifest remain authoritative)"
fi
Fallback: comment-out
Chỉ dùng nếu script structure không cho phép flag an toàn (giải thích lý do trong report).
Bất kể cách nào:
- Giữ nguyên code filesystem generation (
context-pack-staging/,context-pack/current/) - Giữ nguyên code PG manifest publishing (
context_pack_manifest,context_pack_sections) - Chỉ disable phần upload lên Agent Data KB
kb_mirror_status: Chỉ thay đổi nếu preflight §3 xác nhận giá trị mới hợp lệ. Nếu không → giữ nguyên + ghi TD.
§7. Verify sau patch
# 7.1 Syntax check
bash -n "$SCRIPT"
echo "Syntax check exit: $?"
Nếu syntax fail → restore ngay:
cp "$BACKUP_PATH" "$SCRIPT"
echo "RESTORED from backup"
# Upload partial report, HARD STOP
# 7.2 Confirm flag tồn tại
grep -n 'KB_MIRROR_ENABLED' "$SCRIPT"
# 7.3 Show patched block context (đọc vùng đã patch ±10 dòng)
# sed -n '<patched_start-10>,<patched_end+10>p' "$SCRIPT"
# 7.4 Confirm không có unconditional upload ngoài gated block
# Tìm tất cả upload_document/createDocument, xác nhận chúng NẰM TRONG if KB_MIRROR_ENABLED=true block
grep -n 'upload_document\|createDocument' "$SCRIPT"
# Mỗi match phải nằm giữa if KB_MIRROR_ENABLED và fi tương ứng
# 7.5 Filesystem code vẫn còn
grep -n 'context-pack-staging\|context-pack/current\|cp.*section\|mv.*section' "$SCRIPT" | head -10
# 7.6 PG manifest code vẫn còn
grep -n 'context_pack_manifest\|context_pack_sections\|manifest_id\|publish_status' "$SCRIPT" | head -10
# 7.7 Diff against backup
diff "$BACKUP_PATH" "$SCRIPT" | head -80
§8. Explicit prohibitions
- ❌ KHÔNG chạy
dot-context-pack-build.sh(không build execution) - ❌ KHÔNG chạy cron
- ❌ KHÔNG restart service
- ❌ KHÔNG deleteDocument
- ❌ KHÔNG deindex
- ❌ KHÔNG bulk cleanup
- ❌ KHÔNG search API patch
- ❌ KHÔNG Đ43 patch
- ❌ KHÔNG Pack 2C/IU
- ❌ KHÔNG hỏi lại User
§9. Report
Upload tại: knowledge/dev/laws/dieu44-trien-khai/reports/20b-p1-stop-context-pack-kb-upload-report.md
# 20B-P1 — Stop Context-Pack KB Upload Report
## Preflight
- kb_mirror_status constraint: [exists/absent]
- Allowed values: [list]
- Decision: [use skipped / keep unchanged + TD]
## Backup
- BACKUP_PATH: [exact path]
- Verified identical: yes / no
## Patch applied
- Method: env flag / comment-out (explain if fallback)
- KB_MIRROR_ENABLED location: line [N]
- Gated block: lines [N-M]
- kb_mirror_status: changed to [value] / unchanged + TD
## Verification
- Syntax check: PASS / FAIL
- KB_MIRROR_ENABLED grep: [matches]
- Unconditional upload check: [0 outside gate / explain]
- Filesystem code: INTACT
- PG manifest code: INTACT
- Diff: [paste head -80]
## TD (nếu có)
- manifest kb_mirror_status semantics patch needed: yes / no
## Next
- 20B-P2 dry-run delete list (separate prompt, separate approval)
§10. Restore rule
| Tình huống | Hành động |
|---|---|
| Backup fail | KHÔNG patch. Partial report. STOP. |
| Patch xong, syntax fail | Restore từ BACKUP_PATH. Partial report. STOP. |
| Patch xong, verify fail (upload vẫn unconditional) | Restore từ BACKUP_PATH. Partial report. STOP. |
| Tất cả PASS | Full report. STOP. Chờ 20B-P2. |
§11. Nôm na
Tắt nút "gửi lên kệ tìm kiếm" trên máy photocopy. Trước khi tắt: (1) kiểm xem sổ kiểm kê có cho phép ghi "đã tắt" không, (2) chụp ảnh máy cũ. Nếu chụp ảnh thất bại → không tắt gì cả. Nếu tắt xong máy báo lỗi → bật lại ngay từ ảnh cũ.
20B-P1 Prompt rev2 | 2026-05-05 | 6 GPT patches applied. Stop KB upload only. Chờ dispatch.