任务:提交共享、个人工作流与依据可见范围(决定 131 第三阶段)
依据:决定 131(所有者 2026-11-02,14 个待定问题全部按建议定下),设计页 knowledge-workflows.md“分阶段”第 3 项,以及“提交共享与写入团队”“版本与引用”“工作流(原任务包)”“权限与安全”各节。前提是第二阶段(kw-spaces.md)已经完成:空间、授权、统一条目与全文搜索都已就绪。
做法
- 工作树
circle-hub-share,分支kw-share-local,从第二阶段分支kw-spaces-local的头部fb89a3d开出;node_modules已链接,不要运行npm install;只在本机提交,Claude 审查并跑过相关检查后推送、开 PR,合并由所有者决定。 - 第二阶段仍在 Claude 审查中,审查修改会落在
kw-spaces-local上,届时把本分支变基过去。 - 所有者 2026-11-02 追加:所有账户(含管理员)都只用用户名和密码登录控制台,控制台不再接受令牌登录。这在 PR #124 上实现,变基后生效;测试中登录控制台一律用
testConsoleCredentials。 - 先在本页“实施方案”一节写出具体做法,然后直接动手,不必等确认。
- 规则、验证方式与可改范围同第二阶段任务页。新的记录类型、拒收码与界面用语按决定 131 写进合约并生成。
- 完成后在本页“做了的”“验证”写明,并在
docs/hub-r4-progress.md记为决定 134(提交共享与个人工作流的实施,依据决定 131)。
要做到的(验收标准)
- 提交共享(知识):
- 本人可以对一条“已核验”的个人条目发起提交共享,经 Circle 或控制台都可以。
- Hub 依次检查:依据都能解析;引文逐字一致;来源可以共享(个人凭据读取的来源拒收;上传文件在第五阶段的署名完成前一律拒收);与团队空间不重复(只与团队比对,不跨个人空间);凭据扫描(决定 60 R8)。
- 全部通过即合并为团队空间的一个新版本,记录提交人、时间与来源条目,不审核(R8);个人原条目保留。
- 未通过时条目留在个人空间,给出注册过的拒收码与中文原因。
- 撤回:
- 管理员可撤回任何团队条目;提交人可撤回自己提交到团队的条目。
- 撤回后读取方看到“已撤回”,以它为依据的条目与结果随之标出(沿用
grounds_withdrawn)。
- 依据可见范围:提交结果时,结果的每个依据都必须对结果的全部读者可读,即团队条目,或已授权给这些读者的个人条目;不满足时拒收,拒收说明里写明该怎么做(先提交共享或补授权)。
- 个人工作流与通用技能(Hub 侧):
- 成员可以把工作流或通用技能发布到自己的个人空间,沿用现有发布校验(结构、沙箱运行、引用)与凭据扫描。
- 个人空间先开放这两个种类;产品知识来源与业务系统接入只在团队空间。
- 本人可以把个人工作流或技能授权给指定成员或全体管理员使用,并可收回。
- 用个人工作流跑出的结果,只对发起人和被授权使用该工作流的人可见。
- 发布到团队:
- 个人工作流与通用技能可以发布到团队,沿用现有的“发布权”(权限,不是逐次审核)。
- 发布到团队后按使用范围分配,结果按使用范围共享。
- 控制台:
- 个人条目上加“提交共享”。
- 新增“我的提交共享”列表:状态为已合并或已拒收,附原因与拒收码。
- 团队条目上显示提交人和来源。
- 工作流页的“工作流”“通用技能”两栏各分个人与团队。
- 个人工作流详情里有授权管理和“发布到团队”。
- 测试:
- 覆盖提交共享的每一项检查(含凭据命中与重复)、合并后的版本历史、撤回的传播、依据可见范围的拒收。
- 覆盖个人工作流的授权与结果可见范围,以及没有发布权时发布到团队被拒。
不在本任务
Circle 本机知识库与双向同步(第四阶段);上传署名、原文归档、成员停用与删除、容量的收尾(第五阶段)。
实施方案
- 合约与兼容:按决定 131、134 将模型升为 20,复用已有个人/团队空间、授权对象与授权动作词表,增加“已合并/已拒收”的共享结果轴、共享申请/个人包发布与授权追加记录和拒收码。新字段为可选字段,旧团队包、运行、结果和旧引用保持可读;不改已应用迁移。生成合约与必需的四个技能协议镜像及补丁发布清单,技能业务代码不变,测试从
repositorySkillVersion取版本。 - 知识共享:知识服务新增本人共享、共享历史与团队条目归属读取 API。只受理本人当前已核验条目;按依据解析、逐字引文、来源资格、团队去重、凭据扫描的顺序重查,不信任旧的核验标记。个人凭据来源和上传文件均拒收;依据链递归检查并保留可追溯来源,不把个人读权隐式扩大给团队。通过后在团队空间锁与事务中追加团队条目、原文归属、版本及共享回执,保留个人原条目;拒收只写安全的元数据、注册代码和原因,不写来源原文或凭据,不比较其他个人空间。
- 撤回与结果依据:团队管理员可撤回任意团队条目,提交人可撤回自己的团队提交;撤回追加记录,不改旧条目与旧结果。知识树读取、条目详情和结果读取派生
grounds_withdrawn,递归发现撤回依据并限制循环/深度。结果受理前按其实际读者集合检查每个依据的读取权和底层来源;团队可见结果的个人依据须有覆盖全部读者的授权,否则给出先共享或补授权的拒收说明。读取时仍重查授权,结果记录本身保持原字节。 - 个人包与授权:注册表增加个人空间命名空间,清单内包 ID、版本和内容摘要保留原格式,查询、发布占用、权限记录和历史锁按空间限定;相同 ID 可在不同人的空间和团队空间独立存在。个人仅可发布工作流或通用技能,复用现有结构、引用、样例/沙箱和凭据检查;不要求团队发布权。授权由本人追加给指定成员/全体管理员并可收回,管理员没有个人包的默认使用权。个人运行冻结包的空间与摘要,只有发起人和当前获授权使用该工作流的人可读;个人技能和依赖解析同样限定调用者及冻结的空间,避免通过全局安装或裸摘要扩大权限。
- 发布到团队与接口:发布到团队重新检查现有发布权和既有发布校验,生成团队发布记录并沿用团队分配规则,不把原个人运行改为团队运行。仍为六个 MCP 工具,在现有工具增加个人知识共享/撤回及必要的包空间参数,不新增第七个工具;接口与中文文本同步说明结果、拒收和读取出口。个人包在控制台上传/校验/发布,所有动作按本人或团队权限执行;具体返回形状在实现时与生成合约同步。
- 控制台与登录规则:个人条目增加提交共享,新增“我的提交共享”及代码/原因;团队条目显示提交人与原条目引用。工作流、通用技能各分个人/团队,个人详情管理使用授权和发布到团队。所有写入沿用同源、CSRF、密码会话及首次改密限制;新增测试通过
testConsoleCredentials登录。用户名加密码唯一登录规则随上游审查修正变基纳入,不重做或恢复令牌登录。 -
提交与验证:按合约/知识共享、个人包/运行权限、控制台/跨包验收、文档收尾分步签署本机提交。每步跑类型与受影响测试,合约变化跑
verify:contracts,文档变化跑test:docs;权限、运行、技能锁、旧记录回放及 MCP 变化跑相应验收,补充本阶段合成端到端场景。重套件逐个运行,跳过与未运行分别记录;不增加任意 SHA 校验或全量回归,不推送、不建 PR。第二阶段审查修正到达后按要求变基并只复查受影响路径。 - 第二轮变基:第二阶段第二轮修复已在
kw-spaces-pr的3b0c7b2a提交并先行报告;本分支已承接六笔修复及原模型 19,第三阶段顺延模型 20,四个通用技能镜像/补丁清单相应顺延。保留事务后拒收审计、按空间队列、当前版本累计索引与部分范围搜索警告;完整读者规则覆盖启动后元数据、自动结果重查、直接记录与记录输入,不保留第二阶段临时个人输入禁令。 - 决定 135 的三项后端规则:从本人当前个人条目的
replaces链定位本人此前的团队提交,只取代该链对应的本人团队条目,并登记前后关系;团队重复检查排除即将取代的那一条,其他人的条目照常去重。共享载荷可带团队目录,缺省沿用个人路径,普通目录按需建立,拒收与回执记录目标路径。记录页统一过滤个人知识/包授权:本人及被授权成员可见,全体管理员授权对管理员可见;管理员还可见全部共享回执,不借记录查看成员间授权。只做必需表单字段/记录显示,不开始kw-console.md的页面重做。 - 专项回归与收尾:明确测试管理员、被分享者通过
rec:<被拒提交>和记录输入均不能读出复制的私有引文;本人仍可核对收到的原文。核对先前验收日志:49 通过、1 失败(场景 33 的旧“不可读原文”夹具现已被显式授予团队读权),本场景显式保留管理员原文权限,关闭新增夹具的团队原文授权作拒读对照,不删除断言或放宽原文权限。每项先测试再实现、类型与受影响检查通过后提交,随后运行受影响验收并单列跳过。
发现
- 第二阶段八项安全修复已在
kw-spaces-local完成并先行报告,现已变基到1b14f5e。本阶段保留其来源优先级、读取档位、索引去重/上限、系统署名及历史/统计权限修正,模型随本阶段升为 20;临时个人依据拒收由全部实际读者规则替代,不恢复全空间文本候选。 - 所有者随后否定当前个人/团队知识库展示,原话“个人和团队不应该设计成这样”;Claude 2026-11-02 转达:知识库与工作流的页面另行调研、设计。本阶段继续后端、合约与验收;新增页面只保留必要功能,不打磨布局,不移除“知识入库流程”卡片。阶段结束先报告,不开始后续阶段。
做了的
-
本轮 CI 与安全复核:普通本人上传的逐运行声明、管理员本人上传的团队导入声明与缺失同形规则已落实;撤销了扩大合成夹具 ACL 的绕行。安全附页高 1/高 2/中 2 的个人能力限制、高 3 的受理原始提交、中 1 的团队解析器、低 1 的受众限定撤回提示、低 2 的目标目录扫描均有回归和本机提交。当前模型 22,四个通用技能仅同步协议镜像与补丁清单(HTML/思维导图 1.0.9,XML/工作簿 1.0.10)。做法、初次失败与复查见末尾各节;本轮完整验证按协调者的明确要求运行。
-
第三阶段收尾:已承接第二阶段
kw-spaces-pr的8e513d2e,决定 135 的三条后端要求与最小页面已实现;提交共享、个人工作流/技能、全部实际读者、被拒原始参数及冻结采集身份均有定向回归。临时防护文件保持删除,缺省知识端口由完整实现保护。仍只作本机提交,未推送、未建 PR;第四/第五阶段及页面重做不在本阶段启动。 -
合约与知识共享:模型 20、五种追加记录及注册拒收码;按顺序复核来源/引文/来源资格、只对团队去重、完整原文凭据扫描、自动合并与本人历史。提交人可撤回自己的团队副本,团队管理员可撤回任意条目;读取派生撤回依据,旧条目不改。四个技能只同步协议镜像和发布清单(HTML/思维导图 1.0.7,XML/工作簿 1.0.8),未改业务代码。
-
个人发布与技能:成员无需团队发布权即可发布个人工作流/通用技能;同号命名空间独立,授权本人管理,管理员无默认使用权。文件、版本与依赖锁按个人空间限定;当前授权收回后不能继续使用冻结技能。发布到团队重新走原发布权与校验,新团队运行按分配共享,旧个人运行不扩大读权。
- 运行与接口:全部实际读者逐条复核依据及底层原文,含自动事实结果、缓存回执、引用的旧结果与记录输入;补授权后原样重交可恢复,收回后不再回显结果或把结果复制成新输入。来源读取故障保留为 Hub 未完成核验,不计模型修复轮。撤回标记在读取时派生,旧结果不改。
- 最小控制台:个人条目提交共享、本人回执列表、团队提交人与来源、个人包上传/校验/发布、本人使用授权和发布到团队;沿用密码会话、首次改密、同源与 CSRF。空间进入详情、搜索与任务查询,个人包不混入团队命令和分配。保留“知识入库流程”,未改样式或打磨布局。
- 合成验收不再把全部目录原文导入团队以绕开权限。本人普通上传绑定输入即向该次运行的实际读者声明,不新增全局读权;个人空间原文和个人凭据来源仍受独立限制。团队去重包括撤回历史,并发共享只生成一份团队条目。
验证
以下保留初次阶段及各次变基的历史验证。CI 与安全修正的结果以末尾最新复查为准;本轮完整工作流/引擎与完整验收由 Claude 明确要求,不沿用初次阶段的通过或未运行状态。
-
本轮最新结果:完整工作流/引擎 2761 项通过;完整验收首跑 220/222,通过修正的两个旧夹具文件另跑 9 项通过;补充组修正后 236 项通过,
ownership配置现有 PG 18 工具后另跑 3 项通过;技能版本收尾 238 项通过。类型、151 文件合约核对及文档 289 项通过。各轮及命令详见末尾“本轮最终验证与收尾”,不合并重叠计数或把首跑失败记为通过。 -
初次阶段收尾记录:受影响验收 15 文件 55 项通过,0 失败、0 跳过;缺省端口修正后 36 项定向复查通过。相关包首轮 655 项中 654 通过,1 个残留版本断言修正后该文件 8 项通过;所有权真实平台整组缺 PG 18 客户端而跳过。类型与 151 文件生成核对通过,文档 288 项通过。分组有重叠,不合计为总数;本轮 CI/安全修正的完整复查另记在末尾,不沿用这些旧计数。
-
合约/知识步骤:
npm run gen:contracts(151 个文件一致)、npm run verify:contracts、npm run typecheck通过;node --test --test-concurrency=1 contracts/src/{sharing,model-w04-w10-v07,vocab-axes,spaces,tools,tool-shapes,run-history}.test.ts hub/knowledge/{sharing,spaces,spaces-review}.test.ts,72 项通过,0 失败、0 跳过。 -
个人包步骤:
npm run typecheck通过;node --test --test-concurrency=1 hub/runs/packs/{personal,ports,registry}.test.ts hub/refs/skills-personal.test.ts tests/acceptance/47-knowledge-sharing.test.ts,45 项通过,0 失败、0 跳过。另一次技能/查询/原始记录读取复查组 32 项通过,0 跳过(与前组有重复,不累加)。 - 运行/控制台步骤:类型检查通过;新增场景
47-knowledge-sharing.test.ts最终 7 项通过(0 失败、0 跳过),覆盖 MCP 共享/拒收与撤回、个人结果全部读者授权、旧记录输入隔离、控制台发布与授权/发布权、冻结个人技能收回、个人事实结果与管理员请求隔离。同内容团队/个人包的作者、请求与回答不混用。 - 引擎及接口定向组首轮为 240 项(237 通过、3 失败、0 跳过)。发现并修正:复核夹具只给了任务权而没有原文权;前驱断言应分别检查只读任务授权与原文读权;判据替换中的私有复核链接是安全元数据,不能当成正文读取授权。后续定向复查覆盖这些路径;新增元数据边界用例与前驱组最终 15 项通过,0 失败、0 跳过。中间夹具取到了无主张的空要求项,修正夹具后重跑,没有删测试。
- 缓存读取次数断言改为核对重试序列及不增加验证动作,同时允许读取时重查授权;来源故障继续严格限定三次。共享控制台夹具显式给原文读权。旧共享数据验收中的上传原文先拒收,补原文授权后原样调用才成功;既有幂等、别名、重启、并发及共享结果场景 13/15/17/19/30 的复查组 13 项通过,0 跳过。
npm run test:docs:287 项通过,0 失败、0 跳过。文档检查首次因索引中仍有已删除的临时防护文件而失败;显式暂存该删除后重跑通过,没有放宽文档检查。- Claude 2026-11-02 补充:第二阶段已变基主线并以
kw-spaces-pr提交草稿 PR #128,9716a3b修正生成轴值、索引锁命名空间、运行表权限列及迁移列表测试。第三阶段完成代码步骤后按指定方式变基到该分支,不重复修正第二阶段的四处代码;变基后增加运行表权限、锁命名空间与轴值规则检查,并复查受影响验收。 - 未运行:全量单元/验收回归、Linux 隔离作业、完整备份/恢复/部署套件、
verify:references/test:references、本阶段页面布局/截图检查。未改来源归档、隔离或部署工具;页面布局检查按所有者最新范围留给重新设计任务。没有新增任意 SHA 数据验证,没有推送或创建 PR。运行表权限文件中是否因缺少 PG 18 客户端跳过,在变基后的实际结果中另列,不计为通过。
变基后的收尾检查
已按协调者指定执行 git rebase --onto kw-spaces-pr 1b14f5ed,无冲突,继承 9716a3b7 的四处 CI 修复。本阶段的个人发布、授权与共享复用 RecordStore.lock,没有新增 advisory SQL、表或迁移;个人发布页面的授权动作使用生成的 isKnowledgeGrantAction。
定向包命令为 node --test --test-concurrency=1,文件清单如下(分组之间有重复,不累计次数):
hub/knowledge/{sharing,operation-records-upgrade}.test.tshub/runs/engine/{grounds,start,start-result,submit,queries,request-readers,requests,predecessor-default,criterion-privacy,criterion-review,exact-retry,scope-retry}.test.tshub/runs/packs/{personal,registry}.test.ts、hub/refs/skills-personal.test.tshub/server/{docs,mcp,text,readers-sharing,console-sharing}.test.tshub/platform/ownership.test.ts、hub/records/{lock-namespaces,password}.test.ts、packs/workflow/case-review/packs.test.ts
受影响的验收命令为 node --test --test-concurrency=1,文件为 tests/acceptance/{06-user-without-pack,11-no-judgment,12-console-security,13-idempotence,14-knowledge-sync,15-aliasing-end-to-end,16-agile-mindmap-review,17-hub-restart,19-concurrency,21-model-violations,30-shared-results,33-r5-t1t3-knowledge-qa,39-r5-t9-2-skill-packs,46-knowledge-spaces,47-knowledge-sharing}.test.ts。
变基后包检查结果:npm run typecheck、npm run verify:contracts(151 个文件)通过;上述 26 个文件的组为 276 项叶测试,275 通过、1 失败。失败为 pages.ts 的撤回视图用 Pick 直接列出两个轴值;改为从生成的 ValidityStatus 取 Extract 子集后,node --test --test-concurrency=1 packs/workflow/case-review/packs.test.ts hub/server/console-page.test.ts 28 项通过,0 失败、0 跳过,类型再次通过。没有调整扫描器或豁免规则,其余运行逻辑未改。
跳过单列:hub/platform/ownership.test.ts 的 the real records schema in a platform cluster 整组因本机没有 PG 18 的 pg_dump、pg_restore 跳过;其中运行角色迁移/不可改写、备份恢复后权限、应用角色名配置三项没有执行,不计为通过。该跳过是 suite,Node 的叶测试汇总虽为 skipped 0,仍须与上述整组跳过一起阅读。锁命名空间、密码迁移及冻结升级回放已实际执行并通过。
第二轮安全复核的衔接(Claude 2026-11-02)
协调者追加优先级:先完成当前第三阶段步骤并提交,再到 kw-spaces-pr 修复第二阶段第二轮审查的第 1、2、3、5、6 项及验收 14 的间歇失败;第二阶段提交后先报告,再变基回来继续。本阶段当前类型/生成轴子集修正已检查通过并保存为本机提交。
第二轮第 4 项归本阶段:被拒提交先存档,其中复制的私有引文不能通过 rec:<提交> 披露给管理员或被分享者。返回本阶段后核对直接记录读取与记录输入两条路径,并补被拒原始参数的明确回归测试;依据与原文权限不满足时,仍为缺失与无权同形。当前规则已隐藏部分被拒回执,不将其当作该专项检查已经完成。
切换优先级时,变基后的验收组中 06/11/12/13/14/15/16/17/19 已完整通过,21 仍在运行,其余等待。暂不把这个整组计为通过;返回第三阶段时核对最终日志及未执行项。此次验证没有扩大到全量回归。
所有者补充(决定 135,2026-11-02)
以下三项并入本阶段的后端与最小页面,页面的完整重做见 kw-console.md:
- 再次提交取代旧条目:本人修改个人条目后再次提交共享,新的团队条目取代本人先前由同一个人条目提交的团队条目,旧条目显示“被取代”,记录两者关系。只取代本人由该条目提交的团队条目,不影响他人的团队条目。“与团队条目不重复”检查不把将被取代的那一条算作重复。
- 提交时可选团队目录:提交共享时可以指定团队目录,默认与个人目录同名;目录不存在时按默认路径新建。拒收与回执都写明实际写入位置。
- 管理员在“记录”页的可见范围:管理员只看到授权给全体管理员的授权记录和全部提交共享记录;成员之间的授权记录只有授权人和被授权人可见。
第二轮修复后的变基
第二阶段第二轮已先行报告并承接到 kw-spaces-pr 的 3b0c7b2a。本分支之前的共同基点实际为 9716a3b7,因此从该点重放第三阶段七笔提交,没有重放旧第二阶段;协调者 c9a9947d 的决定 135 与新任务页保留。模型 20 与相应四个技能清单完成再生成,第二轮累计索引、配置、拒收审计及按空间队列均保留。
npm run typecheck、npm run verify:contracts(151 文件)通过;node --test --test-concurrency=1 hub/runs/engine/production-guard.test.ts tests/acceptance/46-knowledge-spaces.test.ts 9 项通过,0 失败、0 跳过。阶段性输入拒收回归已改为完整规则:判断运行可使用本人的个人输入,管理员查询和直接 rec: 不可见其标签;自动事实结果仍按全部实际读者拒收,拒收不留运行;独立普通原文不受相同私有副本影响。维护重查使用同样完整规则。
此前 15 文件验收组实际为 50 项、49 通过、1 失败,不计整组通过。失败为场景 33 仍把被新增夹具显式授予团队的原文当成不可读;该知识问答对照明确关闭团队原文授权,保留“可读产品目录不自动授原文字节”的原有断言。单跑 tests/acceptance/33-r5-t1t3-knowledge-qa.test.ts 1 项通过,0 失败、0 跳过;未删除或放宽拒读断言。后续收尾仍跑受影响验收组。
决定 135 的共享修订与团队目录
实现第 1、2 条:沿本人的个人 replaces 链查找本人同源团队提交,核对 shared_from 与作者;成功才在新版本中标出被取代并登记前后关系,其他人的团队条目照常去重且不修改。已撤回前件继续保持撤回,防止抹去既有撤回依据标记,同时记录修订关系。team_path 可选,默认个人路径;回执 target_path 兼容旧记录缺省值,拒收也写明目标,拒收不建目录。最小页面只补目标输入、回执列和正确的团队链接;未开始完整页面重做。
新增回归先复现原功能不接受目标目录、回执无目标的问题;修订状态误用的非合约代码也被测试拦住,已改用生成状态 superseded。完整读者与索引规则没有放宽。核对旧团队引用显示被取代、本人旧个人条目保留、他人团队条目不变、重复与保留目录拒收、默认/显式目标和拒收不建目录;原文及旧记录不改。
决定 135 第 1、2 项验证:npm run typecheck、npm run verify:contracts 通过;node --test --test-concurrency=1 contracts/src/sharing.test.ts hub/knowledge/sharing.test.ts hub/knowledge/spaces-review.test.ts 17 项通过,0 失败、0 跳过。新增 MCP 与密码会话表单的目标目录/修订,以及被拒原始引文读取回归后,场景 47 的 9 项通过,0 失败、0 跳过;集成回归随下一步提交保留。未增加全量回归或数据 SHA 校验。
决定 135 的记录页与拒收原始参数回归
第 3 条增加最小的个人知识/个人工作流授权记录与共享回执表:普通成员只查询本人发出/收到的索引,管理员只查询全体管理员授权索引;每条再核对正文受众,不能把派生索引当作披露依据。个人包新增同阶段的授权人索引,无新迁移。成员只见本人的共享回执,管理员见全部安全回执;原文及原始授权记录的读取口仍不由列表放开。分页按已授权来源独立保留游标,成员、时间过滤不会扩大范围。
新增场景 47 首先复现记录页没有授权历史;实现后覆盖本人、接收人、无关成员、管理员、成员过滤与伪造成员过滤、错误受众索引和时间过滤。另明确完成第二轮第 4 项专项:团队运行本身对管理员及被分享者可读,但带私有依据的被拒原始提交 rec: 与记录输入都同不存在的记录同形;本人仍可读取保留的原始引文。该专项确认现有完整读者包装生效,没有放宽原始记录访问或删除原始参数。
记录页及专项验证:npm run typecheck、npm run verify:contracts 通过;node --test --test-concurrency=1 tests/acceptance/47-knowledge-sharing.test.ts hub/server/console-search.test.ts hub/runs/packs/personal.test.ts hub/server/readers-sharing.test.ts 23 项通过,0 失败、0 跳过。含被拒原始提交的本人/管理员/被分享者三方直接读取与记录输入、目标目录与修订的 MCP/密码表单、命名授权与全体管理员授权、无关成员、伪造筛选及错误索引受众、时间过滤。第二阶段 CI 又发现平台未转发两个新索引限额变量,协调者已在 kw-spaces-pr 的 6cbd17ca 修复;本步骤保存后再变基纳入,并追加平台环境变量检查。
冻结采集身份的补充安全回归
补充回归实际复现:甲的个人文件被绑定进团队判断运行,乙导入同字节副本并授权给甲和全体管理员后,读取运行可能借用副本权限显示甲原采集的私有文件名。已改为按运行冻结的采集记录核对,每份同字节输入都要有权;个人包文件的补充读取也匹配实际采集,不借相同字节的其他文件名。新启动绑定可按本人已获的空间授权读原采集,仍保存精确的采集摘要;撤销后重新检查,独立普通原文不受私有副本影响。没有改记录字节、原文 ACL 或采用新的按字节全局拒读规则。
npm run typecheck 及 node --test --test-concurrency=1 tests/acceptance/47-knowledge-sharing.test.ts hub/runs/engine/production-guard.test.ts hub/refs/skills-personal.test.ts 14 项通过,0 失败、0 跳过。包含可读副本/不可读原采集、可读输入放前面的双采集旧运行、原采集授权后的绑定成功与再次撤销,以及既有个人技能锁与生产重查。首次正向夹具沿用了前例已撤回的工作流授权,补齐显式工作流授权后通过,未放宽服务权限。hub/platform/environment.test.ts 5 项通过,已变基纳入协调者 6cbd17ca 的限额环境变量转发修正;以后新增配置变量时定向检查一并包含该文件。
第二轮变基后的相关包检查命令为 npm run typecheck、npm run verify:contracts,以及 node --test --test-concurrency=1:contracts/src/**/*.test.ts;hub/knowledge/{sharing,spaces,spaces-review,operation-records-upgrade}.test.ts;hub/runs/engine/{grounds,start,start-result,production-guard,submit,queries,request-readers,requests,predecessor-default,criterion-privacy,criterion-review,exact-retry,scope-retry}.test.ts;hub/runs/packs/{personal,registry}.test.ts;hub/refs/skills-personal.test.ts;hub/server/{docs,mcp,text,readers-sharing,console-sharing}.test.ts;hub/platform/{ownership,environment}.test.ts、hub/records/{lock-namespaces,password}.test.ts、packs/workflow/case-review/packs.test.ts。
该组首跑 655 个叶测试,654 通过、1 失败:模型升到 20 后 vocab-axes 留下一处 MODEL_VERSION 仍断言 19。已同步正确版本,单独 node --test --test-concurrency=1 contracts/src/vocab-axes.test.ts 8 项通过,0 失败、0 跳过;其余 654 项首轮通过,没有重跑或扩大无关测试。类型及 151 文件生成核对通过。ownership 的真实平台整组仍因缺少 PG 18 的 pg_dump/pg_restore 跳过,不受叶测试 skipped=0 误导,不能算其运行角色备份恢复路径已验证。
缺省知识端口与验收收尾
受影响验收命令按上列 15 个场景串行执行,最终 55 项通过,0 失败、0 跳过,约 467 秒;包含场景 14、21 的违规分流、33 的原文对照以及场景 46/47 全部新增授权与采集身份回归,没有全量回归。
协调者在第二阶段 8e513d2e 修正临时防护不容忍缺少知识端口的问题。第三阶段已删除临时防护,原有 hub/refs/diagnostics.test.ts 6 项已通过;新增来源不存在、合法绑定、直接记录拒读/空撤回标记三个边界又复现了缺省端口访问错误。已在输入的补充空间读取、可选喂入与完整读者包装加缺省保护,保留原有解析错误与不可用拒收;不为缺失服务造内容或成功结果。
修正后 npm run typecheck、npm run verify:contracts 通过;node --test --test-concurrency=1 hub/refs/diagnostics.test.ts hub/runs/engine/grounds.test.ts hub/runs/engine/production-guard.test.ts hub/platform/environment.test.ts tests/acceptance/46-knowledge-spaces.test.ts tests/acceptance/47-knowledge-sharing.test.ts 36 项通过,0 失败、0 跳过。既覆盖缺省端口,也再次覆盖完整装配下的空间、共享、拒收参数与采集身份。新增配置变量时须定向跑平台 environment.test.ts,输入绑定改动须跑 diagnostics.test.ts。
最后变基与本机提交
已再次变基到协调者的 8e513d2e,纳入 6cbd17ca 的平台转发变量清单。唯一冲突是第二阶段修改、第三阶段删除的 personal-grounds.ts,按完整读者规则保留删除;缺省访问已在完整实现中保护。变基前后最终文件树相同,没有重放已合入的第二阶段工作。
第三阶段本机步骤(最终变基后的提交):
b4f59bae:共享及命名空间合约、知识共享。2dfb6f92:个人发布、命名空间和技能锁。98eec94e:完整读者规则、MCP 与最小页面。4c20f959:实现说明与验证记录。7c94c7ea:生成轴子集及优先级切换保存。ea2c672a:第二轮修复衔接与知识问答夹具修正。69d69653:同源修订取代与团队目录。bad7149f:记录页可见范围、拒收原始参数及跨包回归。d8f7d511:冻结采集身份与已授权输入。3529e90e:缺省知识端口边界与回归。
协调者的任务衔接与决定 135 提交均保留。未执行全量回归、来源归档检查、Linux 隔离作业、备份恢复、部署或真实业务系统检查;它们不算通过。hub/platform/ownership.test.ts 的 PG 18 客户端前置缺失仍单列跳过,可用 CIRCLE_HUB_LIBPQ_BIN 指定匹配客户端后补跑。当前阶段完成先报告,随后只按新任务页进入页面与记忆方案,记忆协议须先交协调者审查。
全量 CI 回归与修正方向(Claude 2026-11-02,草稿 PR #129)
全量 CI 在 301337ea 上大面积失败,约 60 个测试,原因都是新的结果依据规则拒收了原本应受理的结果(RESULT_GROUNDS_UNREADABLE),或在团队导入时拒收上传(“上传署名和个人凭据原文尚不能作为团队导入的依据”)。受影响的范围几乎覆盖全部生产工作流:
packs/workflow/{case-compile,defect-to-case,story-traceability,template-gap,traceability};hub/runs/engine/{bound-retry,contributions,document-retention,fragment-retry,interrupted,quote-fragments,runtime-admission};hub/server/submit-load;- 验收
28-device-run、28-jev-skill。
完整名单见 PR #129 的检查结果;剩余作业跑完后可能还有更多。定向测试没有覆盖到这些,其中不少要在沙箱或 Linux 隔离作业里才会运行。
修正方向(Claude 作为协调者,依据所有者对决定 131 的答复“上传经署名(声明)后可作为依据”作出,不是所有者原话):
- 上传者把自己的上传绑定为某次运行的输入,即视为对该次运行的声明。该运行的实际读者(发起人、管理员、运行的被分享者、个人工作流的被授权者)可以在该运行的上下文中把它当作依据读取。声明写入记录,并在运行信息中可见(例如“绑定为输入即视为声明:本次运行的读者可读取该原文”)。声明只对该次运行有效,不扩大到全局。
- 个人空间的原文(个人知识导入)不适用第 1 项,仍须先提交共享或授权。个人凭据来源仍不可作依据。
- 管理员以自己的上传做团队导入时,导入动作即为声明,
28-jev-skill这类流程应恢复通过。成员不能替别人的上传声明。 - Hub 生成的文件、团队知识树、经团队连接读取的原文,照旧对运行读者可读。
- 修正后,上述测试都应恢复为原有的期望结果。不要通过放宽期望来让测试通过;只有确属新规则应当拒收的情形,才改测试,并在本页逐条说明理由。
验证要求:除定向测试外,跑完全部 packs/workflow/** 和 hub/runs/engine/** 的测试,以及验收 28 的两个场景,确认没有被跳过的项。macOS 上依赖沙箱的测试要实际运行,跳过的逐条列出。修好后提交到本分支(kw-share-local),由 Claude 推送 PR #129 并看全量 CI。安全审查的结果出来后另行补到本页。
CI 补充清单及本次处理(Claude 2026-11-02)
协调者随后补充:case-review-verify 的 end-to-end 13 项、predecessor-view 1 项;验收 26-review-report 5 项、41-r5-t1t3-acceptance 3 项、T8-1-second-product 1 项、21-model-violations 1 项;console-places、assemble/testing-real、engine/system-input 各 1 项。这些均列入本次验证;按最新要求额外运行完整 npm run test:acceptance,运行器固定并发 1。这是协调者明确要求的扩大验证,不是自行增加的全量回归。
控制台四步已本机提交,第五步未提交内容已暂存,工作树干净后切回本任务;不推送或创建 PR。先修复并报告第三阶段,再变基控制台分支继续。
约束补充由 Claude 答复:读取权限与片段解析分开;提交者无权读取的来源和不存在来源必须同形,由原有精确核验记录反驳或未知。只有提交者有权而其他结果读者无权时,才用 RESULT_GROUNDS_UNREADABLE。静态核验时观察到的不可读取引用记录为本次检查对象的元数据,不能借此读取其正文;已受理结果保留此观察,之后收回真实依据的授权仍然生效。客户端原始提交不能自行声明这项豁免。
复现:macOS 沙箱的 quote-fragments 初跑 15 项,8 通过、7 失败、0 跳过。先落实普通上传的逐运行声明后,正常引文恢复,但无效片段被重复解析、来源字节被重复读取,仍改变既有静态结果与重试计数。改为按精确采集与当前受众检查读取权限,保留原有核验和失败档位;定向组 artifacts、bound-retry、quote-fragments 随后 37 项通过、0 失败、0 跳过,后续新增的无权限/不存在对照另行验证。
移除此前为结果读者扩大合成夹具原文 ACL、把全部目录原文导入团队的绕行:查询、共享控制台与公共验收床恢复原来的权限数据;场景 33 不再需要关闭该绕行。生产重查和共享结果场景 30 中新增的“本人普通上传先拒收、再全局补授权”断言恢复为运行声明即可受理,并保留全局原文不可读的断言。个人空间原文、个人凭据来源和他人上传仍保留拒收测试,没有降低这些边界的预期。
装配 smoke 测试还保留“列表仅有一个工作流”的旧断言;第三阶段已把显式安装的通用技能列进相同工具。该处改为精确断言一个工作流和四个已安装的技能,版本通过 repositorySkillVersion 读取;仍检查完整清单,不放宽为只检查某一个存在。
对现有测试的其余调整逐项说明:
exact-retry恢复缓存回执不重读字节的原断言;字节 I/O 随后故障也不重新核验或消耗修复轮次。权限收回仍通过元数据独立重查。fragment-retry的缺失、保留与故障预期不变。criterion-review和predecessor-default恢复共享运行可读的原预期;把旧运行的上传另绑到新运行时仍要求独立授权,不能继承旧声明。queries中管理员以 Alice 的上传启动给 Bob 可读的另一次运行,确属不能替他人声明,增加拒收断言;原有未来运行、生产策略和分页断言以管理员自己的上传验证,未扩大 ACL。system-input原来直接套用合约示例,包含从未入库的来源和引文。共享者按新规则不能读这些引用;交付身份夹具改为无输入、无引文的空生产结果,继续检查系统交付与同字节用户提交不混用。私有来源的拒读另有专门回归。template-gap/engine按第三阶段的实际清单精确检查一个工作流和已安装的思维导图通用技能,并保留未分配者不可用工作流的断言;技能版本使用 repositorySkillVersion。console-places只同步第三阶段已存在的个人/团队 section id,保留页面内容、悬停和无越权条目的全部断言。
广范围首跑:全部 348 个工作流/运行引擎测试文件,2752 项,2708 通过、44 失败、0 跳过。随后修正产品根的元数据读权检查、尚未写入的生产检查记录,以及上述接口衔接,重跑失败文件和相关专项。完整验收按最新顺序留在 CI 修复与安全附页修复之后运行,不把首跑的失败算通过。
工作流交接另复查:冻结记录输入沿其实际输入继续核对,团队连接观察与 Hub 生成的记录副本只在这条冻结交接链生效,不能扩大到任意原文或另一份同字节私有采集。运行的投影字段可能保留来源自带的未核验链接,运行读权依据其已受理输入;原始提交的缺失链接只沿用对应 Hub 核验回执的不可读观察,不由客户端声明。case-compile 重组端到端原有的完整发布、独立裁定、追加重组及工作簿验证场景最终 1 项通过、0 跳过;中途三次记录交接失败及诊断复查不算通过。
CI 修复阶段复查:23 文件 170 项中 167 通过、3 失败;三项分别是旧 section id、重组交接和异步版本读取漏 await,均已修正。后续含两个场景 28 的 5 文件 38 项,37 通过、1 项重组仍失败,重组最终独立通过如上;其中 console-places、template-gap 以及场景 28 的 8 项均实际通过,0 跳过。typecheck、verify:contracts(151 文件)通过,模型版本定向测试 13 项通过,文档测试 289 项通过、0 跳过。分组有重叠,不累加为一次全绿;安全修复之后再完整运行要求的工作流/引擎组和验收集。
CI 修复提交前的定向收尾:node --test --test-concurrency=1 --test-reporter=tap hub/records/artifacts.test.ts hub/knowledge/spaces.test.ts hub/runs/engine/grounds.test.ts hub/runs/engine/bound-retry.test.ts hub/runs/engine/quote-fragments.test.ts hub/server/readers-sharing.test.ts hub/refs/diagnostics.test.ts,61 项通过、0 失败、0 跳过;包括另一成员私有来源与不存在 sha 的同形回归、精确采集隔离和缺省知识端口。类型检查再次通过。下一步处理安全附页,完整验证随后执行。
第三阶段安全附页:能力边界(高 1、高 2、中 2)
按附页的共同修正方向处理三项相同入口的问题,各项有独立回归。模型 22 先登记 PACK_PERSONAL_CAPABILITY_DENIED;个人发布及旧版本的启动均检查输入声明、租约上下文和效果行,个人通用技能内的方法同样检查。动态期望来源在路由前完整检查,投影不得索取租约;可直接读取的业务系统采集须先成为当前可读的空间知识,不能绕过声明限制。旧个人运行也不能直接解锁命名文档,管理员的个人运行同样拒收。团队发布、分配与租约能力不改。
协议镜像变化只同步四个通用技能的 functions/generated/protocol.ts 与 pack.json:HTML/思维导图 1.0.8,XML/工作簿 1.0.9,没有业务代码变化。授权来源是 Claude 转达的本次安全修正要求与既有协议镜像授权。
验证:类型及 151 文件合约核对通过;node --test --test-concurrency=1 --test-reporter=tap hub/runs/packs/personal.test.ts hub/runs/engine/personal-capabilities.test.ts hub/server/docs.test.ts 22 项通过、0 跳过。首轮三项及第二轮两项夹具错误(缺产品选择、无效运行号、缺期望来源 reason)均已修正,原攻击断言保留。版本断言与读取共享专项 16 项通过、0 跳过。readers-sharing 原来允许个人工作流直接绑定私有连接采集,按本次新规则改为明确拒收;其原有个人运行不向被分享者开放的断言,用普通本人上传继续验证。完整工作流/引擎及验收集留到附页其余修正之后。
第三阶段安全附页:受理后的原始提交(高 3)
已受理的原始提交也通过当前依据读权检查,不再只看不可变的受理动作。记录输入与直接读取使用同一检查;结果本身对受理及未受理的原始参数都重查,既有 Hub 不可读取观察继续作为诊断元数据,客户端不能自授豁免。收回依据授权后,原始提交、结果及新的记录输入同时隐藏;授回后同一不可变记录恢复可读。新增读者只有输入权限、没有结果依据权限时仍拒读,本人保留收到的原始记录。
node --test --test-concurrency=1 --test-reporter=tap tests/acceptance/47-knowledge-sharing.test.ts hub/server/readers-sharing.test.ts packs/workflow/case-compile/recompose/end-to-end.test.ts:15 项通过、0 失败、0 跳过。场景 47 在已有受理步骤直接验证收回、恢复、新增管理员读者、MCP 原始记录和新运行绑定,并核对无权限与缺失回应同形。重组交接仍实际通过。
提交前类型检查通过;hub/runs/engine/queries.test.ts 的 10 项通过、0 跳过,保留管理员对合法未受理结果的既有查看范围,没有把未受理的原始提交开放给其他账户。
第三阶段安全附页:团队解析器(中 1)
先在本轮未合并的模型 22 登记 TEAM_PARSER_REQUIRED,团队条目写入与提交共享只选择团队可用解析器,不能沿用个人运行锁或个人解析器授权。间接个人条目的底层引文也重查,不能包裹一层条目绕过;团队运行的历史个人技能锁同样拒收。协议镜像及补丁清单同步,仍不改技能业务代码。
定向命令:node –test –test-concurrency=1 –test-reporter=tap tests/acceptance/47-knowledge-sharing.test.ts hub/knowledge/sharing.test.ts hub/refs/skills-personal.test.ts hub/refs/resolve.test.ts;44 项通过、0 失败、0 跳过,类型通过。新场景实际发布会伪造引文的个人解析器,先证明个人核验确实使用了它,再验证直接共享、间接共享和获个人解析器授权的管理员团队写入均拒收。安装真正读取原文的团队解析器后,旧伪造引文返回逐字不符,正确引文可共享并由另一成员读取。首跑 22 项中 21 通过、1 项因夹具把 team 放进 session 参数而失败,修正参数后攻击断言保留并通过。
第三阶段安全附页:目标目录扫描(低 2)
对 team_path 使用目录写入相同的凭据扫描,并在所有回执中省略命中凭据的目标路径;即使前面的去重先拒收,也不落入审计。最终凭据步骤仍按原顺序拒收,不改变共享成功的检查顺序。
类型通过;node –test –test-concurrency=1 –test-reporter=tap hub/knowledge/sharing.test.ts:9 项通过、0 失败、0 跳过。回归检查团队根与条目不变,普通目录仍可成功共享,含凭据路径不出现在直接拒收、重复拒收或历史回执中。首跑新增夹具未初始化团队根,修正初始化后保留全部安全断言。
第三阶段安全附页:撤回提示的权限(低 1)
将完整的撤回链遍历留为私有方法;拒收只取布尔值,读取视图必须带当前读者。只有当前可读的上级引用进入 grounds_withdrawn,其余返回 grounds_withdrawn_hidden_count;运行回执对应字段为 withdrawn_grounds_hidden_count。知识节点、单引用、运行、结果、MCP 文本和控制台同时处理数量,旧记录不改写。模型 22、工具生成物与包说明同步,没有新状态轴。
类型及合约核对通过。知识/运行/场景 47 的定向组 36 项通过、0 失败、0 跳过;另一个页面及文字组首跑 75 项中 74 通过、1 项因新夹具读取了 content 外的字段而失败,修正断言路径后场景 47 在上述组通过,原有 74 项首轮通过。新回归覆盖只授权叶条目、隐藏祖先路径与摘要、只报数量、祖先授权及收回、树读取与 MCP 节点/单引用,明确授权者仍得到原引用。完整验证随后执行。
最终组发现的缓存权限断言与受理边界
最终完整工作流/引擎组发现 contributions 的旧断言要求管理员失去产品权限后仍返回完整缓存回执。这属于新规则必须拒收的情形,改为 SOURCE_UNAVAILABLE:提交者自身已不可读时继续与缺失同形,不使用会暗示其他读者权限的 RESULT_GROUNDS_UNREADABLE。仍检查原回执正文不变、授回后原样重放、验证结果与效果没有重复写入;没有删除旧的产品权限断言。
同时保留成功引文与已绑定输入的权限事实:最终受理时失去读权必须中止,不能把曾核对成功的内容改写成缺失元数据而扩大读者。新增纯规则回归使用已形成成功引文、当前不可读的合成状态,验证这条边界与缓存同形拒收;grounds.test.ts 5 项通过、0 跳过,类型通过。完整组尚未结束,按最新代码继续复查,不把首轮失败计为通过。
本轮最终验证与收尾
以下均为本机 macOS、Node 24、临时 PostgreSQL、临时钥匙库与合成数据;沙箱相关测试实际使用 macOS 隔离,没有用跳过代替运行。完整工作流/运行引擎和完整验收是 Claude 在本轮明确要求的验证范围。
- 工作流与运行引擎:
node --test --test-concurrency=1 --test-reporter=tap,文件集为packs/workflow/**/*.test.ts与hub/runs/engine/**/*.test.ts的全部 349 个文件。最终重新运行 2761 项,2761 通过、0 失败、0 跳过;包含全部生产工作流、case-review-verify 的端到端/前件读取、系统输入和本次安全回归。前一完整轮 2759 项中 2758 通过、1 项 contributions 缓存旧断言失败,修正及新增回归见上一节,不计为整轮通过。 - 完整验收:未设置
ACCEPTANCE_SHARD,运行npm run test:acceptance,运行器并发 1;222 项中 220 通过、2 失败、0 跳过。包含协调者追加的场景 21、26、两个 28、41、T8-1,以及空间/共享场景 46、47,沙箱场景实际运行。失败均为以下旧夹具,修正后用node --test --test-concurrency=1 --test-reporter=tap tests/acceptance/01-normal-review.test.ts tests/acceptance/45-r5-capture-boundary.test.ts复查,9 项通过、0 失败、0 跳过。没有再次运行整套验收,不把首跑记成一次全绿。- 场景 01 原断言列表只有工作流;第三阶段同时列出显式安装的四个通用技能。改为完整清单精确相等,分别检查工作流和技能,技能版本从
repositorySkillVersion读取,仍排除产品/系统包,没有放宽为包含检查。 - 场景 45 的历史运行夹具原本没有上传声明,却复制了新运行的
upload_declaration,其无精确采集的变体因而不能通过记录结构检查。历史夹具去掉该新字段,继续检查有/无精确采集两种旧运行均不得把client_captured变成声明来源;拒收预期不变。
- 场景 01 原断言列表只有工作流;第三阶段同时列出显式安装的四个通用技能。改为完整清单精确相等,分别检查工作流和技能,技能版本从
- 输入绑定的补充检查首轮 236 项中 233 通过、3 失败;均为
hub/refs/diagnostics.test.ts使用不含包元数据的旧低层夹具时发生 TypeError。能力检查容忍这个缺省值;真实start_run仍先取得并校验包,个人包的发布/启动限制不变。随后node --test --test-concurrency=1 --test-reporter=tap hub/refs/diagnostics.test.ts hub/runs/engine/personal-capabilities.test.ts hub/runs/engine/quote-fragments.test.ts31 项通过、0 失败、0 跳过,包括另一成员私有来源与不存在 sha 的同形回归。
安全附页的七项均已处理:高 1/高 2/中 2 共用个人能力入口检查且各有独立回归,高 3 复查受理原始提交,中 1 限定团队解析器,低 1 按当前读者过滤撤回引用,低 2 扫描目标目录并省略敏感回执路径。没有降低私有来源、个人凭据或他人上传的拒收规则,没有增加原文全局授权。
补充组在缺省元数据兼容修正后重新运行,236 项通过、0 失败。命令为 node --test --test-concurrency=1 --test-reporter=tap,文件集如下(与首跑相同):
hub/server/{assemble/testing-real,console-places,submit-load,readers-sharing,console-sharing,docs,text}.test.tshub/records/{artifacts,lock-namespaces,password}.test.tshub/knowledge/{spaces,spaces-review,sharing}.test.ts、hub/runs/packs/personal.test.tshub/refs/{skills-personal,resolve,diagnostics}.test.tshub/platform/{ownership,environment}.test.tscontracts/src/{tool-shapes,published,codes,sharing,model-w04-w10-v07,vocab-axes}.test.ts
跳过及补跑单列:hub/platform/ownership.test.ts 的真实平台整组首轮未配置可用的 PostgreSQL 18 工具目录而跳过,不能因 Node 叶测试 skipped=0 计为通过。Claude 随后指出本机已有工具,设置 CIRCLE_HUB_LIBPQ_BIN 指向该目录后,运行 node --test --test-concurrency=1 --test-reporter=tap hub/platform/ownership.test.ts,3 项通过、0 失败、0 跳过:运行角色迁移及不可改写、备份恢复后的归属与权限、部署角色命名均实际执行。其余上述组及验收无跳过,本轮要求范围没有遗留跳过。未另跑全量 test:unit、Linux 隔离、除 ownership 所含场景之外的完整备份/恢复/部署套件或 verify:references/test:references;没有改来源归档工具或批准导入,不扩大这些检查范围。
本轮本机签署提交:
| 提交 | 内容 |
|---|---|
5ec2aa27 |
逐运行上传声明、精确核验结果和缺失同形;恢复夹具原权限 |
4bd39057 |
高 1、高 2、中 2:个人工作流/技能的能力限制与独立回归 |
9043ee58 |
高 3:受理原始提交的当前依据读权 |
246820a1 |
中 1:团队核验只使用团队解析器 |
dd41d560 |
低 2:目标目录扫描及安全回执 |
ebdf5f6f |
低 1:撤回引用按读者过滤、隐藏部分只给数量 |
f5b54737 |
缓存重放与并发收回时的提交者同形和成功引文边界 |
78bf91f4 |
低层输入兼容与两个旧验收夹具;原有安全断言保留 |
1eeb2c84 |
四个通用技能补升版本,修正第二次协议变更后的版本复用 |
只在 kw-share-local 提交,未推送、未创建 PR。控制台分支四步提交保留,第五步保存在专用暂存中,工作树干净;先报告本轮,再承接修正继续控制台任务。
文档检查首轮 289 项中 288 通过、1 失败:模型 22 的第二次协议变更更新了四个技能的镜像和文件清单,却漏升补丁版本,违反已提交版本不得换字节的规则。保持镜像及技能业务代码原样,将 HTML/思维导图升到 1.0.9、XML/工作簿升到 1.0.10;只改已获授权的四份 pack.json,不改版本检查或放宽断言。随后复查当前版本读取、发布/安装、个人解析器与相关沙箱验收,具体结果续记如下。
版本收尾复查:类型检查通过;node --test --test-concurrency=1 --test-reporter=tap 运行 hub/refs/{skills,skills-personal}.test.ts、hub/runs/packs/{registry,personal}.test.ts、packs/workflow/case-review/packs.test.ts、hub/server/assemble/testing-real.test.ts、packs/workflow/template-gap/engine.test.ts、tests/acceptance/{01-normal-review,28-device-run,28-jev-skill,47-knowledge-sharing}.test.ts 与 packs/skill/**/*.test.ts,238 项通过、0 失败、0 跳过。完整工作流/引擎轮之后只有低层兼容、旧夹具与技能版本清单收尾,分别执行上述受影响检查,没有重复运行整个工作流/引擎或完整验收集。
最后检查:npm run typecheck 通过;npm run verify:contracts 核对 151 个生成文件通过;技能版本修正提交后重新运行 npm run test:docs,289 项通过、0 失败、0 跳过,包含基于提交历史的版本不可复用检查。先前的文档检查失败仍按上文保留,不计为首轮通过。