Evidence-led simplification surveys
以证据指导简化调研
Unused-symbol searches can miss working behavior whose implementation costs more than its required outcome, and can misclassify public extension APIs without fixed repository callers as dead. The previous simplification skill also combined discovery with lengthy archive procedures, omitted application and Python paths from its consumer examples, and suggested a proposal outline without the mandatory `Alternatives con
English
Problem
Unused-symbol searches can miss working behavior whose implementation costs more than its required outcome, and can misclassify public extension APIs without fixed repository callers as dead. The previous simplification skill also combined discovery with lengthy archive procedures, omitted application and Python paths from its consumer examples, and suggested a proposal outline without the mandatory Alternatives considered section.
Decision
The simplification skill traces a complete producer-to-outcome path, asks which distinctions change consumer actions, considers explicit reductions in supported behavior, and searches for maintained copies that an authoritative read can replace. It separates composition availability from deployment policy and counts removed configuration, lifecycle, tests, and documentation together with source code.
Production use changes the required trade-off evidence; it does not automatically veto a proposal or authorize implementation. Dynamic plugin discovery, installed consumers, generated runtime assets, profiles, applications, and Python participate in consumer tracing. Protected adapters and persistence designs, released data, trust boundaries, independent invariant observations, synchronous publication, cancellation, and quiescent disposal remain constraints.
The entry point separates decision criteria from an optional historical reference pairing mechanisms with counterexamples and residual obligations. Archive mechanics remain at their existing owner, and the proposal skeleton uses the canonical headings.
Historical evidence
The author sampled 26 of the 100 English implemented or archived simplification notes: 11 implemented and 15 archived. All nine rejected simplification notes supplied counterexamples. The sample covers producerless variants, inert request knobs, explicit inputs, public projections, derived data, shared composition, lifecycle ownership, and dependency replacements; it is purposeful, not random or exhaustive.
The frozen comparison inputs contained 2,222 whitespace-delimited words in the baseline entry, 1,372 in the revised entry, and 897 in its reference; the hashes below identify those measured artifacts. The reference teaches questions rather than current deletion instructions. An adapter-rejected knob differs from a working extension API; a simpler public status can retain internal residency distinctions; reading at feedback time changes the observation promise; replacing a dependency can lose deterministic clocks or necessary teardown. Archived records were read without following or repairing outbound links. No old note was edited, archived, or deleted.
Bounded survey evidence
The source snapshot is master after #4618. Each arm uses fresh agents with the same inherited model and reasoning effort, identical owner domains, a time cap, and at most four submissions per domain. Other outputs remain hidden from discovery agents. The runtime domain covers core, session, session-query, api, sdk, and Python; execution covers shell, subprocess, terminal, jobs, fs, mcp, and boot.
A third matched domain, covering llm, compaction, context, skill, and extensions, was added after the initial runtime results to broaden coverage. It is exploratory, uses a shorter equal cap, and remains separate from the initially declared two-domain comparison. The study stops after these three domains.
The skill author derived the revision from historical notes while isolated from current candidates. The coordinator received accidental early baseline hints, but accepted the independent author's revision unchanged before revised runs. Candidate packets hid arm labels from a separate reviewer; the coordinator's integration was not blind. The frozen inputs had SHA-256 values 9830af2272a1a1c3832078f31a432c8abe0335a013bc6c248c072b388520e798 for the baseline entry, 3b101d16ae098855c9214ad7fed631a2f079b6078c83b49829ae87305f631a87 for the revised entry, and 9a6b674d1eeadb691481ea09838b211b8e94c94e5a8cd928726246b1c097b2b5 for its reference.
After these runs, review replaced only the skill phrase “earns its place” with “is justified”; no discovery criterion changed and no new discovery run was performed. Each prompt requested exact source/search evidence, producer and consumer classification, note overlap, net reduction, the strongest counterargument, and acceptance requirements. Review applied those same criteria to every submission, distinguished local edits from durable decisions, and did not treat either public discoverability or a line-deletion count as a verdict by itself.
| Version | Domain | Cap | Submitted | Durable as submitted | Durable after refinement | Local | Deferred | Elapsed |
|---|---|---|---|---|---|---|---|---|
| Baseline | Runtime | 12m | 3 | 1 | 2 | 0 | 0 | 6m 30s |
| Baseline | Execution | 12m | 3 | 3 | 0 | 0 | 0 | 8m 40s |
| Revised | Runtime | 12m | 2 | 1 | 0 | 1 | 0 | 5m 05s |
| Revised | Execution | 12m | 3 | 2 | 0 | 1 | 0 | 8m 19s |
| Baseline | Model/context, exploratory | 10m | 2 | 2 | 0 | 0 | 0 | 6m 02s |
| Revised | Model/context, exploratory | 10m | 2 | 0 | 0 | 1 | 1 | 7m 51s |
The baseline yields six durable proposals as submitted and two after refinement. The revised skill yields three durable proposals and three local cleanups, with one proposed behavior reduction deferred. Python RPC narrowing and filesystem-invariant omission overlap. The combined set contains nine distinct durable proposals; the revised version adds configuration-only HMR. This sample does not show higher durable-proposal yield from the revision.
Review narrowed the query API proposal to retain filterEvents, whose literal substring behavior differs from FTS. The prompt-event proposal explicitly retires an active extension promise instead of claiming per-step assembly makes notifications redundant. Both refined baseline findings remain useful and are retained.
The three revised-only local findings were a mirrored provider reference, copied filesystem results, and duplicate assembler ordering state. They were counted separately and were not written as active design proposals.
Review deferred replacing automatic Session-reference sizing with a fixed byte default. The current budget decision fixes lost useful context on large models; best-effort spill retrieval does not replace inline context. No new workload evidence justified restoring the problematic default. The proposal's deletion inventory was accurate, but that alone did not overcome the current requirement.
Alternatives considered
Keep caller counts as the main filter. This misses producer support, dynamic consumers, and useful explicit behavior reductions. More symbol matches do not establish which obligations can disappear.
Encode historical successes as a deletion checklist. Architecture and consumers change. The reference uses mechanisms and counterexamples without making frozen records current authority.
Select the revision by proposal count. The observed count does not support superiority. Its demonstrated benefit is complementary discovery and explicit classification; the stronger union includes findings from both versions.
Consequences
The skill changes survey guidance, not runtime behavior. The nine proposals still require scoped implementation and relevant tests; their future implementation checks were not run. Three local opportunities remain evaluation findings, and the unsupported budget reversal is excluded from the proposal set.
There is one discovery run per version/domain, no randomized order or repetition, unequal actual elapsed time within equal caps, and subjective review. Source reductions are estimates, not implemented diffs. These results establish neither statistical superiority, reproducible speedup, nor exhaustive coverage.
The dependency, prose, archive, and performance-workflow decisions retain their independent responsibilities. This note adds simplification-specific discovery and evaluation criteria without superseding those owners.
中文
问题
仅搜索未使用的符号,可能漏掉实现成本超出必要结果的有效行为,也可能将没有固定仓库调用方的公共扩展 API 误判为死代码。原简化 skill(技能)还将发现候选与冗长的归档流程混在一起,消费方示例遗漏应用与 Python 路径,建议的提案结构也缺少必需的 Alternatives considered 章节。
决策
简化 skill 追踪从生产方到结果的完整路径,判断哪些区分会改变消费方动作,考虑明确收缩受支持行为,并寻找可以用权威读取替代的持续维护副本。它区分组合可用性与部署策略,并在源码之外合计删除的配置、生命周期、测试和文档成本。
生产使用会改变所需的取舍证据,但不会自动否决提案,也不构成实施授权。动态插件发现、已安装消费方、生成的运行时产物、profile、应用和 Python 都纳入消费方追踪。受保护的适配器与持久化设计、已发布数据、信任边界、独立 invariant 观察、同步发布、取消及达到静止状态的释放仍是约束。
入口将判断标准与可选历史参考页 分开,后者将机制与反例、残留义务配对。归档操作仍由原有归属处负责,提案结构使用规范标题。
历史证据
作者从 100 份英文已实现或归档简化记录中抽样 26 份:11 份已实现、15 份归档。全部九份已否决简化记录提供反例。样本涵盖无生产方变体、无效请求开关、显式输入、公共投影、派生数据、共享组合、生命周期所有权和依赖替换;这是有目的的抽样,并非随机或穷尽审查。
冻结的比较输入按空白分隔计数:基线入口为 2,222 词,新版入口为 1,372 词,参考页为 897 词;下方哈希标识这些已测量产物。参考页提供问题,而非当前删除指令。所有适配器都拒绝的开关不同于有效扩展 API;更简单的公共状态可以保留内部驻留差别;反馈时读取会改变观察承诺;依赖替换可能丢失确定性时钟或必要的释放行为。阅读归档记录时未追踪或修复其出站链接。没有编辑、归档或删除任何旧记录。
有界调研证据
源码快照固定为 #4618 之后的 master。每组使用继承相同模型和推理强度的全新 agent(智能体),获得相同归属领域、时间上限及每域最多四个提交项。发现候选的 agent 不能读取其他输出。运行时域覆盖 core、session、session-query、api、sdk 和 Python;执行域覆盖 shell、subprocess、terminal、jobs、fs、mcp 和 boot。
初始运行时结果产生后,增加第三个配对领域,覆盖 llm、compaction、context、skill 和 extensions,以扩大覆盖。该领域属于探索性补充,采用较短但双方相同的时间上限,与最初声明的两域比较分开。调研在这三个领域后结束。
skill 作者与当前候选隔离,根据历史记录撰写修订。协调者意外提前收到少量基线提示,但在新版运行前原样接受独立作者的修订。交给独立审查方的候选材料隐藏了分组标签;协调者整合并非盲审。冻结输入的 SHA-256 为:基线入口 9830af2272a1a1c3832078f31a432c8abe0335a013bc6c248c072b388520e798,新版入口 3b101d16ae098855c9214ad7fed631a2f079b6078c83b49829ae87305f631a87,新版参考页 9a6b674d1eeadb691481ea09838b211b8e94c94e5a8cd928726246b1c097b2b5。
这些运行结束后,评审仅将 skill 中的「earns its place」改为「is justified」;没有改变发现标准,也没有重新运行发现测试。每份提示都要求精确源码/搜索证据、生产方与消费方分类、记录重叠、净减少量、最强反对理由和验收要求。审查对每个提交项使用相同标准,区分局部编辑与长期决策,既不单凭公共可发现性,也不单凭删除行数作结论。
| 版本 | 领域 | 上限 | 提交数 | 原样可用的长期提案 | 调整后可用的长期提案 | 局部项 | 暂缓 | 耗时 |
|---|---|---|---|---|---|---|---|---|
| 基线 | 运行时 | 12m | 3 | 1 | 2 | 0 | 0 | 6m 30s |
| 基线 | 执行 | 12m | 3 | 3 | 0 | 0 | 0 | 8m 40s |
| 新版 | 运行时 | 12m | 2 | 1 | 0 | 1 | 0 | 5m 05s |
| 新版 | 执行 | 12m | 3 | 2 | 0 | 1 | 0 | 8m 19s |
| 基线 | 模型/上下文,探索性 | 10m | 2 | 2 | 0 | 0 | 0 | 6m 02s |
| 新版 | 模型/上下文,探索性 | 10m | 2 | 0 | 0 | 1 | 1 | 7m 51s |
基线产生六个原样可用的长期提案,另有两个调整后可用。新版 skill 产生三个长期提案和三个局部清理项,一项行为收缩被暂缓。Python RPC 收缩和文件系统 invariant 省略相互重叠。合并集合包含九个互不重复的长期提案;新版增加了仅保留配置更新的 HMR。该样本未显示新版的长期提案产出更高。
审查缩小了查询 API 提案,保留其字面子串语义不同于 FTS 的 filterEvents。提示事件提案 明确撤回当前扩展承诺,而非声称逐步骤组装让通知多余。这两项经调整的基线发现仍有价值,因此保留。
三个仅新版发现的局部项分别是镜像的提供方引用、复制的文件系统结果,以及重复的组装器顺序状态。它们单独计数,没有写成当前设计提案。
审查暂缓了将自动 Session 引用大小改为固定字节默认值的提案。当前预算决策 修复了大模型丢失有用上下文的问题;尽力而为的 spill 检索不能替代内联上下文。没有新的工作负载证据支持恢复有问题的默认值。提案的删除清单准确,但仅此不足以推翻当前要求。
考虑过的替代方案
继续以调用数量为主要筛选依据。 这会遗漏生产方支持、动态消费方及有价值的明确行为收缩。更多符号匹配不能证明哪些义务可以删除。
将历史成功案例编码为删除清单。 架构与消费方会变化。参考页使用机制与反例,不将冻结记录视为当前权威。
按提案数量选择修订。 观察到的数量不支持优越性结论。已展示的收益是互补发现和明确分类;更有价值的合并集合包含两个版本的发现。
后果
skill 改变调研指导,不改变运行时行为。九份提案仍需限定范围的实现与相关测试;本次未运行其未来实施检查。三个局部机会保留为评估发现,缺少依据的预算逆转排除在提案集合之外。
每个版本/领域只有一次发现运行,没有随机顺序或重复试验,相同上限内的实际耗时不等,审查带有判断性。源码减少量是估算,并非实现 diff。这些结果不能证明统计优越性、可复现的提速或穷尽覆盖。