ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Slate v2 无回归发布共识计划:贡献者概念面恢复与发布门禁重建指南

Slate v2 无回归发布共识计划:贡献者概念面恢复与发布门禁重建指南 Slate v2 无回归发布共识计划贡献者概念面恢复与发布门禁重建指南【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate本指南基于 plate 仓库中的共识计划文档 docs/plans/2026-04-07-slate-v2-release-ready-without-regression-consensus-plan.md 展开并以仓库内配套的发布审计计划、就绪判定、门禁计分板与示例对等矩阵等文档作为佐证。导读Slate v2 迁移在重写核心架构的过程中删除了大量旧版legacy证明面导致“剩余证明面”与“已删除旧面”之间存在严重的公信力缺口。本篇技术指南完整解析 plate 仓库为这次迁移制定的无回归发布共识计划如何在允许内部实现自由分叉的前提下逐项恢复面向贡献者的概念槽examples、tests、docs、conceptual slots、建立与文档声明一致的发布门禁并最终让Target B完全替换旧版 Slate 的判定在证据充足后才有资格翻绿。读完本文你将掌握贡献者面对等矩阵的构建方法、发布门禁的命令级设计、漂移登记drift register的字段规范以及用预检pre-mortem防止“假对等”与“架构回滚”的工程实践。一、问题框架证明面与删除面之间的公信力缺口计划开篇即点明核心矛盾slate-v2工作树当前的剩余证明面远小于已删除的旧版证明面。如果带着这个缺口直接发布会同时引发三类风险假Target B故事宣称已完全替换旧版实际证据不足静默收缩测试旧测试被删除却没有显式替代贡献者困惑删除的概念槽没有交代去向导致贡献者失去心智模型与仓库可读性。计划因此从一次深度访谈deep interview中固化出三条必须遵守的边界为面向贡献者的概念examples、tests、docs、conceptual slots保留与旧版最接近的架构形态允许内部实现分叉internal implementation divergence每一处被接受的漂移都必须显式记录。二、方案权衡RALPLAN-DR 摘要核心原则贡献者面对等优先于内部文件怀旧Contributor-facing parity beats internal file nostalgia任何面向贡献者的删除都不允许静默发生发布声明必须落后于门禁证据而不是引领证据Release claims must trail gated evidence性能表述在更广证据出现前必须逐车道lane-by-lane限定。决策驱动因素防止已发布/编辑器面向的故事出现行为与覆盖率回归保留贡献者心智模型与仓库可读性让发布门禁强制执行与文档声明完全相同的证明栈。三个候选方案对比方案做法优点缺点A字面恢复每个已删除旧文件逐文件还原旧版结构最保守、情感上最容易讲通强制架构回滚、复活死掉的内部接缝、浪费在用户明确允许分叉的私有结构上B恢复面向贡献者的概念槽允许内部实现分叉选定将每个删除的贡献者概念映射到最近的当前概念槽完全匹配访谈边界、保护 DX 与贡献者体验、内部保持 v2 现代架构、为大 PR 提供干净的漂移登记故事需要刻意做映射工作、比单纯收缩声明更费力C硬收缩声明只发布 Target A缩小发布范围最快达成诚实发布、实现工作量最小不满足“可发布替换”目标、贡献者概念损失悬而未决为什么选定方案 B方案 A 落败原因它优化的是“情绪对称性”而非“产品真相”。用户已明确允许内部实现分叉为了看起来像旧目录树而恢复死掉的私有架构是错误的目标。方案 C 落败原因它很诚实但放弃了既定目标。作为回退方案合格作为主计划不合格。三、ADR决策记录计划以标准 ADR 格式固化了决策决策将每个面向贡献者的已删除概念恢复或重新映射到最近的当前概念槽同时允许内部文件/模块架构自由分叉。驱动因素保持贡献者面向的概念连续性防止行为/测试覆盖率回归避免架构回滚让发布声明与强制执行证明保持一致。考虑过的替代方案字面一对一的全部恢复硬退回到仅 Target A。选定理由它是唯一与深度访谈边界完全匹配的方案。后果examples/tests/docs 工作升级为一级发布工作内部重写保持许可未来 PR 描述必须携带完整漂移登记Target B在恢复完成前保持红色No-Go。后续行动恢复/重映射贡献者概念槽 → 重建发布门禁 → 然后才重新评估Target B。四、八个实施单元详解Unit 1声明与真相源锁定Claim And Source-Of-Truth Lock目的在恢复进行期间保持实时判定诚实定义后续计划必须满足的当前贡献者概念清单。关键文件对应本仓库现有文档docs/slate-v2/overview.md迁移项目前门docs/slate-v2/release-readiness-decision.md就绪判定docs/slate-v2/replacement-gates-scoreboard.md门禁计分板docs/slate-v2/master-roadmap.md队列与路线图真相源决策在全部贡献者概念槽恢复或映射完成前Target B保持红色实时栈以回归审计计划为总追踪器。当前 tranche 状态android-tests、check-lists、code-highlighting、custom-placeholder、inlines、search-highlighting、slate-hyperscript七个概念已完成恢复仍待处理的是贡献者面 tranche 之后的更深层Target B阻塞项发布门禁对等release-gate parity、更广 oracle 深度、加宽的家庭证明深度、逐车道性能真相。测试场景文档必须点名同一批阻塞项不允许任何实时文档把已恢复的贡献者 tranche 描述为未解决。Unit 1.5先立发布门禁清单Release-Gate Manifest First目的在恢复工作全面铺开前先确立精确的证明检查清单。决策定义一份必需的证明车道proof lanes清单之后的每个恢复/重映射任务必须指向满足它的那条精确车道。配套文档 docs/plans/2026-04-07-slate-v2-full-release-regression-audit-plan.md 中给出了门禁清单的规范命令yarn test:replacement:gate:local及其成员详见下文第六节。测试场景存在唯一规范的 replacement-gate 检查清单每个已恢复或重映射的概念在该清单中有具名的证明负责人。Unit 2贡献者概念矩阵Contributor-Facing Concept Matrix目的把已删除的贡献者概念转成显式的恢复/重映射表。规范概念集七项android-testscheck-listscode-highlightingcustom-placeholderinlinessearch-highlightingslate-hyperscript决策每个概念必须且只能二选一——原地恢复或映射到最近的当前替代槽除非明确落在贡献者发布范围之外任何概念不得在没有具名替代槽的情况下被裁掉。测试场景每个概念有且只有一个精确决策不允许旧文档指向已删除概念却没有替代说明发布签字前必须对已删除概念名执行过期引用扫描stale-reference scan。Unit 3示例槽恢复Example-Slot Recovery目的把已删除的示例路由恢复或重映射到最近的当前概念槽。首批 tranche 已完成的概念决策旧概念恢复方式证明负责人android-tests恢复为当前 Android/IME 中枢槽android-tests.test.tscheck-lists恢复为当前交互式待办清单槽check-lists.test.tscode-highlighting恢复为当前可编辑令牌高亮槽code-highlighting.test.tscustom-placeholder恢复为当前占位符接缝槽placeholder.test.tsinlines恢复为当前内联家族槽inlines.test.tssearch-highlighting恢复为当前投影驱动高亮槽search-highlighting.test.ts概念槽规则最近的当前概念槽不必是唯一精确路由——如果一个小型、有文档的簇能更诚实地教授同一个贡献者概念也允许但它必须是一等公民且易于在 docs/examples/tests 中被找到。测试场景tsc:examples在选定示例集下通过示例索引/README 与最终概念矩阵一致每个已删除的旧示例概念都有可见的当前归宿。仓库佐证docs/slate-v2/ledgers/example-parity-matrix.md 记录了这条恢复的演进——当前 TS 示例面 61 个、旧版 TS 示例面 24 个并且确立了源码优先规则source-first rule同路径示例行必须先从源码 diff 分类浏览器证明只能确认源码接近的行无法拯救源码漂移的行。2026-04-15 的 git-diff 重基线把check-lists相似度0.861、custom-placeholder、embeds、inlines、richtext、search-highlighting等行升级为recovered把tables相似度0.036、code-highlighting0.062等仍判为open。Unit 4浏览器证明恢复Browser-Proof Recovery目的为已删除的贡献者示例槽恢复直接浏览器证明或映射到最近的等价当前车道。已删除车道集与首 tranche 后的映射决策已删除车道当前映射huge-document.test.ts映射到冻结的 huge-document 基准车道iframe.test.ts映射到替换兼容覆盖plaintext.test.ts映射到替换兼容覆盖read-only.test.ts映射到替换兼容覆盖select.test.ts映射到当前 anchor/rich-inline 生命周期与选区证明shadow-dom.test.ts映射到替换兼容覆盖决策面向贡献者的概念优先使用直接当前家族浏览器车道兼容行可以兜底但不应成为曾经存在直接车道的唯一幸存故事。测试场景每个已删除车道要么恢复、要么显式映射映射表反映在 docs/plan/PR 漂移登记中。Unit 5包证明恢复Package Proof Recovery目的在不盲目恢复死内部的前提下重建贡献者向的回归 oracle回归判官。需解决的已删除桶集packages/slate/test/interfaces/**packages/slate/test/transforms/**packages/slate/test/operations/**packages/slate/test/normalization/**packages/slate/test/utils/**packages/slate-react/test/**packages/slate-history/test/**决策恢复面向贡献者的测试概念而不是机械地恢复死实现细节如果旧桶无法一对一映射就在最近的当前接缝重建证明并记录漂移。重要张力逐文件复活1048个旧包测试不是目标目标是为公开行为重建精确的贡献者向证明概念。仓库佐证审计计划 docs/plans/2026-04-07-slate-v2-full-release-regression-audit-plan.md 用git diff --diff-filterD --name-only统计出1239 条已删除路径、0 条未匹配其中packages/slate/test/**删除 1048 个文件interfaces 576、transforms 408、operations 31、normalization 20、utils 11 加两个入口文件全部归入blocked-restore-or-cut桶slate-history的 17 个删除文件与slate-react的 8 个删除文件则分别由 docs/plans/2026-04-09-slate-v2-slate-history-deleted-test-family-closure.md 等专项关闭说明处理。当前snapshot-contract.ts已镜像77行旧 oracle覆盖move、Editor.before/after、select、setPoint、deselect、wrapNodes、unwrapNodes、liftNodes、delete但相对旧语料仍然很小。测试场景每个已删除桶有具名的当前证明负责人根/包测试命令覆盖重建后的证明面。Unit 6slate-hyperscript恢复目的在不把旧 fixture 测试装置塞回发布门槛的前提下保持slate-hyperscript作为贡献者面对等的一部分。已完成决策将slate-hyperscript恢复为活包面live package surface旧 fixture 语料留在发布门槛之外在根 Mocha 车道用当前 smoke 证明承载这个贡献者包槽。测试场景文档不得引用死包却没有当前替代故事包/概念槽在 README docs 测试装置指引中明确可见。在审计计划中slate-hyperscript全包删除39 条路径被标记为“已解决”恢复为活包槽、README/docs 引用已恢复、根 Mocha smoke 证明覆盖贡献者包槽。Unit 7发布门禁重建Release Gate Rebuild目的让发布命令强制执行与发布文档声明完全相同的证明栈。必需门禁6 项core/history 包证明slate-react运行时证明slate-dom证明贡献者向示例/浏览器证明替换兼容性证明与发布相关的类型/lint 证明。阻塞性发布门禁形态5 步yarn build:rollupyarn testyarn test:replacement:compat:local或 CI 安全等价物若旧仓库在 CI 中供应方式不同一个稳定的浏览器包装器用于加宽的当前家族套件当前经由yarn test:replacement:gate:local路由yarn lint:release性能策略替换基准车道不是每次提交阻塞发布门禁的成员它们作为夜间证据、发布候选证据、翻转Target B前的手动证据性能车道阻塞的是声明而不是例行发布门禁执行在测量仍窄或混杂时逐车道措辞是强制性的。当前状态按计划记录根命令图已在 slate-v2 的package.json中恢复prerelease现在经由加宽的替换门禁而非瘦身版yarn test完整性能基准被有意从阻塞门禁中延后因为它们比正确性/覆盖率车道更慢、噪声更大。测试场景存在一个顶层发布门禁命令其成员与发布文档完全一致基准车道被单独记录为非阻塞的声明证据。仓库佐证在本仓库中端态门禁命令为bun run test与bun run test:integration-local见 docs/slate-v2/replacement-gates-scoreboard.md 的命令现实一节另有十余条bun run bench:*基准车道如bench:core:normalization:compare:local、bench:react:rerender-breadth:local、bench:react:huge-document:legacy-compare:local——与计划“性能车道不阻塞例行门禁”的策略一致。Unit 8漂移登记与 PR 故事Drift Register And PR Story目的让每一处被接受的偏差在大 PR 中可读、可审。产物计划级漂移登记docs/slate-v2/references/pr-description.md最终 PR 描述章节。每条漂移的必填字段6 项旧概念legacy concept当前替代current replacement为什么该替代最接近行为发生了什么变化哪个测试被移动或改写哪个文档被移动或重写测试场景任何被接受的漂移都不允许缺少登记条目登记语言与仓库现实一致。五、预检三种失败场景的预防Deliberate-Mode Pre-Mortem场景失败形态预防措施假对等Fake Parity把已删除概念映射到“有点类似”的当前面然后发布谎言要求概念级的显式替代理由凡是过去存在直接贡献者示例的地方必须有直接浏览器证明架构回滚恐慌Architecture Rollback Panic为了恢复对等而重新引入死内部架构坚守“仅贡献者面对等”这条线除非公开/贡献者行为依赖否则允许内部分叉发布门禁漂移回归Release Gate Drift Returns文档说一套prerelease跑另一套瘦套件只做一个规范门禁命令文档显式指向该命令六、扩展测试计划单元slate、slate-history、slate-react、slate-dom的包契约套件为已恢复/映射的已删除桶重建概念级包测试。集成tsc:examples示例槽恢复检查替换兼容矩阵。E2E / 浏览器贡献者概念槽的直接示例测试Android 概念重映射处的 IME/移动输入证明。可观测性 / 证据冻结车道的实测基准产物大 PR 的漂移登记作为可执行证据的发布门禁命令定义。配套审计计划 docs/plans/2026-04-07-slate-v2-full-release-regression-audit-plan.md 给出的发布门禁清单规范命令yarn test:replacement:gate:local的成员包括yarn testyarn test:replacement:compat:local以下浏览器车道android-tests、check-lists、code-highlighting、inlines、custom-placeholder、search-highlighting、richtext、markdown-shortcuts、markdown-preview、forced-layout、styling、hovering-toolbar、editable-voids、images、embeds、tables、scroll-into-view以下基准车道placeholder、huge-document、richtext、markdown、editable-voids、tables七、具体验证步骤翻转Target B前的最少同轮证据在Target B翻绿之前必须拿到以下 8 项证据yarn tsc:examplesyarn test发布门禁命令已恢复/映射概念槽的定向浏览器证明兼容矩阵基准车道对变更过的真相源文档执行 doc-prettier 检查对已删除概念名与死包引用执行过期引用扫描八、执行模式与人员配置可用 Agent 类型architect、critic、planner、researcher、explore、executor、verifier、test-engineer、code-reviewer、writer。各车道的建议推理级别车道推理级别概念映射与文档车道medium包 oracle 重建high浏览器证明重建highslate-hyperscript决策high发布门禁接线medium经ralph顺序执行用于依赖密集的顺序恢复概念矩阵 → 示例槽重建 → 浏览器证明重建 → 包 oracle 重建 → 发布门禁 → 漂移登记 最终文档。经team并行执行拆分为互不相交的车道① examples/docs 概念映射② Playwright/浏览器证明恢复③ 包测试 oracle 恢复④ 发布门禁 漂移登记。关键告诫只在概念矩阵先冻结之后才使用$team。映射未明确就并行正是把事情搞成一锅粥的方式。团队验证路径先冻结概念矩阵每个车道完成后更新漂移登记运行包测试 tsc:examples运行已恢复/映射的浏览器车道运行兼容矩阵运行基准然后才重新打开Target B判定。九、与仓库现状的对应判定的延续这份共识计划在仓库中并非孤立文件其后的就绪判定文档 docs/slate-v2/release-readiness-decision.md2026-04-18延续了同样的纪律当前判定仍为Not release-ready且明确Target B: Go目前不诚实就绪门禁包括tranche 1 根/工具/docs 车道稳定、tranche 2 React 19.2 Next TypeScript 6 兼容车道稳定、包恢复按声明顺序完成、每个草稿文件有显式处置、幸存的漂移要么是引擎强制的要么是清晰的当前价值、其余漂移统一标为post RC当前声明宽度强调“对等本身不够”Parity alone is not enoughv2 必须同时保有其存在理由read/update 生命周期与原始方法 DX、最佳 React 运行时局部性、显式的 decoration/annotation/widget 架构、优于旧版的大文档姿态、以及可重放的生成式浏览器 gauntlet。这与共识计划中“发布声明必须落后于门禁证据”“性能措辞逐车道限定”的原则一脉相承恢复贡献者概念面、重建发布门禁、维护漂移登记是让Target B从红色翻绿之前必须完成的工程闭环。若要在本仓库复现审计数字可在工作树根目录执行git diff --diff-filterD --name-only git diff --diff-filterD --name-only | rg ^packages/slate/test/ git diff --diff-filterD --name-only | rg ^packages/slate-react/test/ git diff --diff-filterD --name-only | rg ^packages/slate-history/test/ git diff --diff-filterD --name-only | rg ^playwright/integration/examples/ git diff --diff-filterD --name-only | rg ^site/examples/ts/ git diff --diff-filterD --name-only | rg ^site/examples/js/ git diff --diff-filterD --name-only | rg ^packages/slate-hyperscript/十、结语无回归发布的工程纪律这份共识计划的可取之处不在于“恢复了多少文件”而在于它确立了一套可复用的发布纪律概念槽是恢复的最小单元、证明负责人是每个概念的必要归属、发布门禁是文档声明的执行器、漂移登记是大 PR 的诚实窗口。对任何正在经历大规模重写并希望保住贡献者生态的编辑器项目而言恢复贡献者面 → 先立门禁清单 → 逐单元重映射 → 预检防假对等 → 证据到位再翻 Target B这条路径本身就是可以照抄的工程模板。【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表