You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We maintain plugins for this harness, and over the last few weeks the pace has not been ours to set. A minor bump can rename a configuration key, move a package, or change a runtime vocabulary that a plugin was written against — the same pain shows up across these discussions (#5120 on upgrading plugin code for a new release has 19 replies; #6484 is a 0.1.5 rename that changed behaviour silently). Following release notes was not enough either, because a release note tells you what shipped, not what the project has decided. So we went looking for the decisions themselves, in the repository's own decision record under .agents/notes/.
Two things came out of that.
The first is that there is deliberately no index.README.md says "Do not add a centralized INDEX.md", and implemented/process/2026-07-19-remove-generated-agent-note-index.md owns the reasoning: the lifecycle/class path and filename already encode the facts, and a generated corpus-wide file becomes a merge hotspot. We agree with that reasoning, and this post is not an index of the corpus.
The second is what actually helped us, and it is not a bug report. The notes we most needed as plugin authors were already written:
proposed/architecture/2026-09-10-session-developer-transition.md states the problem in our terms — "new plugins are discouraged from continuing to depend on concrete Session, JSONL handles, or lifecycle events. Developers need rules that match the target branch state." — and then gives what we had been reconstructing from release notes: a stage table (current master, after Stage 1 … through Stage 5, and long term) saying which members new code should use at each stage.
proposed/architecture/2026-09-10-session-capability-protocols.md contains the compatibility promise we could not find anywhere else: existing integrations "may temporarily keep the deprecated Session, Session.create, and Session.fromRestore compatibility API."
We had been reacting release by release. The decision record was telling us the shape of the next several stages. That is the reason for this post: as a plugin author, the two folders that changed what we did next were rejected/ and proposed/, and they are 53 files between them — so we read them and compressed them into the tables below. Each row points at the file that owns the decision; read the file before you rely on our sentence.
Folder 1 · Declined — 14
The rejected/ tree exists for one stated purpose (its own README): keep the rationale while it "prevents a tempting, meaningful mistake". These are the current 14, with the reason each carries in its Status: line.
Date
Class
Decision
Reason as recorded
Path
2026-06-11
process
Architectural conformance — dependency rules and the adapter kit
premise gone: plugins depend on dsh-agent-loop by design; the hygiene dependency gates own conformance
Use node:timers/promises for hand-rolled cancellable sleeps
implementation (PR #679) falsified the parity premise: vitest's fake clock does not intercept it, so the swap trades deterministic tests for ~10 deleted lines
Two of the fourteen are recorded as "closed as a proposal" rather than argued down — the shipped package owns the design, so the note was withdrawn rather than defeated. One (2026-08-04) was superseded by a later decision. Reading only the folder name would mis-read both cases.
Folder 2 · Already proposed — 39
proposed/ is "proposals reviewed before implementation; not yet built (or only partly)". A post that asks for one of these is not wrong — it is asking for something already written down. Grouped by when each topic was first proposed:
June 2026
proposed/process/2026-06-11-api-extractor-reports.md — make "this commit changed the public API" a reviewable fact
proposed/process/2026-06-11-supply-chain-and-vendor-drift.md — vendor-drift verification in both directions
proposed/process/2026-08-20-audience-first-documentation-quality.md — define "brief, intuitive, friendly" as reviewable criteria
proposed/process/2026-08-27-port-tool-owned-render.md — port a community tool-owned render prototype into current APIs
September 2026 — note the clusters
Desktop update family (2026-09-08, three notes): feature/2026-09-08-desktop-update-policy-and-installation.md (automatic discovery, user-initiated download and installation, against a server that usually runs locally) · 2026-09-08-desktop-mandatory-update-api.md (how a mandatory-update decision reaches Desktop when its server is local or the user is not signed in) · 2026-09-08-desktop-update-extensions.md (independently revised Desktop packages, a stable subscription, next-launch installation)
proposed/architecture/2026-09-06-logical-session-storage-rebuild.md — separate the logical-session / service / storage / projection / query dependencies that are currently mixed together
session refactor family (2026-09-10, four notes):
architecture/2026-09-10-session-capability-protocols.md — make implementations genuinely replaceable: product code knows only LogicalSession + SessionService
architecture/2026-09-10-session-developer-transition.md — the staged rules for plugin authors (which members new code should use at each stage)
architecture/2026-09-10-session-data-compatibility.md — old conversations must still open after an upgrade; the refactor must not change disk bytes or request shape on the way
architecture/2026-09-10-session-refactor-faq.md — short answers for contributors, separating temporary naming from layers that are real
proposed/architecture/2026-09-14-composer-model-and-draft-editor.md — two-stage Composer and DraftEditor isolation: one session's draft edited from several views
simplification wave (under proposed/simplification/; nine notes on 2026-09-19, plus one on 2026-09-17 — the family that removes surface area without adding capability):
2026-09-19: config-only-hmr (HMR narrows to configuration refresh) · omit-fs-payload-invariant (drop the payload-only invariant check) · provider-only-instruction-reads (instruction files read only through a provider) · prune-stream-visibility-helpers (five unconsumed stream-visibility queries go) · python-sdk-directional-client (remove the Python SDK's unused reverse RPC) · retire-app-bin-boot-helpers (retire boot helpers used only by fixtures) · retire-prompt-registry-change-event (retire the unconsumed system-prompt/change) · shell-env-key-declarations (declarations focus on key ownership) · trim-session-query-convenience-api (trim convenience methods with no consumer)
2026-09-17: defer-office-background-scheduling (Office conversion scheduling deferred until a consumer needs it)
Two observations from the dates, offered as observations and not as claims about intent. First, the four 2026-09-10 session notes read as one in-flight refactor: capability protocols, developer transition rules, data compatibility ("users care whether old conversations still open after an upgrade"), and a refactor FAQ — the note the project wrote because contributors kept asking the same questions. Second, nine simplification proposals landed on a single day (2026-09-19); if you are tracking surface-area churn, that is the date to read. A third dated cluster is 2026-09-08: three Desktop update notes, which is the group most likely to change what a Desktop user sees.
How to use this
Open the file that owns the decision before quoting our one-line reason — our sentence is a compression of a Status: line, and the note is the authority.
If your proposal is the same change a rejected/ note declined, the useful move is to argue against the reason recorded there, in the open. One of the fourteen explicitly permits re-proposing a narrower part (2026-07-19-make-jsonrpc-directional: "transport narrowing may be re-proposed alone"), and another records that only a fresh audit supersedes it (2026-07-04-prune-dead-core-spine-api).
If your proposal is already in proposed/, the topic exists — a post that adds evidence, a consumer, or a failure case is a different contribution from a post that proposes it again.
Boundaries
We are plugin authors, not maintainers; nothing here is official policy, and the table is our reading of the repository. The tree moves: rejected/ notes are deleted once their rationale stops preventing a mistake.
Our one-line reasons are compressions (some trimmed mid-sentence to keep the table readable). Read the file.
We built the table by extracting each note's Status: line; a mistake in the extraction is ours, and we will correct it if you point at it.
Authorship note: reproduced and measured by me against the public repository; root-cause tracing and drafting assisted by AI; verification and publication by me. I have no engineering background — if any technical claim reads wrong, please call it out; I will re-verify against the toolchain and correct.
第一件:那里刻意没有索引。README.md 逐字写着 "Do not add a centralized INDEX.md",理由由 implemented/process/2026-07-19-remove-generated-agent-note-index.md 持有:生命周期/类别的路径与文件名已经编码了事实,而一个全语料生成的清单会变成各分支共同的合并热点。我们认同这个理由,所以这篇帖不是语料索引。
第二件才是真正帮到我们的,而且它不是一份缺陷报告。 我们作为插件作者最需要的几条,其实早就写好了:
proposed/architecture/2026-09-10-session-developer-transition.md 用它自己的话把我们的处境写了出来 —— "new plugins are discouraged from continuing to depend on concrete Session, JSONL handles, or lifecycle events. Developers need rules that match the target branch state." —— 然后给了我们本来一直在从发布说明里反推的东西:一张分阶段表(当前 master、Stage 1 之后……到 Stage 5、以及长期),逐阶段说明新代码该用哪个成员。
proposed/architecture/2026-09-10-session-capability-protocols.md 里有那句我们别处找不到的兼容承诺:既有的外部集成 "may temporarily keep the deprecated Session, Session.create, and Session.fromRestore compatibility API."
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
We maintain plugins for this harness, and over the last few weeks the pace has not been ours to set. A minor bump can rename a configuration key, move a package, or change a runtime vocabulary that a plugin was written against — the same pain shows up across these discussions (
#5120on upgrading plugin code for a new release has 19 replies;#6484is a 0.1.5 rename that changed behaviour silently). Following release notes was not enough either, because a release note tells you what shipped, not what the project has decided. So we went looking for the decisions themselves, in the repository's own decision record under.agents/notes/.Two things came out of that.
The first is that there is deliberately no index.
README.mdsays "Do not add a centralizedINDEX.md", andimplemented/process/2026-07-19-remove-generated-agent-note-index.mdowns the reasoning: the lifecycle/class path and filename already encode the facts, and a generated corpus-wide file becomes a merge hotspot. We agree with that reasoning, and this post is not an index of the corpus.The second is what actually helped us, and it is not a bug report. The notes we most needed as plugin authors were already written:
proposed/architecture/2026-09-10-session-developer-transition.mdstates the problem in our terms — "new plugins are discouraged from continuing to depend on concreteSession, JSONL handles, or lifecycle events. Developers need rules that match the target branch state." — and then gives what we had been reconstructing from release notes: a stage table (current master, after Stage 1 … through Stage 5, and long term) saying which members new code should use at each stage.proposed/architecture/2026-09-10-session-capability-protocols.mdcontains the compatibility promise we could not find anywhere else: existing integrations "may temporarily keep the deprecatedSession,Session.create, andSession.fromRestorecompatibility API."We had been reacting release by release. The decision record was telling us the shape of the next several stages. That is the reason for this post: as a plugin author, the two folders that changed what we did next were
rejected/andproposed/, and they are 53 files between them — so we read them and compressed them into the tables below. Each row points at the file that owns the decision; read the file before you rely on our sentence.Folder 1 · Declined — 14
The
rejected/tree exists for one stated purpose (its own README): keep the rationale while it "prevents a tempting, meaningful mistake". These are the current 14, with the reason each carries in itsStatus:line.dsh-agent-loopby design; the hygiene dependency gates own conformancerejected/process/2026-06-11-architectural-conformance.mdrejected/architecture/2026-06-16-typed-event-schemas.mdstep/endis the durable indication a model step finished; the symmetric pair makes crash repair, invariants and transcript inspection clearerrejected/simplification/2026-06-20-drop-durable-step-boundaries.mddsh-sessionrejected/simplification/2026-06-20-fold-session-persistence-interface.mdrejected/simplification/2026-06-20-truncate-interrupted-turns.mdrejected/simplification/2026-07-04-prune-dead-core-spine-api.mdrejected/simplification/2026-07-12-prune-unused-skill-registry-api.mdrejected/simplification/2026-07-19-fold-compaction-package-split.mdsession/promptbecame an enqueue receipt without status; transport narrowing may be re-proposed alonerejected/simplification/2026-07-19-make-jsonrpc-directional.mdui-settings,localeandui-themepackages and their READMEs own the designrejected/architecture/2026-07-25-client-settings-locale-theme.mdnode:timers/promisesfor hand-rolled cancellable sleepsrejected/simplification/2026-07-26-builtin-timer-promises-for-hand-rolled-sleeps.mdrejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.mdrejected/process/2026-08-04-artifact-first-npm-baseline-publication.mdpackages/extensionsruntime and its READMEs own the designrejected/architecture/2026-08-08-cordis-web-dynamic-packages.mdTwo of the fourteen are recorded as "closed as a proposal" rather than argued down — the shipped package owns the design, so the note was withdrawn rather than defeated. One (
2026-08-04) was superseded by a later decision. Reading only the folder name would mis-read both cases.Folder 2 · Already proposed — 39
proposed/is "proposals reviewed before implementation; not yet built (or only partly)". A post that asks for one of these is not wrong — it is asking for something already written down. Grouped by when each topic was first proposed:June 2026
proposed/process/2026-06-11-api-extractor-reports.md— make "this commit changed the public API" a reviewable factproposed/process/2026-06-11-supply-chain-and-vendor-drift.md— vendor-drift verification in both directionsproposed/testing/2026-06-11-deterministic-and-stress-testing.md— replacesetTimeout-based loop-test synchronisation; add race stressproposed/testing/2026-06-11-mutation-testing.md— coverage counterweight (100% line coverage ≠ assertions that can fail)proposed/process/2026-06-20-discover-package-inventory.md— discover package/gate inventories instead of maintaining static listsproposed/feature/2026-06-30-pre-tool-input-rewrite.md— a consistent design for rewriting tool input before executionJuly 2026
proposed/feature/2026-07-06-recallable-compaction.md— index checkpoints, a state checkpoint, in-session history recallproposed/feature/2026-07-08-interactive-side-sessions.md— explore a question in a side session and merge backproposed/process/2026-07-13-human-review-skill-maintenance.md— periodic human review fordsh-code-reviewproposed/architecture/2026-07-19-required-cancellation-through-tool-capability-seams.md— cancellation required through tool-reachable seamsproposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md— a KV storage seam beyond the session event logproposed/process/2026-07-26-remove-packed-session-fixture-migrator.md— remove the packed-session fixture branch migratorproposed/architecture/2026-07-27-session-projection-and-command-log.md— per-session projections and command lifecycle loggingproposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md— storage root placement and derived-medium recoveryproposed/architecture/2026-07-29-durable-last-activity-index.md— a stored answer to "when did the user last prompt here"August 2026
proposed/feature/2026-08-04-task-surface.md— a declarative structured-interaction panelproposed/architecture/2026-08-08-semantic-composer-chain-phases.md— semantic phases for composer-chain electionproposed/bug-fix/2026-08-20-attachment-read-quarantine.md— quarantine unreadable historical attachmentsproposed/process/2026-08-20-audience-first-documentation-quality.md— define "brief, intuitive, friendly" as reviewable criteriaproposed/process/2026-08-27-port-tool-owned-render.md— port a community tool-owned render prototype into current APIsSeptember 2026 — note the clusters
feature/2026-09-08-desktop-update-policy-and-installation.md(automatic discovery, user-initiated download and installation, against a server that usually runs locally) ·2026-09-08-desktop-mandatory-update-api.md(how a mandatory-update decision reaches Desktop when its server is local or the user is not signed in) ·2026-09-08-desktop-update-extensions.md(independently revised Desktop packages, a stable subscription, next-launch installation)proposed/architecture/2026-09-06-logical-session-storage-rebuild.md— separate the logical-session / service / storage / projection / query dependencies that are currently mixed togetherarchitecture/2026-09-10-session-capability-protocols.md— make implementations genuinely replaceable: product code knows onlyLogicalSession+SessionServicearchitecture/2026-09-10-session-developer-transition.md— the staged rules for plugin authors (which members new code should use at each stage)architecture/2026-09-10-session-data-compatibility.md— old conversations must still open after an upgrade; the refactor must not change disk bytes or request shape on the wayarchitecture/2026-09-10-session-refactor-faq.md— short answers for contributors, separating temporary naming from layers that are realproposed/architecture/2026-09-14-composer-model-and-draft-editor.md— two-stage Composer and DraftEditor isolation: one session's draft edited from several viewsproposed/simplification/; nine notes on 2026-09-19, plus one on 2026-09-17 — the family that removes surface area without adding capability):config-only-hmr(HMR narrows to configuration refresh) ·omit-fs-payload-invariant(drop the payload-only invariant check) ·provider-only-instruction-reads(instruction files read only through a provider) ·prune-stream-visibility-helpers(five unconsumed stream-visibility queries go) ·python-sdk-directional-client(remove the Python SDK's unused reverse RPC) ·retire-app-bin-boot-helpers(retire boot helpers used only by fixtures) ·retire-prompt-registry-change-event(retire the unconsumedsystem-prompt/change) ·shell-env-key-declarations(declarations focus on key ownership) ·trim-session-query-convenience-api(trim convenience methods with no consumer)defer-office-background-scheduling(Office conversion scheduling deferred until a consumer needs it)Two observations from the dates, offered as observations and not as claims about intent. First, the four 2026-09-10 session notes read as one in-flight refactor: capability protocols, developer transition rules, data compatibility ("users care whether old conversations still open after an upgrade"), and a refactor FAQ — the note the project wrote because contributors kept asking the same questions. Second, nine
simplificationproposals landed on a single day (2026-09-19); if you are tracking surface-area churn, that is the date to read. A third dated cluster is 2026-09-08: three Desktop update notes, which is the group most likely to change what a Desktop user sees.How to use this
Status:line, and the note is the authority.rejected/note declined, the useful move is to argue against the reason recorded there, in the open. One of the fourteen explicitly permits re-proposing a narrower part (2026-07-19-make-jsonrpc-directional: "transport narrowing may be re-proposed alone"), and another records that only a fresh audit supersedes it (2026-07-04-prune-dead-core-spine-api).proposed/, the topic exists — a post that adds evidence, a consumer, or a failure case is a different contribution from a post that proposes it again.Boundaries
rejected/notes are deleted once their rationale stops preventing a mistake.Status:line; a mistake in the extraction is ours, and we will correct it if you point at it.Authorship note: reproduced and measured by me against the public repository; root-cause tracing and drafting assisted by AI; verification and publication by me. I have no engineering background — if any technical claim reads wrong, please call it out; I will re-verify against the toolchain and correct.
Reported by the OfferKuai Team — Founder: Zhaofeng (Yaming). Website: https://www.offerkuai.com/ | Contact: contact@offerkuai.com
中文版
我们维护这个 harness 的插件。而过去不到一个月,节奏就不是我们定的:一次小版本跳变就足以改掉一个配置键、挪走一个包、或者换掉插件所依赖的运行时词汇 —— 这处痛点在讨论区里到处都是(
#5120「插件代码怎么跟着新版 dsh 升级」有 19 条回复;#6484是一次把行为悄悄改掉的 0.1.5 改名)。只看发布说明也不够,因为发布说明告诉你发了什么,不告诉你这个项目决定了什么。所以我们去找"决定本身"—— 仓库自己的决策记录
.agents/notes/。结果有两件。第一件:那里刻意没有索引。
README.md逐字写着 "Do not add a centralizedINDEX.md",理由由implemented/process/2026-07-19-remove-generated-agent-note-index.md持有:生命周期/类别的路径与文件名已经编码了事实,而一个全语料生成的清单会变成各分支共同的合并热点。我们认同这个理由,所以这篇帖不是语料索引。第二件才是真正帮到我们的,而且它不是一份缺陷报告。 我们作为插件作者最需要的几条,其实早就写好了:
proposed/architecture/2026-09-10-session-developer-transition.md用它自己的话把我们的处境写了出来 —— "new plugins are discouraged from continuing to depend on concreteSession, JSONL handles, or lifecycle events. Developers need rules that match the target branch state." —— 然后给了我们本来一直在从发布说明里反推的东西:一张分阶段表(当前 master、Stage 1 之后……到 Stage 5、以及长期),逐阶段说明新代码该用哪个成员。proposed/architecture/2026-09-10-session-capability-protocols.md里有那句我们别处找不到的兼容承诺:既有的外部集成 "may temporarily keep the deprecatedSession,Session.create, andSession.fromRestorecompatibility API."我们原来是一个版本一个版本地被动应对。而决策记录里,写着接下来好几个阶段长什么样。这就是这篇帖的由来:作为插件作者,真正改变了我们下一步动作的是
rejected/和proposed/这两个目录,而它们一共 53 个文件 —— 我们把它读完、压成下面两张表。每一行都指回持有该决策的文件;以原文为准,别只信我们那一句。目录一 · 已明确拒绝(14 条)
rejected/存在的唯一理由,官方 README 写得很直白:保留理由,直到它不再能阻止一个"诱人的、有意义的错误"。以下是当前全部 14 条,理由取自各文件自己的Status:行。dsh-agent-loop;一致性由 hygiene 依赖门负责rejected/process/2026-06-11-architectural-conformance.mdrejected/architecture/2026-06-16-typed-event-schemas.mdstep/end是"模型这一步已完成"的持久指示;对称的step/start/step/end让崩溃修复与不变量检查更清楚rejected/simplification/2026-06-20-drop-durable-step-boundaries.mddsh-sessionrejected/simplification/2026-06-20-fold-session-persistence-interface.mdrejected/simplification/2026-06-20-truncate-interrupted-turns.mdrejected/simplification/2026-07-04-prune-dead-core-spine-api.mdrejected/simplification/2026-07-12-prune-unused-skill-registry-api.mdrejected/simplification/2026-07-19-fold-compaction-package-split.mdsession/prompt已变为无状态的入队回执;传输收窄可以单独再提rejected/simplification/2026-07-19-make-jsonrpc-directional.mdui-settings、locale、ui-theme包及其 README 持有该设计rejected/architecture/2026-07-25-client-settings-locale-theme.mdnode:timers/promises替换手写的可取消 sleeprejected/simplification/2026-07-26-builtin-timer-promises-for-hand-rolled-sleeps.mdrejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.mdrejected/process/2026-08-04-artifact-first-npm-baseline-publication.mdpackages/extensions运行时及其 README 持有该设计rejected/architecture/2026-08-08-cordis-web-dynamic-packages.md这 14 条里,有 2 条是"以提案形式关闭"(已发布的包持有设计,属于撤回而非被驳倒),另有 1 条是被后续决策取代。只看目录名会把这两类读错。
目录二 · 已在计划内(39 条)
proposed/的定义是"已评审、未落地(或只落了一部分)"。提了其中一条并不是错 —— 只是你提的东西官方已经写下来了。按首次提出时间分组:2026 年 6 月
proposed/process/2026-06-11-api-extractor-reports.md—— 让"这次提交改了公开 API"成为可评审的事实proposed/process/2026-06-11-supply-chain-and-vendor-drift.md—— 供应商漂移的双向校验proposed/testing/2026-06-11-deterministic-and-stress-testing.md—— 去掉基于setTimeout的循环测试同步;补竞态压力proposed/testing/2026-06-11-mutation-testing.md—— 覆盖率配重(行覆盖率 100% ≠ 断言能失败)proposed/process/2026-06-20-discover-package-inventory.md—— 自动发现包/门清单,替代静态列表proposed/feature/2026-06-30-pre-tool-input-rewrite.md—— 工具入参在执行前重写的统一设计2026 年 7 月
proposed/feature/2026-07-06-recallable-compaction.md—— 可召回压缩:索引检查点、状态检查点、会话内历史召回proposed/feature/2026-07-08-interactive-side-sessions.md—— 侧会话探索并合并回主线proposed/process/2026-07-13-human-review-skill-maintenance.md——dsh-code-review的周期性人工复核proposed/architecture/2026-07-19-required-cancellation-through-tool-capability-seams.md—— 取消能力经工具可达的能力缝强制传递proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md—— 会话事件日志之外的 KV 存储缝proposed/process/2026-07-26-remove-packed-session-fixture-migrator.md—— 移除 packed-session fixture 迁移器proposed/architecture/2026-07-27-session-projection-and-command-log.md—— 会话投影与命令生命周期日志proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md—— 存储根位置与派生介质恢复proposed/architecture/2026-07-29-durable-last-activity-index.md—— 冷会话"最后活动时间"的持久答案2026 年 8 月
proposed/feature/2026-08-04-task-surface.md—— 声明式的结构化交互面板proposed/architecture/2026-08-08-semantic-composer-chain-phases.md—— composer 链路选举的语义分期proposed/bug-fix/2026-08-20-attachment-read-quarantine.md—— 隔离读不出来的历史附件proposed/process/2026-08-20-audience-first-documentation-quality.md—— 把"简短、直观、友好"定义成可评审标准proposed/process/2026-08-27-port-tool-owned-render.md—— 把社区的工具自有渲染原型迁入当前 API2026 年 9 月 —— 注意这里有三个簇
feature/2026-09-08-desktop-update-policy-and-installation.md(自动发现、用户发起下载与安装 —— 而 Desktop 服务端通常就跑在本机)·2026-09-08-desktop-mandatory-update-api.md(当服务端在本机、或用户未登录时,"强制更新"的决定怎么送达 Desktop)·2026-09-08-desktop-update-extensions.md(Desktop 包独立修订、稳定订阅、下次启动安装)proposed/architecture/2026-09-06-logical-session-storage-rebuild.md—— 把目前混在一起的"逻辑会话 / 服务 / 存储 / 投影 / 查询"依赖拆开2026-09-10-session-capability-protocols.md—— 让实现真正可替换:产品代码只认LogicalSession+SessionService2026-09-10-session-developer-transition.md—— 给插件作者的分阶段迁移规则(每个阶段新代码该用哪个成员)2026-09-10-session-data-compatibility.md—— 升级后旧会话仍需打得开;重构不得顺手改掉磁盘字节或请求形状2026-09-10-session-refactor-faq.md—— 给贡献者的短答案,区分"临时命名"与"真的多了一层"proposed/architecture/2026-09-14-composer-model-and-draft-editor.md—— 两段式 Composer 与 DraftEditor 隔离:同一会话的草稿要能在多个视图里编辑proposed/simplification/下;09-19 一天九条,另 09-17 一条 —— 这一族共同点是"减少表面积、不加新能力"):config-only-hmr(HMR 收窄为只刷新配置)·omit-fs-payload-invariant(去掉只有载荷的那条不变量校验)·provider-only-instruction-reads(指令文件只经 provider 读)·prune-stream-visibility-helpers(删掉五个无人消费的流可见性查询)·python-sdk-directional-client(移除 Python SDK 未使用的反向 RPC)·retire-app-bin-boot-helpers(退掉只被夹具用到的启动辅助)·retire-prompt-registry-change-event(退掉无人消费的system-prompt/change事件)·shell-env-key-declarations(声明聚焦"变量归属")·trim-session-query-convenience-api(裁掉没有消费方的便捷方法)defer-office-background-scheduling(Office 转换的后台调度推迟到有使用方时)从日期上看到两点,只作观察、不揣测意图:其一,2026-09-10 那四条 session 笔记读起来是同一次进行中的重构 —— 能力协议、开发者迁移规则、数据兼容(原文是"用户关心的是升级后旧会话还能不能打开"),以及一条重构 FAQ —— 那条 FAQ 之所以存在,是因为同一批问题在反复到达。其二,九份
simplification提案落在同一天(2026-09-19);如果你在跟踪表面面积的变化,那天值得读。另一个有日期的簇是 2026-09-08:三条 Desktop 更新笔记 —— 这一组最可能改变 Desktop 用户实际看到的东西。怎么用
Status:行的压缩,原文才是权威。rejected/拒掉的是同一件事,有用的做法是针对那条记录下来的理由在公开场合反驳它。这 14 条里有一条明确写了该主题可以单独再提(2026-07-19-make-jsonrpc-directional,原文 "transport narrowing may be re-proposed alone"),另有一条写明只有一份新的审计才能取代它(2026-07-04-prune-dead-core-spine-api)。proposed/里,说明这条已被写下 —— 那么"补证据 / 补一个使用方 / 补一个失败案例"与"再提一遍"是两种不同的贡献。边界
rejected/的笔记在理由不再能阻止错误时会被删除。Status:行做出来的;抽取若有错,责任在我们,指出来我们就更正。声明:本次实测与统计由我针对公开仓库完成;根因追查与文稿撰写由 AI 辅助;核验与发布由我本人负责。我没有工程背景 —— 若任何技术表述有误,请直接指出,我会对照工具链重新核实并更正。
本报告由 OfferKuai(Offer快)团队提交 —— 创始人:Zhaofeng(Yaming)。官网:https://www.offerkuai.com/ | 联系:contact@offerkuai.com
All reactions