跳转到内容

System Capabilities

Plystra 0.0.1 把运行入口和官方 system capabilities 都保留在 plystra/plystra 仓库中。Kernel 在进程启动时把它们作为内置特权模块加载。

System capabilities 不是业务插件。它们是治理层,后续业务插件必须经过它们约束。

CapabilityID职责
Auditaudit.explainable审计写入、审计查询、decision trace 存储和隐私快照规则。
Identityidentity.businessUser、Space、Member、UserMember、Group 和 actor context resolution。
Resource Registryresource.registryResource type、action、resource binding 和 lookup context。
Authorizationauthorization.resourceauthz/checkauthz/explain、deny code、scope 计算和 decision trace。
Adminadmin.control_planeAdminGrant、管理 API 保护、bootstrap handoff 和 admin audit event。

当前模型刻意保持很窄。

0.0.1 允许:

  • internal/system/* 下的内置模块
  • internal/kernel/contracts 下的稳定 kernel contract
  • 通过 manifest 声明 service、route、lifecycle hook 和 migration ownership
  • 仅启动时加载
  • 依赖排序和 readiness checks
  • kernel 拥有 service registry、route registry、event substrate 和 migration registry

0.0.1 不支持:

  • 运行时热卸载或替换 required system capability
  • 第三方 system capability
  • system capability 远程 marketplace 安装
  • business plugin 替换 identity、authorization、audit、resource registry 或 admin control
  • Go plugin ABI 加载
  • sidecar 或外部进程方式加载 system capability

plystra/plystra 是主发行仓库,包含完整 runtime:

internal/kernel/
app.go
config/
lifecycle/
registry/
contracts/
migrations/
events/
bootstrap/
internal/system/
audit/
identity/
resource_registry/
authz/
admin/

Kernel 代码依赖 contract interface 和 registry metadata。Kernel 不拥有 identity、resource registry、authorization、audit 或 admin control 的业务语义;capability package 实现这些语义,并通过 kernel lifecycle 注册。

plystrad 启动时会:

  1. 读取配置,并打开 Ent-backed PostgreSQL 连接。
  2. 初始化最小 kernel event substrate。
  3. 发现内置 system capability manifest。
  4. 校验 capability ID、version、required flag、privilege 和依赖。
  5. 解析依赖图。
  6. 注册 capability migration ownership metadata。
  7. 在 service registry 中注册 system services。
  8. 注册 API route metadata。
  9. 启动 capability lifecycle hook。
  10. 只有 required capabilities 全部健康后,/api/v1/ready 才进入 ready。

Required capability 启动失败时,runtime 必须保持 unready。

数据库访问通过 Ent,生产 schema 变更通过 plystra/migrations/ 下的 versioned Atlas-style SQL migration 承载。

每个 system capability 在代码中拥有自己的 migration namespace,kernel 负责校验并执行发行 migration set:

CapabilityNamespace
audit.explainablesys_audit
identity.businesssys_identity
resource.registrysys_resource
authorization.resourcesys_authz
admin.control_planesys_admin

生产升级不要使用 Ent auto migration。

每个内置 system capability manifest 必须声明:

  • 官方 required capability ID
  • kind: system_capability
  • 语义化版本,当前为 0.0.1
  • required capability 依赖
  • services、routes、events 和 migration ownership
  • privileged: true
  • required: true
  • stability: experimental

用 readiness 和 capability inspection 检查 runtime:

Terminal window
curl -s http://localhost:8080/api/v1/ready
curl -s -H "X-Plystra-API-Key: $PLYSTRA_API_KEY" \
http://localhost:8080/api/v1/capabilities

/api/v1/ready 包含 system_capabilities/api/v1/capabilities 受管理权限边界保护。

  • 从将要部署的准确源码 revision 构建主 runtime。
  • 生产流量启动前执行 plystractl migrate verify
  • 部署验证中执行 plystractl ent checkplystractl doctor
  • Smoke test health、ready、version、authz/check allow、authz/check deny 和受保护的 /api/v1/capabilities
  • 把 system capability 代码视为特权发行代码,用和 kernel 变更相同的控制审查。