| content |
{"Commits":[{"Sha1":"45a6bd523 {"Commits":[{"Sha1":"45a6bd523973c97e88f31faa12604773150cec87","Message":"docs(发布): 当场记录 rc.4 列车——三包已发,tag 这趟补上,并写清验证的真实范围\n\nrc.4 三包(contracts / governance / client-fact)2026-09-18 经本地旁路发出,源 557a95c,\nRegistry 实查确认在架、三包均 registry integrity verified。与前两趟不同,本次是当场记录。\n\n这趟补上了 CL-5 要求的 tag packages-v1.0.0-rc.4——rc.2 / rc.3 都漏了这一步,\nprovenance.tag 因此第一次不是 null。构建与发布在 .worktrees/rc4-release 的 detached\n干净检出里做,所以 worktreeDirty:false 是真的(主检出当时有并行会话在改 contracts)。\n\n记录里写清了两件容易被夸大的事:\n\n1. rc.4 远不止触发它的那两条 clients 规则。自 rc.3 源 036a308 起,contracts 147 文件 /\n 51 提交、governance 61 文件 / 48 提交随车发出,包含九域规则入参体检那一整轮。\n2. 发布前只跑了 check:fixtures(17 套件 394 例)与 check:module-imports(396 文件),\n 退出码均 0;**完整 pnpm check 是发布后补跑的**(真实退出码 0,check:evidence partial:\n 36 新鲜 / 5 过期,过期项均属其他任务 WIP)。按 G-12 边界,这些都不构成阶段门证据。\n\nCLAUDE.md 的 contracts 条目同步推到 rc.4,并顺手修掉一处自相矛盾:该条前半句还写着\nrc.2 源 eb3cf2c,而后半句已说明按 provenance 订正为 6d3900a。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T16:17:05-07:00"},{"Sha1":"df90a19192218b2b65c7cde7326968ac81d03de0","Message":"chore(reports): check:module-imports 回绑 @ 557a95c\n\n在 .worktrees/rc4-release 的干净检出(detached 557a95c = packages-v1.0.0-rc.4)里重跑,\n绑 557a95c / worktreeDirty=false,扫描 396 个源文件、0 处违规。\n\n同批在该检出里跑的 check:fixtures 也是 0 失败(17 套件 394 例),但那份报告**没有提交**:\nfixtures 的证据作用域含 contracts,而并行会话正在高频改 contracts,绑 557a95c 的快照\n落地即过期,回绑节奏交还给正在改那片的人。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T16:14:43-07:00"},{"Sha1":"0b3dab61a1072d682d5a921e00025f46431c95d3","Message":"test(contracts): decideProviderOutcome 在门禁上零覆盖——退避被供应商压短这条修过的规则,没人盯着它别被改回去\n\n前两轮收了入参硬化(c190a6a)与请求体检/出站 allowlist 的用例(d950aa2)。本轮按「公开方法 × 出口」\n重新盘了一遍,两类空白。两个规则文件零改动,只动夹具评估器、夹具与测试。\n\n1. decideProviderOutcome 在门禁上零覆盖。planner 四个公开方法(status / plan /\n decideProviderOutcome / refresh)里,夹具只有 plan 与 refresh 两条规则。既有的 provider 规则走的是\n 独立函数 classifyProviderOutcome——它只看状态码与次数,不认路由策略:退避基数 baseBackoffSeconds、\n 上界 maximumBackoffSeconds、Retry-After 的钳制全在 planner 方法里,夹具一条都看不到。\n 而那里恰好有一条修过的规则:Retry-After 可以把退避拉长到策略上界,但不能把批准过的退避拉短\n (原实现 min(maximumBackoff, retryAfter),供应商回一个 Retry-After: 0 即可令退避清零)。\n 规则改对了,门禁却看不见它有没有被改回去。\n\n 新增 route-outcome 规则,并把 RETRY 连同算出来的秒数一并返回(RETRY:\u003c秒\u003e)——否则夹具只能看见\n 「重试了」,看不见「退避是不是被压短了」。负向实测:把 N33 的声明由 RETRY:20 改成 RETRY:10,\n 门禁 exit 1 并点名该例,秒数确实被钉住。\n\n2. plan() 八条出口此前门禁上没走过:请求非对象、目的地不在册、effectId 非请求派生、尝试次数越界、\n 未授权重放、模板版本未批准、变量越出模板 allowlist、敏感载荷落在未批准敏感数据的模板上。\n 构造用例时注意 effectId = tenant:sourceEvent:destination:template:v\u003c版本\u003e 是派生值,改 templateVersion\n 必须同步改 effectId,否则先撞 WEBHOOK_EFFECT_ID_MISMATCH,测不到目标那条。\n\n一处预期被实测推翻,按实现订正:retryAfterSeconds 超出 [0, 3600] 不是「钳到上界」,而是整条回执判\nPROVIDER_OUTCOME_INVALID。两条边界各钉一例(3600 → RETRY:60;9999 → 拒)。\n\n覆盖:夹具 25 → 39 例(正 4 / 反 35);定向测试 28 → 30 例,补上唯一一条「门禁有、单测没有」的\nWEBHOOK_TEMPLATE_NOT_APPROVED 以及 Retry-After 取值域。前两轮断言一条未改。\n变异探针(39 例真实 payload × 14 种脏值)14560 个变异点、0 处抛异常。\n\n未做(越界):模板审批流、多渠道 Provider、签名防重放、渠道切换仍不在本仓,C12 按缺失模块完善清单\n仍是「裁决」;Catalog 登记未动(notification-webhook 仍 module_e2、code_truth 指向工单仓)。\n\n证据:pnpm --dir contracts build / typecheck 绿、check:generated 14 files / 12 schemas 无漂移、\nnode --test contracts/test/*.test.mjs 400/400、contract-notification-webhook 夹具 39/39 失败 0。\n本次不回绑任何 reports/。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T16:13:04-07:00"},{"Sha1":"0b30631d9c45ceff29558ddf821e6cb5a5c7cd00","Message":"docs(治理): 夹具覆盖度的算法写进 CLAUDE.md,并把探针从 /tmp 落进仓里\n\n今天九个契约包的门禁空白有一半是靠一个临时脚本找出来的,光看用例名一个也发现不了。方法写进文档\n而脚本留在 /tmp,下次没人跑得起来——所以一并落仓。\n\ngovernance/fixture-coverage.mjs(诊断,不是门禁:不写报告、不进 pnpm check):\n由 governance/fixtures/*.suite.json 驱动,新增套件自动纳入,不写死域名单。拿每个夹具用例的真实\npayload 逐个叶子字段换脏值,走门禁自己的 evaluateFixturePayload 入口,收集规则实际吐出的原因码,\n分三档——已钉(被某条用例的 reasons 声明过,守卫回退必红)/ 仅单测 / 都没有(守卫删掉任何一道都\n不会红)。--list 连「仅单测」一并列出,--json 出机器格式。\n\n三条读法都写进了脚本抬头与 CLAUDE.md:散文式校验消息不是稳定码,单列「非码」不计缺口;插值原因码\n词汇表无界,按前缀过滤;「仅单测」不等于缺陷——§5 迁入时的设计就是夹具只固定失败关闭一侧。\n\n落仓后第一次全量扫描立刻有新发现:九个契约包「都没有」全为 0(今天收口的结果),但运行时模块侧\n还有 4 条——module-permission 的 ACTION_REQUIRED / RESOURCE_REQUIRED / RESOURCE_ID_REQUIRED、\nmodule-audit 的 AUDIT_COMMIT_MODE_INVALID。已在 CLAUDE.md 记为尚未处理;那是 runtime/ 的纪律范围,\n本次不动。\n\n证据:在仅含本提交改动的导出树上跑通(模块未构建时按 unavailable 跳过,与 check:fixtures 同因)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T16:12:09-07:00"}],"HeadCommit":{"Sha1":"45a6bd523973c97e88f31faa12604773150cec87","Message":"docs(发布): 当场记录 rc.4 列车——三包已发,tag 这趟补上,并写清验证的真实范围\n\nrc.4 三包(contracts / governance / client-fact)2026-09-18 经本地旁路发出,源 557a95c,\nRegistry 实查确认在架、三包均 registry integrity verified。与前两趟不同,本次是当场记录。\n\n这趟补上了 CL-5 要求的 tag packages-v1.0.0-rc.4——rc.2 / rc.3 都漏了这一步,\nprovenance.tag 因此第一次不是 null。构建与发布在 .worktrees/rc4-release 的 detached\n干净检出里做,所以 worktreeDirty:false 是真的(主检出当时有并行会话在改 contracts)。\n\n记录里写清了两件容易被夸大的事:\n\n1. rc.4 远不止触发它的那两条 clients 规则。自 rc.3 源 036a308 起,contracts 147 文件 /\n 51 提交、governance 61 文件 / 48 提交随车发出,包含九域规则入参体检那一整轮。\n2. 发布前只跑了 check:fixtures(17 套件 394 例)与 check:module-imports(396 文件),\n 退出码均 0;**完整 pnpm check 是发布后补跑的**(真实退出码 0,check:evidence partial:\n 36 新鲜 / 5 过期,过期项均属其他任务 WIP)。按 G-12 边界,这些都不构成阶段门证据。\n\nCLAUDE.md 的 contracts 条目同步推到 rc.4,并顺手修掉一处自相矛盾:该条前半句还写着\nrc.2 源 eb3cf2c,而后半句已说明按 provenance 订正为 6d3900a。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T16:17:05-07:00"},"CompareURL":"luoanwu/enterprise-platform/compare/ec0f1c04d60b56c0fa19a2c06fc89e7a64b69c4d...45a6bd523973c97e88f31faa12604773150cec87","Len":4}... |