⏱️ Thời gian (temporal) — đặt ở đâu, kế thừa & version

Thời gian gắn ở doc; điều/khoản/điểm kế thừa của doc mẹ (như CSS cascade), chỉ đè khi có hiệu lực riêng hoặc bị sửa. Đây là nền cho search as_of + cờ.

1 · Thời gian đặt ở node nào

Tầng nodeLưu thời gian?Quy tắc
doc (văn bản)✅ LUÔN (gốc)ngày ban hành · hiệu lực · hết hiệu lực — cho cả khối
điều / khoản / điểm❌ kế thừa doccon LẤY thời gian của mẹ → không nhân bản 1tr điều
đè (ngoại lệ)✅ chỉ điều ngoại lệ(a) điều có hiệu lực riêng · (b) điều bị SỬA → tách version
edge (amends/repeals)✅ ngày quan hệngày sửa/bãi có hiệu lực → tạo MỐC CẮT version

2 · Node con kế thừa node mẹ (cascade)

doc Luật Đất đai 2024 hiệu lực: 2024-08-01 → nay ├ Chương VI ↳ kế thừa: 2024-08-01 → nay │ ├ Điều 81 ↳ kế thừa: 2024-08-01 → nay │ └ Điều 82 ↳ ĐÈ (bị sửa): xem version ↓ └ Điều 200 ↳ ĐÈ (hiệu lực riêng): 2025-01-01 → nay

→ Chỉ stamp doc + vài điều ngoại lệ. Phần lớn điều im lặng mượn thời gian mẹ.

3 · Điều bị SỬA → tách version (vì sao không chỉ stamp ở doc)

NĐ X sửa Điều 82 có hiệu lực 2025-07-01 → Điều 82 có 2 phiên bản độc lập với doc mẹ:

Điều 82 · v1
[2024-08-01 → 2025-07-01) — bản cũ, hết hiệu lực
Điều 82 · v2
[2025-07-01 → nay) — bản đã sửa (edge amends ngày 2025-07-01)

4 · Hệ quả

Search as_ofHỏi "Điều 82 năm 2024 thế nào" → trả v1. Hỏi "hiện nay" → trả v2.
Cờxanh còn hiệu lực · vàng đã bị sửa (có v mới) · đỏ đã bãi bỏ
Đổi luậtGắn cờ + "nhắc" mọi thứ trỏ tới điều (downstream). KHÔNG rebuild → graph không nổ.
⏱️ Một câu: thời gian sống ở doc + edge; điều con mượn của doc trừ khi bị sửa/có hiệu lực riêng thì tách version. Nhờ vậy mới trả đúng "luật tại thời điểm X" và nhắc nhau khi thay đổi — mà không phải đụng tới 1 triệu điều.