# Core `registry` — Storage Service (registry .ogapp)

> 07/7/2026 · Repo: **riêng (s3.phuc.pro)** · Đánh giá: **❌ Điểm yếu bảo mật lớn nhất** · Bản HTML: [registry.html](registry.html) · [Review tổng core](core-review-2026-07-07.md)

## 1. Vai trò
Registry lưu trữ artifact **.ogapp**: GET danh sách/version/tải về, POST upload multipart, DELETE gỡ — cấu trúc `packages/<key>/<version>.ogapp`.

## 2. Thành phần chính

| Thành phần | Vai trò |
|---|---|
| **API packages** | GET /packages[/:name[/:version]] · POST /packages (multipart) · DELETE /packages/:name[/:version] |
| **Đường tải thay thế qua CP** | CP_REGISTRY_URL + CP_AUTH_TOKEN (Bearer) — đã có ở ogapp CLI |
| **Checksum phía cài** | runtime-core ghi checksum_sha256 vào ledger lúc install |

## 3. Hiện trạng (đọc từ code)
- Semantics npm-registry tối giản, đủ dùng nội bộ giai đoạn đầu
- ❌ **POST upload và DELETE không thấy cơ chế xác thực** (theo tài liệu HUONG_DAN: curl POST thẳng) — ai biết URL là đăng/gỡ được package; đây là **chuỗi cung ứng của mọi workspace khách hàng**
- ⚠ Checksum ghi lúc cài nhưng **không có chữ ký publisher** — không phân biệt được gói chính chủ với gói bị thay
- ⚠ Không immutable version: upload đè cùng version là thay ruột gói đã phát hành

## 4. Khuyến nghị — tham chiếu hệ phổ biến

| Tham chiếu | Khuyến nghị |
|---|---|
| **npm / Docker registry** | **Ưu tiên cao nhất bộ core:** (1) bắt buộc token cho POST/DELETE; (2) **version immutable** — đã publish thì không đè, muốn sửa phải tăng version; (3) registry trả checksum trong metadata, host verify trước khi giải nén |
| **Sigstore / Docker Content Trust** | Bước 2 (trước khi có trường thứ 2): ký gói bằng key của publisher, host verify chữ ký — chống cả trường hợp registry bị chiếm |
| **Hạ tầng** | Cân nhắc hợp nhất về CP store làm đường chính (đã có Bearer) — registry s3 chỉ còn là storage backend nội bộ |

## 5. Liên kết trong core
- **sdk** — publish lên đây
- **rt-host** — install tải từ đây
- **cp-store** — đường tải có auth


## Ma trận tác nhân × năng lực

Core không phải module nghiệp vụ — ma trận theo **tác nhân**, kèm cơ chế/quyền gate. R đọc · W thực hiện · A duyệt.

| Năng lực | Cơ chế / quyền gate | SUPER | OWNER/QTHT | DEV | SVC | USER |
|---|---|:--:|:--:|:--:|:--:|:--:|
| GET metadata / download | token read (đích P1 — hiện mở) | — | — | R | R | — |
| POST publish package | token write + version immutable (đích P1) | — | — | W | — | — |
| DELETE / yank version | chỉ admin; version đã phát hành chỉ yank, không xóa (đích) | W | — | — | — | — |
| Verify checksum lúc cài | host so metadata trước giải nén (đích P1) | — | — | — | W | — |

SUPER = super admin CP · OWNER/QTHT = quản trị WS · DEV = developer/publisher · SVC = service-to-service · USER = người dùng cuối. Mục **(đích)** = theo khuyến nghị P1–P5.
