# v0.2 Postgres 稳定外部服务规格

`hwlab-v02-postgres` 是 v02 独立 Postgres StatefulSet，使用外部稳定镜像 `postgres:16-alpine` 的本地 registry 版本，内部端口 `5432`。

## 在系统中的职责划分

- 为 `hwlab-cloud-api` 提供 v02 独立 durable runtime store、migration ledger、agent/gateway/evidence 等持久化表。
- 与 `hwlab-dev`/`hwlab-prod` 数据隔离；v02 使用独立 namespace、Service、PVC、database/user 和 SecretRef。
- 不向公网开放，不由普通用户或 Code Agent 直连。

## 内部架构

- `StatefulSet/hwlab-v02-postgres` 挂载 `data` PVC 到 `/var/lib/postgresql/data`。
- `ConfigMap/hwlab-v02-postgres-init` 提供初始化 SQL 和 `hwlab_schema_migrations` ledger。
- `Secret/hwlab-v02-postgres` 提供 `POSTGRES_PASSWORD`；`Secret/hwlab-cloud-api-v02-db` 提供 cloud-api 使用的 `database-url`。
- `Service/hwlab-v02-postgres` 提供 ClusterIP DNS。

## API 接口说明

| 接口 | 说明 |
| --- | --- |
| TCP `hwlab-v02-postgres.hwlab-v02.svc.cluster.local:5432` | Postgres wire protocol，仅内部服务使用。 |
| `POSTGRES_DB=hwlab_v02`、`POSTGRES_USER=hwlab_v02` | v02 独立数据库身份。 |
| `hwlab-cloud-api /health/live` DB readiness | 对外展示 DB env、schema、auth、readiness 和 migration ledger，不打印 Secret。 |

## 测试规格

## T1

阅读 docs/reference/spec-v02-postgres.md，然后用 cli 手动测试以下内容：查询 StatefulSet、Service、PVC 和 SecretRef 名称，确认全部在 `hwlab-v02` namespace，且不输出 Secret 值。

## T2

阅读 docs/reference/spec-v02-postgres.md，然后用 cli 手动测试以下内容：访问 `hwlab-cloud-api /health/live`，确认 DB readiness ready、runtime adapter 为 Postgres、migration ledger 存在。

## 规格的实现情况

| 规格项 | 状态 | 说明 |
| --- | --- | --- |
| 独立 StatefulSet/PVC | 已实现 | `hwlab-v02-postgres` 在 v02 namespace。 |
| 初始化 schema/migration ledger | 已实现 | ConfigMap 包含 `0001_cloud_core_skeleton`。 |
| cloud-api DB SecretRef | 已实现 | `hwlab-cloud-api-v02-db/database-url`。 |
| 自动备份/恢复 | 未实现 | 当前 spec 未定义备份服务。 |
| 多副本 HA | 未实现 | 当前为单副本 StatefulSet。 |

