|
908
|
18
|
241
|
1
|
|
0
|
第三方库路径
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793871844
|
1793871850
|
1793871850
|
0
|
0
|
0
|
Edit
Delete
|
|
907
|
18
|
240
|
1
|
|
0
|
第三方库路径
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793871827
|
1793871831
|
1793871831
|
0
|
0
|
0
|
Edit
Delete
|
|
906
|
22
|
125
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793871801
|
1793871806
|
1793871806
|
0
|
0
|
0
|
Edit
Delete
|
|
905
|
22
|
124
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793871786
|
1793871793
|
1793871793
|
0
|
0
|
0
|
Edit
Delete
|
|
904
|
21
|
357
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793871761
|
1793871766
|
1793871766
|
0
|
0
|
0
|
Edit
Delete
|
|
903
|
21
|
356
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793871747
|
1793871752
|
1793871752
|
0
|
0
|
0
|
Edit
Delete
|
|
902
|
18
|
239
|
1
|
|
0
|
改用 Vue 开发代理,修复走马灯修改门店bug,美团直连移除红字备注
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864343
|
1793864354
|
1793864354
|
0
|
0
|
0
|
Edit
Delete
|
|
901
|
18
|
238
|
1
|
|
0
|
改用 Vue 开发代理,修复走马灯修改门店bug,美团直连移除红字备注
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864309
|
1793864322
|
1793864322
|
0
|
0
|
0
|
Edit
Delete
|
|
900
|
23
|
72
|
1
|
|
0
|
创建 Ahead_room_discontinue_rule_model.php
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864270
|
1793864280
|
1793864280
|
0
|
0
|
0
|
Edit
Delete
|
|
899
|
23
|
71
|
1
|
|
0
|
创建 Ahead_room_discontinue_rule_model.php
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864236
|
1793864246
|
1793864246
|
0
|
0
|
0
|
Edit
Delete
|
|
898
|
22
|
123
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864207
|
1793864212
|
1793864212
|
0
|
0
|
0
|
Edit
Delete
|
|
897
|
22
|
122
|
1
|
|
0
|
日志增加版本好
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864188
|
1793864193
|
1793864193
|
0
|
0
|
0
|
Edit
Delete
|
|
896
|
21
|
355
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793864000
|
1793864006
|
1793864006
|
0
|
0
|
0
|
Edit
Delete
|
|
895
|
21
|
354
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793863976
|
1793863983
|
1793863983
|
0
|
0
|
0
|
Edit
Delete
|
|
892
|
116
|
13
|
5
|
|
0
|
chore(reports): adopt Runtime static originals at chore(reports): adopt Runtime static originals at dc13b515 and clarify evidence snapshot...
|
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793674166
|
1793710134
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
894
|
144
|
2
|
1
|
|
0
|
0915 版本内容
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793695809
|
1793695849
|
1793695849
|
0
|
0
|
0
|
Edit
Delete
|
|
893
|
143
|
1
|
1
|
|
0
|
0915版本
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793695768
|
1793695782
|
1793695782
|
0
|
0
|
0
|
Edit
Delete
|
|
891
|
116
|
12
|
5
|
|
0
|
docs: archive IdentityWeb launcher preparation and docs: archive IdentityWeb launcher preparation and independent v2 evidence...
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793674146
|
1793674154
|
1793674154
|
0
|
0
|
0
|
Edit
Delete
|
|
890
|
116
|
11
|
5
|
|
0
|
feat(payment): add candidate provider port and det feat(payment): add candidate provider port and deterministic simulator; verify pure Node safety cases...
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793674092
|
1793674128
|
1793674128
|
0
|
0
|
0
|
Edit
Delete
|
|
889
|
144
|
1
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793673556
|
1793673561
|
1793673561
|
0
|
0
|
0
|
Edit
Delete
|
|
888
|
116
|
10
|
5
|
|
0
|
docs(credential): 补齐恢复与生产签收待签材料
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793617972
|
1793617980
|
1793617980
|
0
|
0
|
0
|
Edit
Delete
|
|
887
|
146
|
2
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793614942
|
1793614948
|
1793614948
|
0
|
0
|
0
|
Edit
Delete
|
|
886
|
116
|
9
|
5
|
|
0
|
docs(credential): 补齐M2真实请求键与双侧授权验收前置
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793610828
|
1793610838
|
1793610838
|
0
|
0
|
0
|
Edit
Delete
|
|
885
|
116
|
8
|
5
|
|
0
|
feat(notification): bind signing credentials to co feat(notification): bind signing credentials to controlled M2 access...
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793610788
|
1793610798
|
1793610798
|
0
|
0
|
0
|
Edit
Delete
|
|
884
|
116
|
7
|
5
|
|
0
|
docs(permission): preserve natural idle discard ev docs(permission): preserve natural idle discard evidence and incomplete recovery...
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793605980
|
1793605990
|
1793605990
|
0
|
0
|
0
|
Edit
Delete
|
|
883
|
116
|
6
|
5
|
|
0
|
fix(notification-client): bind delivery receipts a fix(notification-client): bind delivery receipts and prepare remaining stage inputs...
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793605952
|
1793605961
|
1793605961
|
0
|
0
|
0
|
Edit
Delete
|
|
881
|
116
|
5
|
5
|
|
0
|
ci(diagnostic): 只读核对现有runner的维护边界
|
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793581907
|
1793596652
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
882
|
22
|
121
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793588946
|
1793588953
|
1793588953
|
0
|
0
|
0
|
Edit
Delete
|
|
880
|
21
|
353
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793339813
|
1793339824
|
1793339824
|
0
|
0
|
0
|
Edit
Delete
|
|
879
|
22
|
120
|
1
|
|
0
|
11
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793337094
|
1793337099
|
1793337099
|
0
|
0
|
0
|
Edit
Delete
|
|
878
|
22
|
119
|
1
|
|
0
|
11
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793337069
|
1793337082
|
1793337082
|
0
|
0
|
0
|
Edit
Delete
|
|
877
|
18
|
237
|
1
|
|
0
|
php8.3修复
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793330989
|
1793330996
|
1793330996
|
0
|
0
|
0
|
Edit
Delete
|
|
876
|
18
|
236
|
1
|
|
0
|
php8.3修复
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793330970
|
1793330976
|
1793330976
|
0
|
0
|
0
|
Edit
Delete
|
|
875
|
21
|
352
|
1
|
|
0
|
h5项目验收工单
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793330953
|
1793330958
|
1793330958
|
0
|
0
|
0
|
Edit
Delete
|
|
874
|
21
|
351
|
1
|
|
0
|
h5项目验收工单
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793330937
|
1793330942
|
1793330942
|
0
|
0
|
0
|
Edit
Delete
|
|
873
|
23
|
70
|
1
|
|
0
|
1111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793330583
|
1793330587
|
1793330587
|
0
|
0
|
0
|
Edit
Delete
|
|
872
|
23
|
69
|
1
|
|
0
|
1111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793330567
|
1793330572
|
1793330572
|
0
|
0
|
0
|
Edit
Delete
|
|
871
|
83
|
18
|
5
|
|
0
|
feat(personnel): D-13 组织类型字段与宿主 Schema 受控通道(PKG-00 feat(personnel): D-13 组织类型字段与宿主 Schema 受控通道(PKG-006)...
|
> **叠在 #17 之上(#17 又叠在 #13 之上),请按 #13 → #17 → 本 > **叠在 #17 之上(#17 又叠在 #13 之上),请按 #13 → #17 → 本 PR 的顺序合入。** 本 PR 自身只有最后 2 个提交:`4fa64f1`(D-13)、`6912ab7`(报告回绑)。
## 背景
- F1 `OrganizationUnitMoved` 要求 `unit_type` 必填(CHG-061 Q5),而 HR 组织原本没有类型字段。
- 02 已于 10-27 定下词表(D73):采用 CHG-061 的三值,02 侧分别映射为 `BUSINESS_UNIT` / `DEPARTMENT` / `TEAM`。
- 加字段要改 D3 冻结的宿主 `schema.prisma`。用户 2026-10-28 裁定 D-13:开受控通道并实现。
## 内容(对接蓝图 §4.17)
- **D3 受控通道**(`scripts/lib/d3-protection.mjs`):`packageUpdates` 只多放行一个文件,即宿主 `apps/api-nestjs/prisma/schema.prisma`。既有迁移、`migration_lock.toml` 和已退役的 Fastify schema 仍不得登记;结构变更一律以新迁移追加。
- **字段**:组织新增可空的 `unitType`(`ORGANIZATION` / `DEPARTMENT` / `TEAM`)。迁移 `20261028090000_organization_unit_type` 只追加这一列;已有组织的值为 null,不做推断。
- **contracts**(台账 PKG-006):
- 创建时可选,缺省为 null;
- 编辑时省略即保留原值,显式传 null 则清除;
- 命令视图与组织摘要必带该字段;
- 双时间快照读取该字段,D-13 之前的快照读为 null。
- **服务**:创建和编辑写入该字段,仍沿用原有乐观锁和 outbox;当前读取与双时间读取两条路径都输出该字段。
- **Web**:组织增改表单新增「组织类型」,组织详情显示类型。
- **未做**:
- OS 产品副本还没有这一列,登记为 H29。0.19.6 尚未进入 OS main,0.19.7 现在注册不了,等它进入后再随产品版本补上。
- F1 本身:等 contracts 发版后,与 F2–F4 一起实现。
- 已有组织的类型补录:需要业务按实际情况登记。
## 验证(本地,报告绑定 `4fa64f1`、clean)
- `d3-protection` 27/27,新增 2 例;2 个变异探针(去掉放行、放宽到整个 prisma 目录)都判红。
- contracts 232/232,新增 5 例。
- 真实 DB 的 HTTP 测试 3/3,覆盖:带类型 / 不带类型创建;编辑时省略保留、修改、清除;词表外取值返回 400 且不落库;用 `knownAt` 能回看到旧类型。另有 3 个服务层变异探针都判红。
- `check:runtime` 482/482,`check:ui` 46/46(在原有组织增改场景里加入了类型选择和读回),用一次性 PostgreSQL / Redis 跑,跑完已删。
- 静态检查:D3 / schema / migrations / RLS / write-guard 等门禁全部通过;静态链在 O22 处如实停止,`check:governance` 只剩 O22。
- 远端 CI 见本页。
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793194416
|
1793194416
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
861
|
83
|
17
|
5
|
|
0
|
feat(contracts): P1 前置片——CHG-061 三条 HR 事实的载荷与信封 Sc feat(contracts): P1 前置片——CHG-061 三条 HR 事实的载荷与信封 Schema(PKG-005)...
|
> **叠在 #13 之上,请先合 #13。** 本分支已合入更新后的 #13(#13 已含 > **叠在 #13 之上,请先合 #13。** 本分支已合入更新后的 #13(#13 已含 main 上的 #16)。#13 合入后,这里的差异只剩 P1 前置片与报告回绑。
## 为什么重建(2026-10-28)
PR #16 已在 main 上以 PKG-004 落地 V-04(来源域按事实类型;注册表条目的 `source_domain` 须为字面量)。本 PR 原先也用 PKG-004 实现了另一版 V-04,与 #16 冲突。重建时:
- contracts 与台账取 main 版本;
- 去掉本分支自己的 `sourceDomain` 放宽;
- 改按 #16 的注册表类型重做,台账改为 **PKG-005**,蓝图记为 **§4.16**。
## 内容(对接蓝图 §4.16,P1 / H5)
- **contracts**(`packages/contracts/src/enterprise-fact.ts`,台账 PKG-005)
- 新增 `organizationCanonicalIdSchema`(`org_`)。
- 新增 `EmploymentStarted`、`EmploymentTerminated`、`OrganizationUnitStatusChanged` v1 的载荷 Schema,逐字段对应 04 `contracts/schemas/facts/*.v1.json`(CHG-061)。组织状态载荷另要求 `change_kind` 与 `state_after` 一致。
- 三份信封 Schema 保持 ZodObject,`source_domain` 为字面量(hr / organization),满足 #16 的注册表类型(typecheck 已证明),升 pin 后可以直接登记。
- `buildEnterpriseFactEnvelope` 在注册表 Schema 解析之后统一校验两条:载荷里的实体 ID 等于 `entity_id`;组织事实的 `valid_from` 等于 `effective_at`。校验失败抛 ZodError,Relay 记为 `FACT_SCHEMA_INVALID` 并进死信。这条同样约束已登记的 `EmploymentTransferred`;HR 写入时两者本来就相同。
- **刻意不做**:出站注册表、`facts.owns`、生效事务写 Intent。原因是 M6 只认 pinned `@juhai/contracts` 的 Catalog,而 Registry 上最新的 rc.7 只有 11 条事实。发版已交给单独的 04 会话推进,真实发布前须用户同意;HR 侧的请求草稿是 `docs/domain/request-draft-04-contracts-release-chg061-2026-10-28.md`。
- **F1 `OrganizationUnitMoved`**:组织类型词表已由 02 D73 定为 CHG-061 三值(`organization` / `department` / `team`)。HR 加这个字段要改 D3 冻结的宿主 Prisma 和产品迁移,已登记为待裁决 D-13(用户已同意开受控通道并实现,另起 PR)。
- **文档**:蓝图 §4.16、H5 / P1 行,矩阵 #19 按 02 D72 订正(Site / Space / SiteOperator 的现用写点改为 EES 物包),新增 D-13;同步更新 CLAUDE.md G23、CHG 草案和发版请求草稿。
## 验证(本地,报告绑定 `b8f85d3`、clean)
- contracts 227/227(enterprise-fact 24 例,其中新增 8 例)。
- 5 个变异探针各判红:去掉实体 ID 一致、去掉状态一致、去掉 `valid_from` 一致、封装不调用一致性校验、组织事实来源域改为 hr。
- `check:d3` 通过;去掉 PKG-005 后判红(6 项)。
- `check:app-manifest`、`check:contract-consumers`、`check:validation`、lint、typecheck 均通过。
- `check:runtime` 474/474、`check:ui` 46/46,用一次性 PostgreSQL / Redis 跑完已删。静态检查链如实停在 O22,`check:governance` 只剩 O22。
- 远端 CI 结果见本页。
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793153681
|
1793194416
|
0
|
0
|
1
|
0
|
Edit
Delete
|
|
856
|
83
|
13
|
5
|
|
0
|
docs(integration): 蓝图补服务级对接矩阵,按 04 CHG-061 订正镜像与 H docs(integration): 蓝图补服务级对接矩阵,按 04 CHG-061 订正镜像与 H1/H5/H21...
|
## 内容
- 对接蓝图新增 §2.5 服务级对接矩阵:HR 与 02/03/04 共 20 个对 ## 内容
- 对接蓝图新增 §2.5 服务级对接矩阵:HR 与 02/03/04 共 20 个对接点,HR 侧写到 file:line,并标明 dev 实际跑通过的只有 3 条:事实写入、Scope 来源、OS 装载产品包。
- 按 04 `e50aad416`(CHG-061)订正:
- 应用清单镜像已合到 0.19.6,工作区镜像剩 5 处差异(H1);
- 4 条 HR 事实已在 Catalog 登记为 draft,H5 的 Catalog 半边完成;
- Scope 改按 Catalog producer 接受 `juhai.hr` 组织事实,H21 部分关闭,剩载荷约束与投影器现场摄取。
- 新增缺口:
- H25:OS 清单契约仍强制双后端,HR 清单里的 Fastify 声明是占位,不能单方删除;
- H26:门店归属事实没有生产者;
- H27:IdP 令牌 `aud` 是生成的 UUID,不是 `juhai.hr`;
- H28:数字智能层自带一份 0.19.5 副本。
- §2.5 补本机现场读数(2026-10-28 00:35 UTC 前后):
- HR API 未运行;
- 04 runtime 开了事实受理但缺 `FACT_APPLICATION_BINDINGS_JSON`,IdP 签发的机器令牌会被拒;
- Scope 来源 65281 不可达;
- OS 0.19.6 分支只在本机、未推 Gitea。
- 已确认三项:
- client-fact rc.3 与 rc.8 摘要实现逐行相同(H7 只剩发布);
- EES 运行时以 `READ_ONLY_PROJECTION` 拒绝已撤回人域命令;
- Scope 证据 `owner: juhai.hr` 由 04 按 HR 签名组装。
- H22:本机开发基座容器已于 00:40 UTC 重建为只绑回环,数据卷沿用。
- **CI 修复**(`a174e46`):本 PR 首次运行 26581 停在「Build locked OS compatibility sources」,原因是兼容锁指向 D3 后的 OS `1b8ae0d7`,该步却仍写死 `--filter=api-fastify`。
- 现改为经 `scripts/lib/os-host-backends.mjs` 读锁定 OS 的 `backend-profile.json` 决定宿主范围;
- `check:docs-truth` 新增 `ci-os-host-backends` 断言防回潮,对旧工作流负向判红。
- 同步落地状态:CLAUDE.md G23 / G14、两份 CHG 草稿、人域对照表。
- 已合入 `main` `46da429`:CLAUDE.md 冲突以 main 为准,只叠加本分支的 H21 订正。
## 验证(本地,PR 头 `25aecd7`,报告绑定 `a174e46`、clean)
- 通过:`check:runtime` 462/462(地板 452)、`check:ui` 46/46。用的是一次性 PostgreSQL 16 / Redis 7,只绑回环,跑完已删。
- 静态链如实停在 O22(OS main 尚无 0.19.6)。其后 governance-docs、docs-truth、lint、typecheck 通过。`check:governance` 只剩 O22,`reportProvenanceViolations` 0。
- CI 构建步骤:本地覆盖 5 种情形(nestjs-production、D3 前双宿主、缺 profile、非法 profile、profile 与 Fastify 冲突),以及锁定 OS 快照上的 turbo dry-run。
- 远端 CI 见本页检查结果。
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793145750
|
1793194416
|
0
|
0
|
1
|
0
|
Edit
Delete
|
|
859
|
83
|
16
|
5
|
|
0
|
feat(contracts): 出站事实来源域按事实类型收紧(V-04,D-12 台账 PKG-0 feat(contracts): 出站事实来源域按事实类型收紧(V-04,D-12 台账 PKG-004)...
|
<!--
PR 治理模板。提交前请逐项确认,确保符合 docs/standards 下的 <!--
PR 治理模板。提交前请逐项确认,确保符合 docs/standards 下的工程规范。
CI 会执行:pnpm check(命名 + 单源漂移 + 治理棘轮 + lint + typecheck);
有测试 DB 的流水线另执行 DATABASE_URL=... pnpm check:runtime。
-->
## 变更内容
<!-- 简述这次改了什么、为什么改(聚焦 why) -->
-
## 涉及业务概念
<!-- 列出涉及的业务词典英文名,例如 store / order / verification。参见 docs/domain-glossary.md -->
-
## 检查清单
### 命名一致性
- [ ] 业务概念使用了词典中的标准英文名(未出现 shop/branch/seller/voucher/writeOff 等禁用词)
- [ ] 数据库 snake_case + 复数表名;API/JSON 字段 camelCase;类型 PascalCase;常量 SCREAMING_SNAKE_CASE
- [ ] `pnpm check:naming` 通过
- [ ] `pnpm check:schema` 通过,未新增第二份状态/契约真源
### API / 契约
- [ ] 不涉及 API 变更
- [ ] 新增/修改了 API,路由符合当前生命周期规范:既有 Personnel Core 保持 `/api/personnel/*`,HR v2 领域使用 `/api/v2/{domain}/*`,身份协议使用标准 OIDC 端点
- [ ] 已更新 `packages/contracts` 中的 Zod schema / DTO / 类型(前后端共用同一份)
- [ ] 无破坏前端兼容的字段删除/重命名(如有,已在描述中说明迁移方案)
### 数据库
- [ ] 不涉及数据库变更
- [ ] 新增/修改了表或字段,已通过 migration review(表名复数、字段 snake_case、外键 xxx_id、时间 _at、状态 status)
- [ ] 高增长表已考虑分区;涉及多租户的表带 tenant_id
- [ ] 写链显式带 tenant_id;跨租户读写按 404/隔离口径处理
### 数据库迁移(迁移即代码:版本/顺序/内容/环境/发布/回滚一致)
- [ ] 改 schema.prisma 的同时**已生成并提交 migration**(`pnpm db:migrate:dev --name <change>`),未只改 schema 不落迁移
- [ ] **未修改已发布过的历史 migration 文件**(内容一致:历史不可变,新变更走新迁移)
- [ ] `pnpm check:migrations` 通过(迁移历史在位 / 无未豁免高危 DDL / schema 表、enum、`@map` 列均已落迁移)
- [ ] 破坏性变更(删表/删列/改名/改类型/加 NOT NULL/加唯一约束)走 **expand→migrate→contract** 三阶段,不一次切
- [ ] 大表加索引用 `CREATE INDEX CONCURRENTLY`;大批量回填走 BullMQ 分批任务,不塞进 migration
- [ ] 高危但确需的 DDL 已加 `-- migration-allow:<原因>` 留痕,并在下方回滚方案说明
- [ ] 非开发环境只用 `migrate deploy`(禁止 `db push` / 线上手动 ALTER);发布前 `pnpm db:migrate:status` 无 drift
### 实时 / 队列
- [ ] 不涉及
- [ ] 关键业务事件进入 BullMQ 或持久化事件表(未仅依赖 Redis Pub/Sub)
- [ ] 写库事件与真实写操作在同一 tx 写入 outbox,未在 commit 后旁路 publish
- [ ] 实时通道选型符合规范(订单/看板/通知用 SSE;设备在线/包间控制/IM 用 WebSocket)
### 质量与发布
- [ ] 通过 `pnpm lint` 与 `pnpm typecheck`
- [ ] 通过 `pnpm check:governance`,`reports/*.latest.json` 已刷新且无棘轮回退
- [ ] 涉及写链 / DB / 租户 / 状态机时,通过 `DATABASE_URL=... pnpm check:runtime`,`reports/runtime-acceptance.latest.json` 已刷新
- [ ] 涉及页面或浏览器行为时,`pnpm check:ui` 与 `pnpm check:ui:fastify` 均通过,未只验证一个后端
- [ ] 已补充/更新必要的测试
- [ ] 不需要回滚方案
- [ ] 需要回滚方案,已在下方说明
## 回滚方案 / 其他说明
-
...
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793153388
|
1793191535
|
1793153395
|
0
|
0
|
0
|
Edit
Delete
|
|
870
|
116
|
4
|
5
|
|
0
|
docs(release): R1 运行器与分支保护变更规格(rc.8 合规发布前置)
|
## 内容
给现役 Gitea / runner 维护者的逐项变更规格,作为 `@juhai/ ## 内容
给现役 Gitea / runner 维护者的逐项变更规格,作为 `@juhai/*` 发布列车 `1.0.0-rc.8` 走合规通道(同源 main 合格 Platform CI → clean tag → `.gitea/workflows/publish-packages.yml`)的前置(R1)。
- 新增 `docs/R1运行器与分支保护变更规格-2026-10-28.md`:
1. Gitea 升到含上游 PR #37119(ActionRunAttempt)的正式版,`MAX_RERUN_ATTEMPTS ≥ 2`,升级前一致性备份与隔离恢复;
2. act_runner 升到下发真实 `GITHUB_RUN_ATTEMPT` 的版本,保持 `ubuntu-latest`、Docker、github.com 访问与 fork Secret 隔离;
3. main 保护 9 个字段逐一对应 `governance/lib/release-ci.mjs` 第 30–31 行;
4. 交付后验收顺序与 rc.8 发布步骤。
- `docs/正式发布材料待办-2026-10-10.md` 顶部加指针。
## 依据(2026-10-28 PDT 只读实测)
- main 最近 15 次 Platform run 全部 failure,均在第一步「Candidate tag」因 `GITHUB_RUN_ATTEMPT` 缺失失败关闭(例:run 26610 @ `485db734d`,`run_attempt=0`,`attempts/1` → 404);runner act_runner v0.2.13;版本 API 仅返回 `development`。
- `branch_protections` 为空列表。
## 影响提示
启用 main 保护后禁止直推(10-21 起 main 首父链 492 个提交中约 435 个为直推),所有会话须改走 PR,且每个 PR 要通过完整 Platform CI;规格要求先有一个 PR 全绿再落规则,避免锁死 main。
## 边界
只改文档;发布门不变,未恢复本地旁路(G-12),未打 tag、未写 Registry、未改服务。`pnpm check:doc-claims` 通过。
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793191041
|
1793191041
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
850
|
83
|
7
|
5
|
|
0
|
ci: per-run docker PostgreSQL/Redis for acceptance ci: per-run docker PostgreSQL/Redis for acceptance, with reports rebound to e8591c7...
|
Two commits:
- e8591c7 ci: the runtime job no l Two commits:
- e8591c7 ci: the runtime job no longer uses `services:` (never started on this host-mode runner; 127.0.0.1:5432 reached an unrelated PostgreSQL on the runner host in run 26519). scripts/ci-acceptance-services.sh fails without docker; otherwise it starts per-run PostgreSQL/Redis containers on docker-assigned high ports with a random masked password and removes them in an if: always() step. G14 updated.
- 8cf50a6 chore(reports): runtime, UI and static reports rerun on the clean final source e8591c7.
Local evidence (isolated containers, recreated database):
- check:runtime 452/452 (floor 452), frozen oracle 12, outbox 1 scenario / 0 duplicates, outage health 2.
- check:ui 46/46.
- pnpm check with DIGITAL_EMPLOYEE_OS_ROOT at e12d0f2: exit 0, provenance violations 0.
- Script checks: start/connect/stop with no leftovers, repeated stop, and failures for missing docker, a non-prefixed database name and an invalid run id.
Not yet verified: docker on the runner host and its ability to pull postgres:16 / redis:7 (override with CI_POSTGRES_IMAGE / CI_REDIS_IMAGE repository variables).
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1793102531
|
1793190011
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
869
|
21
|
350
|
1
|
|
0
|
有开启重置二维码的。
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793164924
|
1793164947
|
1793164947
|
0
|
0
|
0
|
Edit
Delete
|
|
868
|
22
|
118
|
1
|
|
0
|
11111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793164870
|
1793164877
|
1793164877
|
0
|
0
|
0
|
Edit
Delete
|
|
867
|
22
|
117
|
1
|
|
0
|
11111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793164848
|
1793164854
|
1793164854
|
0
|
0
|
0
|
Edit
Delete
|
|
866
|
22
|
116
|
1
|
|
0
|
需求 手动关房断电 16981
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793164487
|
1793164494
|
1793164494
|
0
|
0
|
0
|
Edit
Delete
|
|
865
|
18
|
235
|
1
|
|
0
|
需求 台球消费结束后断电 17058
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793164230
|
1793164245
|
1793164245
|
0
|
0
|
0
|
Edit
Delete
|
|
864
|
18
|
234
|
1
|
|
0
|
美团商品管理授权
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793163929
|
1793163948
|
1793163948
|
0
|
0
|
0
|
Edit
Delete
|
|
863
|
23
|
68
|
1
|
|
0
|
1111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1793154047
|
1793154053
|
1793154053
|
0
|
0
|
0
|
Edit
Delete
|