KB-430C rev 2

E5 Execution Package — Create FAC-07/08/09 v0.2

7 min read Revision 2

E5 Execution Package — Create taxonomy_facets FAC-07/08/09 (v0.2)

Phase: P9 Entry Gate, E5 Loại: Production mutation — Directus API Trạng thái: DRAFT v0.2 — Patched 5 điểm GPT. Chờ GPT final gate. Phiên: S183 | Ngày: 2026-04-27 APR Authority: P9-E4-FACETS-D38 APPROVED 3/3 (rev 2) Scope: taxonomy_facets INSERT ONLY. Không taxonomy_labels. Không entity_labels. Không E7/P9.


1. Mục tiêu

Tạo 3 approved taxonomy_facets (FAC-07, FAC-08, FAC-09) qua Directus API. Verify tồn tại đúng. Upload action log. STOP.

2. Ràng buộc tuyệt đối

  1. CHỈ INSERT vào taxonomy_facets. Không collection nào khác.
  2. CHỈ 3 rows đúng APR decision payload. Không thêm/bớt.
  3. KHÔNG tạo taxonomy_labels.
  4. KHÔNG tạo entity_labels.
  5. KHÔNG chạy E7/P9.
  6. Nếu BẤT KỲ pre-check FAIL → STOP + report.
  7. Nếu partial failure (1-2 created, 1 fail) → STOP + report. Không tự sửa, không retry.
  8. Governed path: Directus API POST /items/taxonomy_facets. Không SQL trực tiếp. Không manual UI.

3. Actor / Gateway Guard

  • Actor: Opus hoặc agent execute. GPT KHÔNG execute.
  • Gateway: Directus API (MCP tool hoặc VPS curl). Cấm manual SQL/UI.
  • Logging: Mọi POST phải log rõ: actor, gateway method, timestamp, payload, response.

4. Pre-checks (read-only, BLOCKING)

4.1 Verify FAC-07/08/09 chưa tồn tại

GET /items/taxonomy_facets?filter[code][_in]=FAC-07,FAC-08,FAC-09

Expect: 0 items. Nếu bất kỳ FAC-07/08/09 đã tồn tại → STOP: "target facet already exists".

4.2 Verify baseline taxonomy intact (BLOCKING)

GET /items/taxonomy_facets?fields=id,code,name,status&sort=code

Expect: đúng 7 items với codes và status:

# Code Status
1 FAC-01 active
2 FAC-02 active
3 FAC-03 active
4 FAC-04 active
5 FAC-05 active
6 FAC-06 active
7 FAC-PROV active

Nếu:

  • Count ≠ 7 → STOP: "baseline taxonomy drift — expected 7, found [n]"
  • Bất kỳ code thiếu/thừa → STOP: "baseline code mismatch"
  • Bất kỳ status ≠ active → STOP: "baseline status drift on [code]"

4.3 Verify Directus API availability

GET /server/health

Expect: status=ok. Nếu fail → STOP: "Directus API unavailable".

5. Exact Payload (từ APR decision, immutable)

[
  {
    "code": "FAC-07",
    "name": "Thuộc tài liệu nào?",
    "description": "Phân loại text unit theo document source gốc. Áp dụng cho D38 Text as Code logical units.",
    "status": "active"
  },
  {
    "code": "FAC-08",
    "name": "Chủ đề nội dung?",
    "description": "Phân loại text unit theo chủ đề nội dung chính. Áp dụng cho D38 Text as Code logical units.",
    "status": "active"
  },
  {
    "code": "FAC-09",
    "name": "Tầng kiến trúc?",
    "description": "Phân loại text unit theo design/legal/operational layer. Áp dụng cho D38 Text as Code logical units.",
    "status": "active"
  }
]

6. Final Pre-flight Re-check (ngay trước POST)

Ngay trước khi gửi POST đầu tiên, chạy lại:

  1. Re-verify FAC-07/08/09 non-existence (§4.1)
  2. Re-verify API health (§4.3)
  3. Confirm payload vẫn khớp APR decision §5

Nếu bất kỳ re-check FAIL → STOP. Không POST.

7. Execution

3 POST requests tuần tự qua Directus API:

POST /items/taxonomy_facets  →  payload[0]  (FAC-07)
POST /items/taxonomy_facets  →  payload[1]  (FAC-08)
POST /items/taxonomy_facets  →  payload[2]  (FAC-09)

Sau mỗi POST:

  • Verify HTTP 200/201
  • Verify response chứa created item với code/name/status khớp
  • Nếu fail → STOP ngay. Không POST tiếp. Report partial state.

8. Execution Guard

Check Condition Action
Pre-existing FAC-07/08/09 Any exists STOP
Baseline drift Count ≠ 7 or status ≠ active STOP
API unavailable Health ≠ ok STOP
POST returns error HTTP ≠ 200/201 STOP + report partial state
Response missing fields code/name/status absent STOP
Payload mismatch vs APR Any field differs from §5 STOP

9. Post-verify

Sau khi tạo cả 3:

GET /items/taxonomy_facets?filter[code][_in]=FAC-07,FAC-08,FAC-09&fields=id,code,name,description,status

Expect: 3 items khớp exact payload §5.

Verify tổng count: GET /items/taxonomy_facets → expect 10 items (7 baseline + 3 new).

10. Rollback / Compensation

  • Rollback = compensation, cần gate riêng. KHÔNG tự động.
  • Nếu partial failure → STOP + report. KHÔNG tự DELETE, KHÔNG retry.
  • Nếu GPT/User chỉ đạo rollback → prompt/gate riêng cho DELETE.

11. Action Log

Report tại reports/p9-e5-facet-creation-log-2026-04-27.md:

# E5 Facet Creation Log — 2026-04-27

> APR: P9-E4-FACETS-D38 APPROVED 3/3
> Actor: [Opus/agent]
> Gateway: [Directus MCP / VPS curl]
> Timestamp: [ISO 8601]
> Prompt: E5 Execution Package v0.2

## Pre-checks
| # | Check | Result | Status |
|---|-------|--------|--------|
| 1 | FAC-07/08/09 not exist | [result] | PASS/FAIL |
| 2 | Baseline 7 facets intact | [codes+status] | PASS/FAIL |
| 3 | API health | [result] | PASS/FAIL |

## Pre-flight re-check
| # | Check | Result | Status |
|---|-------|--------|--------|
| 1 | FAC-07/08/09 still not exist | [result] | PASS/FAIL |
| 2 | API still healthy | [result] | PASS/FAIL |
| 3 | Payload matches APR | [yes/no] | PASS/FAIL |

## Execution
| # | Facet | Timestamp | HTTP | Response ID | Payload match APR? | Status |
|---|-------|-----------|------|-------------|---------------------|--------|
| 1 | FAC-07 | [ts] | [code] | [id] | PASS/FAIL | PASS/FAIL |
| 2 | FAC-08 | [ts] | [code] | [id] | PASS/FAIL | PASS/FAIL |
| 3 | FAC-09 | [ts] | [code] | [id] | PASS/FAIL | PASS/FAIL |

## Post-verify
| Check | Result | Status |
|-------|--------|--------|
| 3 new facets exist | [codes] | PASS/FAIL |
| Total facets = 10 | [count] | PASS/FAIL |
| All fields match APR | [detail] | PASS/FAIL |

## Verdict: PASS / PARTIAL / FAIL

Upload KB: knowledge/dev/laws/dieu38-trien-khai/reports/p9-e5-facet-creation-log-2026-04-27.md

12. Scope Exclusions

Mutation In scope?
taxonomy_facets INSERT (3 rows)
taxonomy_labels INSERT
entity_labels INSERT
approval_requests INSERT
E7 dot-register
P9 migration
DELETE rollback ❌ (needs own gate)

SAU KHI XONG: STOP. Chờ GPT/User review.


Patch log v0.1 → v0.2

# GPT điểm Fix
1 §3.2 baseline drift = NOTE ✅ §4.2: BLOCKING — STOP nếu count/code/status lệch
2 Thiếu actor/path guard ✅ §3: actor + gateway + logging requirements
3 Thiếu final pre-flight re-check ✅ §6: re-verify ngay trước POST
4 Action log thiếu fields ✅ §11: actor, gateway, timestamp, payload match per POST
5 Rollback wording mơ hồ ✅ §10: compensation cần gate riêng, không tự động

E5 Execution Package v0.2 | S183 | 2026-04-27 | Opus 4.6 GPT review v0.1: PASS WITH PATCH → v0.2 Chờ GPT final gate