D05-R47 · 外部执行准入 · 停止态安装

下一刀不是继续写证明,而是先拒绝错误主机,再把真实执行责任交到正确的人手里

生产只读复核确认:当前 EC2 带生产标记、正在承载 Portal、8100 正监听,而且 UID/GID 991 已被 Redis 与 Nginx 占用。R47 因此拒绝就地安装 Controller,改为锁定专用 staging 目标合同、六席外部授权包、十项来源包和七阶段停止态执行路径。

TARGET SELECTION FIREWALL

共享生产 Portal 主机 ≠ Controller 控制面

DENY CURRENT HOST
当前 EC2不合格目标
ip-172-31-19-46.ap-southeast-2.compute.internal
角色
共享生产 Portal
生产标记
存在
8100 / 8110
1 / 0
UID / GID 991
redis6 / nginx
安装会破坏隔离、身份和故障域边界
×不可原地转换
目标合同专用 staging 控制面
runner-controller-dedicated-staging-control-plane-v1
环境
staging
主机类别
专用非生产
8100 / 8110
0 / 0
UID / GID 991
FREE / FREE
先停止态安装、独立读回、回滚,再讨论激活
技术能力不是授权

SSH 身份具备免密 sudo 技术能力,但没有 Platform SRE、Security、FinOps、Release 或 Product 的范围绑定回执;R47 明确将两者分开。

LIVE HOST READBACK · 2026-07-28

十二项目标检查:当前主机只通过 5 项,7 项明确失败

失败项不是待美化的 UI 状态,而是阻止安装的架构防火墙。Controller unit、身份和目录保持缺席属于安全空状态,不代表可以绕过目标选择。

HOST-01FAIL

主机类别

要求DEDICATED_NON_PRODUCTION_CONTROL_PLANE

观测SHARED_PRODUCTION_PORTAL_HOST

HOST-02FAIL

环境

要求staging

观测production

HOST-03FAIL

生产标记

要求ABSENT

观测/etc/reits-production-host PRESENT

HOST-04FAIL

Portal 服务

要求ABSENT

观测reits-developer-portal active

HOST-05FAIL

端口 8100

要求0 listeners

观测1 listener

HOST-06PASS

端口 8110

要求0 listeners before activation

观测0 listeners

HOST-07FAIL

UID 991

要求FREE

观测redis6

HOST-08FAIL

GID 991

要求FREE

观测nginx

HOST-09PASS

Controller identity

要求ABSENT before installation

观测ABSENT

HOST-10PASS

运行清单

要求ABSENT before installation

观测ABSENT

HOST-11PASS

安装根目录

要求ABSENT before installation

观测ABSENT

HOST-12PASS

Unit / process

要求ABSENT / 0

观测ABSENT / 0

GITEA LIVE VISIBILITY

可达,但当前会话看不到私有组织清单

Gitea 1.25.4 在线;未认证组织 API 返回 0 个仓、commit API 返回 404。这里不把它画成“项目归零”,而是标为缺少组织读取授权和 Runner 新鲜清单。

服务可达
YES
未认证仓可见数
0
解释
AUTH REQUIRED
Runner 清单
STALE

SIX EXTERNAL OWNER PACKETS

六席责任人各拿一张可执行任务包,不再把所有阻塞堆给一个“平台团队”

每张任务包都有固定 idempotency key、Gate 范围、交付任务和必须返回的回执;Portal 可以生成和验签包,但不能替责任人签名。

AUTH-PLATFORM未授权

Platform SRE

选择并创建专用非生产控制面主机,提供两台组织级一次性 Linux Runner 容量,并执行停止态安装。

Gate
D05-G01 · D05-G07
返回
目标主机、成本中心、变更窗口、停止态安装和回滚回执
d05-r47-auth-platform-v1Portal 不可代签
AUTH-MOBILE未授权

Mobile Platform

提供组织级独立 Mac Runner,完成原生任务、隔离和销毁回读。

Gate
D05-G02
返回
Mac 主机范围、标签、Keychain/网络隔离、原生任务和销毁回执
d05-r47-auth-mobile-v1Portal 不可代签
AUTH-SECURITY未授权

Security

批准 root-owned 配置、SecretRef 可见性、verify-only KeyRef 与硬化边界。

Gate
D05-G03
返回
精确配置摘要、文件元数据、SecretRef 边界和安全签名
d05-r47-auth-security-v1Portal 不可代签
AUTH-ARCH未授权

Global Architecture

审查六个生产 Factory、五个只读数据源和独立证明验证器。

Gate
D05-G04
返回
Factory 源码、权限、ConfigRef、逆序清理和架构签署
d05-r47-auth-arch-v1Portal 不可代签
AUTH-SUPPLY未授权

Supply Chain + Release

签署 source、artifact、SBOM、config、migration 与 runtime identity 同源链。

Gate
D05-G09
返回
独立构建者、不可变制品、六值摘要和签名来源证明
d05-r47-auth-supply-v1Portal 不可代签
AUTH-FINOPS未授权

FinOps

批准专用主机与一次性 Runner 的预算、TTL、区域和销毁责任。

Gate
D05-G01 · D05-G02 · D05-G07
返回
成本中心、最高预算、最长存活、报警与强制销毁回执
d05-r47-auth-finops-v1Portal 不可代签

IMMUTABLE SOURCE KIT

十项来源包已经逐文件重算摘要,但仍保持候选或 fixture-only 标签

这批文件足以让外部责任人评审目标、身份、配置、停止态安装和独立见证;它们不会因为出现在仓库里就自动成为生产安装回执。

ID来源文件大小摘要状态
KIT-01ops/runner-factory/reits-runner-factory-controller.service1,184 Bsha256:015d894f77654…仓库候选
KIT-02ops/runner-factory/controller-runtime-manifest-candidate.json2,462 Bsha256:197dd96afb460…仓库候选
KIT-03ops/runner-factory/controller-root-installation-identity-candidate.json474 Bsha256:e3a583f5eb3bd…仓库候选
KIT-04ops/runner-factory/controller-privileged-installation-target-profile-candidate.json915 Bsha256:5da98039e2347…仓库候选
KIT-05ops/runner-factory/controller-privileged-installation-change-envelope-candidate.json896 Bsha256:fbfa99a7c4501…仓库候选
KIT-06ops/runner-factory/controller-stopped-state-installation-authorization-admission-candidate.mjs15,825 Bsha256:7e1926cf9ef8b…仅夹具验证
KIT-07ops/runner-factory/controller-detached-stopped-state-installation-execution-package-candidate.mjs23,813 Bsha256:3f944df71fac0…仅夹具验证
KIT-08ops/runner-factory/controller-stopped-state-posix-installation-transaction-candidate.mjs16,429 Bsha256:aeea516bb5eee…仅夹具验证
KIT-09ops/runner-factory/controller-privileged-installation-execution-witness-candidate.mjs22,225 Bsha256:ce3acec728582…仅夹具验证
KIT-10ops/runner-factory/controller-root-manifest-client-identity-installation-candidate.mjs21,316 Bsha256:0a129863daaa7…仅夹具验证

SEVEN-STAGE OPERATOR RUNBOOK

从目标选择到一次性窗口,所有副作用都被压到外部授权之后

R47 只让来源冻结这一阶段进入 ready;目标、资源、配置、安装、读回与执行窗口继续按真实前置失败关闭。

01STAGE-01

专用目标选择

锁定 staging、专用、无生产标记、UID/GID 无冲突的目标主机

Platform SRE + FinOps等待外部责任人
02STAGE-02

Runner 容量准备

补齐 G01/G02 的组织级 Linux 与独立 Mac lane

Platform SRE + Mobile Platform等待外部责任人
03STAGE-03

精确来源包冻结

冻结 10 项来源并签署 source/artifact/config 身份

Supply Chain + Release来源包已就绪
04STAGE-04

配置与 Factory 审查

安装前完成 G03/G04 的真实配置与最小权限评审

Security + Global Architecture等待外部责任人
05STAGE-05

停止态安装

只写 identity、manifest 和 client modules;不得安装 unit、启动服务或监听端口

Platform SRE等待前置
06STAGE-06

独立读回与回滚演练

逐文件摘要/元数据回读后逆序回滚至空状态

QA + Independent Witness等待前置
07STAGE-07

一次性执行窗口准入

导入六席外部回执并锁定不超过 30 分钟的执行窗口

Release AuthorityR48 前保持冻结
STOPPED-STATE ALLOWED

目标锁定后仍只允许写入停止态工件

  • 专用 non-login identity 与 root-owned manifest
  • 五个只读 client module 与 verify-only key client
  • 逐文件摘要、mode、inode 和单硬链接独立回读
  • 逆序删除并恢复安装前空状态
CAPABILITY FIREWALL

R47 明确禁止这些动作

  • 不得在当前生产 Portal 主机安装
  • 不得安装或 enable systemd unit
  • 不得启动 Controller 或监听 8110
  • 不得读取真实 Secret、创建 Runner 或付费资源
FAIL-CLOSED VERIFICATION168 / 16812 项主机检查 × 14 条不变量
R47-UI01R47 双轨进度与正式 Gate 真值R47-UI02当前主机目标适配裁决R47-UI03生产标记与共享服务冲突R47-UI04UID/GID 991 冲突R47-UI05端口 8100/8110 边界R47-UI06专用 staging 目标合同R47-UI07Gitea 可达性与授权可见度R47-UI08G01 Linux Runner 容量派发R47-UI09G02 Mac Runner lane 派发R47-UI10G03 安全配置授权R47-UI11G04 Factory 架构审查R47-UI12G07 停止态安装授权R47-UI13G09 供应链签名授权R47-UI14FinOps 预算与 TTL 授权R47-UI15十项来源包摘要R47-UI16七阶段执行路径R47-UI17停止态能力防火墙R47-UI18独立读回与逆序回滚R47-UI19R48 一次性窗口准入R47-UI20零生产副作用账本
生产副作用 020 个具名控制面 · 10 项来源包 · 6 席授权 · 7 阶段 Runbook
下一刀仍需外部回执

D05-R48 外部授权回执导入、专用主机锁定与一次性执行窗口准入

先取得六席范围绑定回执并选择满足十二项检查的专用 staging 主机;随后才能导入回执、锁定目标和创建一次性执行窗口。