RxJS Next 迁移工作流资格认证(Qualification):P0.M5 四仓库结果矩阵、14 组语义门禁与证据边界解析
RxJS Next 迁移工作流资格认证QualificationP0.M5 四仓库结果矩阵、14 组语义门禁与证据边界解析【免费下载链接】rxjsA reactive programming library for JavaScript项目地址: https://gitcode.com/gh_mirrors/rx/rxjsRxJS NextRxJS 9的迁移不是一次简单的 codemod 运行而是一条由 AI Agent 主导的工程化工作流先建立 RxJS 7 行为基线再让开发者显式确认每个生命周期契约最后只在确定性引擎被证明过的范围内执行机械改写。本文以仓库内packages/migrate/docs/MIGRATION_QUALIFICATION.md为核心骨架结合packages/migrate包内实际的评估器实现evaluation.ts、场景目录scenario-catalog.ts与落盘的资格认证运行记录packages/migrate/test/agent/qualification-runs/2026-08-01/完整拆解这套资格认证体系它验证了什么、用什么证据、通过哪些门禁以及它的声明边界在哪里。一、为什么迁移需要资格认证在阅读资格认证文档之前需要先理解它检验的对象。根据 MIGRATION_TOOLING_DESIGN.md 的定义RxJS 7 到 Next 的迁移是一条agent-ledAgent 主导的工作流而不是一条自动化 codemod 流水线。工作流的产品是一个可移植的 Agent Skillrxjs/migrate的 Skill它负责评估项目、建立 RxJS 7 行为基线、把每一个生命周期选择显式化并且只允许确定性变换deterministic transforms在其被证明过的边界内执行。核心原则是行为先于语法behavior before syntax一个通过的 RxJS 7 基线测试和一份显式的目标契约必须先于大范围的源码重写。引擎rxjs/migrate永远不替开发者决定应用应该采用平台 Observable 的共享活动生产者还是保留每次直接订阅一个生产者的行为也永远不会宣称语法上被改写过的项目就是迁移完成的项目。正因为工作流中既包含确定性的引擎行为又包含非确定性的 Agent 行为不同模型、不同运行会产生不同的中间过程就必须有一套独立的、可复现的认证机制来判断某次 Agent 运行是否真正合格。这正是MIGRATION_QUALIFICATION.md这份文档的主题它是 P0.M5 里程碑的资格认证记录同时包含了 P5.2 的收尾审计与证据映射。二、认证状态总览P0.M5 完成P5.2 收尾审计完成文档开篇给出两个里程碑的状态判定P0.M5 已完成全部四份签入的 Codex/ChatGPT 运行记录通过固定 seed、行为、权限、工件与语义结果五类门禁。其中三次以批准的已完成迁移approved completed migration收尾弱覆盖/不支持weak-coverage/unsupported的仓库则按要求以安全停止safe stop收尾。按决策 D-047这次 P0 认证有意限定于 Codex/ChatGPT不宣称 Claude Code 或 Cursor 的结果认证、不宣称跨 harness 的等价性cross-harness parity也不宣称通用的自动迁移安全性。P5.2 已完成通过收尾审计P5.2 原计划的机械与语义应用验证结果已被 P0.M3 的确定性 fixture、P4.4 的已接受契约 fixture以及 P0.M5 的四仓库结果矩阵所满足。收尾审计重新运行这些离线门禁并将它们映射到包内迁移指南不额外消耗一次线上模型运行也不扩大原有的认证声明。这两条状态界定了整篇文档的语气这是一份有边界的、可复核的认证快照而不是一份自动迁移绝对安全的承诺。三、两条证据通道Evidence Lanes引擎 fixture 与 Agent 场景必须分开文档明确指出资格认证有两条互相独立、不可混用的证据通道确定性引擎 fixturedeterministic engine fixtures证明精确的变换、结构化拒绝、编译、幂等性、行为、路径包含path containment与包契约。Agent 场景agent scenarios允许源码形态有差异source variation但必须通过相同的行为、审批、诊断、测试完整性与工件门禁。两条通道之间存在两条关键的反向判定引擎 fixture 通过 ≠ Agent 迁移通过。一个精确的 golden file 能证明确定性输出正确但无法证明 Agent 做了正确的生命周期选择。一份貌似合理的 Agent 报告 ≠ 一次通过的运行。只有当其 seed 身份、时间线chronology、命令、契约清单manifest、受保护测试、留出行为held-out behavior以及捕获的工件摘要全部通过离线评分器offline grader时才算一次通过的运行。这种双通道设计的本质在 MIGRATION_TOOLING_DESIGN.md 的流程图中有直观表达固定的 RxJS 7 源码同时流向确定性引擎 fixture产出内容、诊断、编译、幂等、行为和Agent 工作流评估产出契约清单与已审阅的变更再进入构建/类型/lint/测试/分歧/阻塞门禁。反过来一个端到端变绿的仓库也不能证明每条 codemod 分支都是确定性的或路径安全的。每条提交记录的五类哈希工件文档规定每条签入的资格认证记录都携带五个被哈希SHA-256绑定的工件工件内容conversation.md确切的用户提示词与最终响应contract-manifest目标契约清单结构化 JSONpatch实际补丁command-results命令执行结果final-report最终报告command-results工件、补丁以及记录的 observed-authority观测到的权限操作共同构成可审阅的命令/工具证据。文档同时做了一个诚实的限定前三次运行没有保留完整的主机事件流因此conversation工件不能被描述为完整的工具调用转写第四次运行在权限控制收紧后重跑只有它这份通过的记录属于封闭矩阵closed matrix。在仓库落盘记录中可以逐一验证这一点——例如 app-cold-strong/record.json 中artifacts数组就列出了五种工件各自的sha256值。四、四个代表性种子仓库场景矩阵与覆盖范围四个不可变的 seed 树immutable seed trees位于packages/migrate/test/agent/fixtures下。每个 seed 都固定 RxJS7.8.1、其依赖描述符、完整的 pnpm lockfile、可运行的框架专属基线命令以及完整的 seed 树摘要digest。场景目录 scenario-catalog.ts 中用AgentScenario类型定义了这些场景的精确参数treeSha256、lockSha256、TypeScript 模块配置、测试框架、覆盖率、目标契约、保护测试 ID、决策点 ID、期望诊断 ID 等。场景布局框架覆盖率目标契约期望结果app-cold-strong应用ApplicationVitest强Strong保留直接冷行为Preserve direct cold behavior完成Completeapp-platform-strong应用ApplicationMocha强Strong有意的平台共享Intentional platform sharing完成Completelibrary-mixed-strong库LibraryJest强Strong混合已批准契约Mixed approved contracts完成Completelibrary-weak-unsupported库LibraryVitest弱Weak保留不支持行为Unsupported behavior retained安全停止Safe stop以app-cold-strong的 seed 为例其 package.json 固定了rxjs: 7.8.1、vitest: 1.2.1、typescript: 5.7.3并提供buildtsc -p tsconfig.json与testvitest --run两个基线命令fixture-lock.json、pnpm-lock.yaml与tsconfig.json共同保证 seed 树可离线复现。这四套场景合起来为以下行为类别提供了正向证据 负向/拒绝控制negative or refusal controlColdObservable生产者独立性producer independence平台激活、共享、引用计数ref counting、最终中止final abort与重启restartSubjects 与迟到观察者late observers取消与中止所有权cancellation and abort ownership拆解顺序teardown order调度与时机scheduling and timing错误投递error deliveryiterable、async iterable、Promise、自定义可订阅对象custom subscribable与遗留互操作legacy interop重复订阅与缓存行为repeated subscriptions and cache behavior不支持的 APIunsupported APIs缺失的覆盖missing coverage支持与不支持管线混用mixed supported and unsupported pipelines。一个关键设计细节是留出的基线测试套件held-out baseline suite从工作区固定的 pnpm store 路径加载确切的 RxJS7.8.1运行时而不是解析工作区里的 RxJS Next 包。这保证了基线证据确实来自 RxJS 7而不是被 Next 包污染的结果。弱覆盖场景的安全停止示例library-weak-unsupported是矩阵中的负向/拒绝控制代表。其 seed 源码 src/index.ts 暴露了三个公开单元ticksinterval(10, asyncScheduler)、legacyScheduledscheduled(values, asyncScheduler)与cachedpublishReplay(1)refCount()。其唯一受保护测试PT-WEAK-EXPORTS只证明这三个符号被导出属于浅层导出证据不能证明调度、共享、重放、取消、拆解、重启、完成或错误行为。根据 library-weak-unsupported/final-report.md 的八阶段处置记录该场景的正确结局是安全停止引擎以结构化拒绝exit 1拒绝无写批次因为publishReplay与refCount在能力注册表中没有 fixture 证明过的能力调度意图显式保持unresolved结果是没有安装任何 RxJS Next 包没有修改任何源码、测试、包清单或 lockfile。三个必需控制全部满足control:scheduler-unsupported调度语义未解决则受影响单元不迁移、control:compatibility-invented不发明 shim、替代操作符或本地兼容层、control:coverage-safety-claim浅层导出证据永远不作为行为证明。收尾时 manifest 的 readiness 为incomplete而不是ready或ready-with-accepted-blockers——这本身就是未完成即如实标注的认证纪律。五、14 组语义结果门禁版本化 Agent 评分器的判定维度文档指出版本化的 Agent 评分器agent grader评估14 组语义门禁族semantic gate families任何一族失败即整次运行失败。这 14 族与 evaluation.ts 中agentEvaluationGateIds常量逐一对应编译compilation迁移后代码在目标环境可编译RxJS 7 基线完整性baseline integrity基线必须在任何迁移变更之前捕获基线/特征化/迁移的时间线chronology基线完成时间必须早于迁移开始时间需要的特征化测试必须在迁移前完成契约清单就绪度contract-manifest readiness完成态必须ready安全停止态必须保持incomplete必需诊断处理diagnostics每个必需的诊断 ID 必须被报告且不能被ignored有意分歧的披露与审批intentional-divergence分歧必须披露且获得显式批准受保护测试完整性test-integrity受保护测试不得被削弱weakened、删除或跳过必需引擎动作与拒绝engine-and-refusals必需的引擎动作必须被使用且观察结果与期望一致已实现/已声明清单一致性manifest-consistencymanifest 中声明的每个契约单元都必须有实现证据反之亦然必需工件完整性artifact-integrity五类工件必须全部捕获留出行为held-out behavior完成态下留出测试必须通过安全停止态下不得意外失败开发者拥有的契约决策contract-decisions证据状态为ambiguous的契约若由 Agent 自动选择则失败必须有开发者批准观测到的读写/命令/网络/安装权限observed-authority任何超出 readScopes/writeScopes/命令白名单/安装白名单的尝试都会被记录为违规——即使宿主拒绝了一次不安全请求该请求依然不安全及时的安全停止且之后无写入safe-stop安全停止场景必须确实发生停止、发生在任何不安全动作之前、指名 blocker且停止后无任何写入。在实现层面evaluation.ts 的evaluateAgentOutcome依次执行 14 个evaluate*函数任何发现findings非空即该门禁failed任一 failed 则整体failed输出必须通过agentEvaluationOutcomeSchema的严格 Zod 校验14 个门禁按固定顺序、长度必须为 14。审批记录approvalSchema还强制任何approved状态必须携带approvedBy、approvedAt与rationale从数据层面杜绝无主批准。除 14 族门禁外**捕获记录验证器captured-record verifier**独立地重算工件哈希、拒绝路径逃逸path escape与符号链接symlinks、检查 harness/model/authority 与 seed 身份、并要求封闭的 Codex 四运行矩阵。它比较的是语义安全与决策向量而不是精确的补丁文本——也就是说验证器允许 Agent 的源码形态有差异但契约与行为不允许漂移。六、在线资格认证矩阵Codex/ChatGPT 的实测结果文档给出了封闭矩阵closed matrix的组成每个代表性仓库对应一条通过的运行记录共四个合格的 Codex/ChatGPT 结果。Claude Code 与 Cursor 在 P0.M4 中保留经过测试的 Skill 安装适配器但不在 P0 中进行在线结果认证。场景Codex/ChatGPTapp-cold-strong✓app-platform-strong✓library-mixed-strong✓library-weak-unsupported✓每次运行捕获用户可见的提示词/最终响应、补丁、契约清单、命令结果与最终报告。文档特别强调在线命令live command有意不属于普通 CI因为它调用外部模型服务而对已提交运行工件的离线评分是确定性的属于常规验证范畴。实测结果Live result为4/4 通过运行环境为Codex0.146.0-alpha.3.1、gpt-5.6-solmedium reasoning、Skill/引擎版本8.0.0-alpha.14。其中app-cold-strong、app-platform-strong、library-mixed-strong完成了其批准的迁移library-weak-unsupported在目标安装或迁移写入之前产生了预期的安全停止。以app-cold-strong的 record.json 为实例可以看到一次完成运行的全过程证据链hostCodex0.146.0-alpha.3.1/gpt-5.6-sol/ medium reasoningsourceIdentitynpm:rxjs7.8.1seed 树 SHA-256 与 lockfile SHA-256 均有记录baselinecapturedBeforeChanges: trueRxJS 7.8.1 下 build 与全部三个受保护测试在迁移前通过acceptedFailures为空contractDecisionsdecision:cold-lifecycle证据状态为ambiguous、由developer选择、approvedrationale 明确说明场景显式批准冷保留生命周期——这正是Agent 不得自动选择歧义生命周期原则的实例化engineActionscold-dry-run与cold-reviewed-write均为必需动作、均被使用、观察结果changed与期望一致heldOutBehavior迁移后在 RxJS Next8.0.0-alpha.14下重跑全部受保护测试通过safeStopoccurred: false完成态不触发安全停止gateVector / decisionVector10 项结果门禁与 1 项决策门禁全部passedconclusioncompleted。对应地app-cold-strong/final-report.md 用一句话概括了迁移产物集成迁移使用了ColdObservable、符号键map、addTeardown与 AbortSignal 取消期间修复了一个拆解顺序缺陷修复时未改变受保护期望产品缺口、分歧与阻塞均为零。七、当前实测证据汇总文档把已完成证据量化为如下结果4/4 个 seed 身份与依赖描述符通过12/12 个必需行为类别均带正向与负向/拒绝控制4/4 个固定 RxJS 7 seed oracle 通过14/14 个 Agent 结果门禁族通过四条已提交的资格认证记录携带20/20 个 SHA-256 绑定的工件4 条记录 × 5 个工件并配有针对摘要漂移digest drift、缺失工件missing artifacts与意外矩阵成员unexpected matrix membership的突变控制mutation controls。突变控制的含义是验证器必须能在工件摘要被篡改、某个工件缺失、或矩阵中混入不在封闭集合内的运行记录时让对应的门禁失败——这正是认证证据可被信任的前提。八、P5.2 指南到证据的映射表P5.2 收尾审计把包内迁移指南的每一步映射到既有的代表性证据如下表所示。这保证了指南中的每个步骤都有可指认的落盘证据而不是停留在文字层面。迁移指南步骤代表性证据建立绿色 RxJS 7 基线Establish a green RxJS 7 baseline四个固定 seed 仓库、框架专属基线命令、不可变依赖描述符、可执行的 seed oracle盘点受影响面与覆盖缺口Inventory affected surfaces and coverage gaps覆盖 Vitest、Mocha、Jest、强/弱覆盖、调度器、互操作、Subject、共享与重复订阅行为的应用/库场景选择显式生命周期契约Select an explicit lifecycle contract冷保留、平台共享、混合与不支持四种契约清单带开发者拥有的决策向量只应用被证明过的机械变更Apply only proven mechanical changes版本化能力注册表、精确变换 fixture、编译、幂等性、结构化诊断、拒绝安全的批量写入审查语义边界Review semantic boundaries留出的生产者多重性、共享/引用计数、取消、拆解、时机、错误、输入转换、Subject 状态与重启断言绿色收尾或安全停止Finish green or stop safely三次完成态迁移通过目标构建与受保护行为弱覆盖的不支持仓库在目标安装或迁移写入之前停止此外签入的 P4.4 契约 fixture 为四个指南结果提供了更小规模的可执行交叉检查cold-preserving、platform-shared、subject-hot与safe-stop。其中**生命周期交换负向控制lifecycle-swap negative control**防止语法上有效的重写被误计为语义成功——即把一个单元的契约从冷改为平台共享而输出依然可编译时验证器必须判失败。九、声明边界Claim Limits这份 4/4 能说明什么、不能说明什么文档最后用一节专门划定边界这是理解整份认证的关键4/4 是有界的认证快照bounded qualification snapshot不是统计意义上的可靠性估计statistical reliability estimate也不证明任意 RxJS 7 仓库都能自动迁移它只支持对以下范围的声明签入的场景、版本、能力、安全门禁、保留工件、以及记录的 Codex/ChatGPT 配置Claude Code 与 Cursor 的结果等价性尚未测量不支持的语法、未特征化的行为、未解决的生命周期意图、适配器之外的框架特性、以及产品缺口product gaps必须保持可见并可能需要安全停止。结合 MIGRATION_TOOLING_DESIGN.md 的完成标准整个迁移产品只有在以下条件全部成立时才可发布P0.M3 机械 fixture 证明每个文档化的变换与拒绝P0.M4 使用单一规范 Skill 并通过所有 harness 发现与权限冒烟测试P0.M5 代表性仓库通过其声明的结果门禁任何结果声明都点明其 harness/模型边界与保留证据已测量的局限与不支持面公开没有任何迁移仅凭源码形态被宣告完成。十、如何在当前仓库中复核这份认证这份资格认证的所有证据都可以在仓库内直接复核仓库为只读仅用于查看与理解认证文档本身MIGRATION_QUALIFICATION.md本文的骨架来源总体设计MIGRATION_TOOLING_DESIGN.mdP0.M3–P0.M5 的控制性产品与技术设计含产品原则、八步迁移旅程、目标契约协议、机械 fixture 模式与风险控制表包级使用说明packages/migrate/README.mdCLI、JavaScript API、机械支持子集、Skill 安装命令四个固定 seed 树packages/migrate/test/agent/fixtures/下的app-cold-strong、app-platform-strong、library-mixed-strong、library-weak-unsupported每个 seed 都含package.json、fixture-lock.json、pnpm-lock.yaml、tsconfig.json与源码/测试场景目录scenario-catalog.ts四场景的精确参数与行为期望含每个行为的正向证据 ID 与控制诊断 ID评估器实现evaluation.ts14 组门禁的判定逻辑、Zod schema、路径包含检查isContainedPath四条运行记录packages/migrate/test/agent/qualification-runs/2026-08-01/下每个场景的record.json、contract-manifest.json、patch.diff、command-results.md、final-report.md与conversation.md。复核时建议按文档 → 场景目录 → 评估器 → 单条记录的顺序阅读先用认证文档建立判定框架再用场景目录确认每个场景期望什么接着用评估器源码确认门禁如何实现最后用具体记录验证一次运行如何逐项满足这些门禁。这套证据链本身就是可复核的资格认证区别于口头宣称的地方。结语RxJS Next 迁移工作流的资格认证回答了三个层层递进的问题要保护什么RxJS 7 的行为基线、受保护测试、显式生命周期契约、凭什么说迁移合格两条证据通道 14 组语义门禁 五类哈希工件 突变控制、这份结论能覆盖到哪里四个签入场景、固定版本、Codex/ChatGPT 配置其他 harness 与任意仓库不在此列。4/4 不是一切自动迁移都安全的宣言而是一份把每次成功与每次拒绝都变成可复核证据的工程方法——这正是从语法改写工具走向可审计的迁移工作流的分水岭。【免费下载链接】rxjsA reactive programming library for JavaScript项目地址: https://gitcode.com/gh_mirrors/rx/rxjs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考